CN1996287A - 一种在网页中嵌入命令码的分布式web系统 - Google Patents
一种在网页中嵌入命令码的分布式web系统 Download PDFInfo
- Publication number
- CN1996287A CN1996287A CNA2006101249159A CN200610124915A CN1996287A CN 1996287 A CN1996287 A CN 1996287A CN A2006101249159 A CNA2006101249159 A CN A2006101249159A CN 200610124915 A CN200610124915 A CN 200610124915A CN 1996287 A CN1996287 A CN 1996287A
- Authority
- CN
- China
- Prior art keywords
- command code
- webpage
- parameter
- weblication
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种在网页中嵌入命令码的分布式web系统,定义了一种新的动态网页格式,网页中需要用程序在服务器端执行的地方全部嵌入目标程序代码定位参数块,在其他进程中实现该参数块所定位的功能,在服务器端通过该参数块可以找到并执行相应进程中的目标代码,再用目标代码的执行结果替换掉原嵌入参数块,最后,不仅能完全达到在网页中嵌入动态网页语言脚本的效果,而且是一种自然的分布式体系结构,更利于进行分布式处理,web应用程序开发者不需要学习专用的动态网页程序语言,学习简单,功能强大,扩充方便,性能优良,在通用计算机系统及嵌入式系统中均可适用。
Description
技术领域
本发明涉及一种在网页中嵌入命令码的分布式web系统,尤其涉及可广泛用于通用计算机及各类嵌入式设备中的动态网页的分布式处理技术。
背景技术
Web服务器上的网页分动态网页与静态网页两种,静态网页的扩展名通常为html或htm,当浏览器向web服务器发出静态网页请求时,web服务器直接读出html或htm文件,发给浏览器,但不对该文件作出任何处理。
对于动态网页,web服务器必须先作一些处理,再把处理结果发给浏览器,具体的处理方法分成四大类:
第一类是象asp,php等,在动态网页中嵌入asp,php脚本,当web服务器收到来自浏览器的请求后,先在服务器中解释执行asp,php脚本,再把执行结果与网页文件的其他部分组合起来,发给浏览器。
第二类是象jsp等,在动态网页中嵌入jsp脚本,当web服务器首次收到请求时,把jsp编译成java servlet字节代码,再在java虚拟机环境中解释执行,当web服务器第二次收到同一jsp请求时,直接在java虚拟机中解释执行iava servlet的字节代码,把执行的结果返回给浏览器。
第三类是象asp.net等,在动态网页中嵌入vb.net,vc++.net,c#等脚本,网页文件后缀文件名为aspx,以后,当web服务器首次收到请求时,clr会把aspx源代码编译成msil,(中间语言)代码,然后再进一步编译执行msil代码,得到标准html的结果,返回给浏览器,当web服务器第二次收到同一请求时,直接编译执行msil代码,同样得到标准html结果返回给浏览器。
第四类是象cgi,isapi等,该方法是将html超文本嵌入到C或C++中,对于CGI,先把C工程编译成可执行文件,对于isapi,先把C++编译成dll文件,Web服务器收到请求后,直接执行机器码,生成标准html文档,返回给浏览器。该类方法还有一些变种,如CSP,是先把C源代码嵌入到html文档之中,再用工具把这种混合文档转换成标准的CGI工程,再用C编译器编译成可执行文件,因此,与CGI本质上是一样的,不过,CSP在形式上与前三类方法较类似,把客户端代码与服务器端代码放在一起,并且是位于同一个网页上,与纯CGI相比,在使用的方便性上有提高。
上述四类方法有一个最显然的共同缺点是html、客户端javasrcipt代码与在服务器端执行的脚本代码混在一起,尽管asp.net在设计上是把代码与界面分开,但是在动态网页中仍然是把html、客户端javasrcipt代码与服务器端执行的代码放在一个文档中,这样易引起设计人员思想混乱,管理不便,维护困难。
第一、二、三类方法有三个共同缺点,第一个共同缺点是web服务器执行的不是机器码,而是一种脚本语言或中间代码,web服务器每次接收请求都要经历一个额外的翻译过程,因此,执行效率一定不是最高的,而且在开发能力上还有诸多限制。第二个共同缺点是开发者必额外掌一种或多种只能在一种系统上使用的性能相对较差的专用的动态网页程序语言,而不是使用通用的高效的标准的程序设计语言,如标准C++等,这极大地浪费了开发者的时间和精力,尽管asp.net提供了多种语言选择,但这些语言在动态网页中都只能在托管状态下编程,也是属于专用的。第三个共同缺点是,这三类方法主要用于通用计算机上,对于嵌入式设备,由于资源受限,难以移植使用,如果用某些相应的简化版,受其技术方案的限制,仍然难以在资源的节约方面达到最佳效果。
第四类方法虽然执行的是机器码,并且用的是通用语言标准C或C++,但是该方法把html与C混在一起,并且还是把html混到c中,很不直观,还要求开发者同时熟悉html及c++,开发及维护都很困难。CGI还有开销和效率方面的问题,CGI对每一个请求,都要产生一个进程,极大地影响了效率,当进程多到一定数量后,服务器的性能显著下降,ISAPI利用DLL技术,以线程代替进程,提高了性能和速度,但是isapi只能用在微软的操作系统之中,且开发步骤繁琐,由于ISAPI的DLL是被加载到web服务器的进程空间,如果应用程序编写不当,易导致服务器崩溃,另外,CGI与ISAPI都不是一种现成的分布式体系结构,如果想开发出高层次的分布式应用系统,对开发者的要求较高。正是由于这些问题,实际上,第四类方法的用户比前三类方法的用户少得多。但是,对于嵌入式设备中的web服务器,如果要提供对动态网页的支持,由于没有其他的更好的选择,尽管存在上述诸多缺点,但目前普遍用的还是CGI,
综上所述,目前在web系统动态网页的处理方面还没有一种技术方案能同时解决下述所有问题:
1不要求开发者学习并使用一种专用的程序设计语言。
2 html、客户端javascript代码与在服务器端执行的代码完全分开。
3是一种自然的分布式体系结构,并且对开发者的要求不高。
4对动态脚本较多较大的大型动态网页能自然而又简单地分布到无数台机器上去同时处理。
5在服务器端直接执行机器码,但又不必每个请求都在web服务器中启动一个进程,并且适用于不同的操作系统平台,甚至包括嵌入式操作系统。
6开发潜力无限,处理能力从底层到高层都可以完成。
7对硬件设备要求不高,从而在通用计算机系统及各类嵌入式设备均普遍适用。
发明内容
本发明的目的就是要构造出一种在网页中嵌入命令码的分布式web系统,在动态网页的处理方面必须能同时解决下述所有问题:
问题1不要求开发者学习并使用一种专用的程序设计语言。
问题2 html、客户端javascript代码与在服务器端执行的代码完全分开。
问题3是一种自然的分布式体系结构,并且对开发者的要求不高。
问题4对动态脚本较多较大的大型动态网页能自然而又简单地分布到无数台机器上去同时处理。
问题5在服务器端直接执行机器码,但又不必每个请求都在web服务器中启动一个进程,并且适用于不同的操作系统平台,甚至包括嵌入式操作系统。
问题6开发潜力无限,处理能力从底层到高层都可以完成。
问题7对硬件设备要求不高,从而在通用计算机系统及各类嵌入式设备均普遍适用。
本发明的技术方案:本发明的在网页中嵌入命令码的分布式web系统,包括第一层平台层,第二层应用层,平台层的核心模块是命令码处理引擎模块及应用层接口模块,应用层就是web应用程序,web应用程序在平台层提供的应用层接口的基础上创建,该系统的实现要经历如下步骤:
1)定义一种新的动态网页格式,网页中需要用程序在服务器端执行的地方全部嵌入如下形式的参数块:
开始标记一个或多个目标程序代码定位参数结束标记;
2)创建若干个web应用程序,具体实现上述嵌入参数块所定位的目标程序的功能,这些web应用程序可以分布在一台或多台设备上,实现分布式处理;
3)平台层的命令码处理引擎取出动态网页中的各嵌入参数块并与浏览器请求参数合并,然后发往相应嵌入参数块所定位的web应用程序;
4)web应用程序执行该嵌入参数块所定位的目标程序代码;
5)命令码处理引擎回收web应用程序的执行结果;
6)命令码处理引擎用第5)步所回收的结果替换掉第1)步所定义的动态网页中的嵌入参数块,从而使该动态网页变成浏览器能识别的标准html文档。
所述的在网页中嵌入命令码的分布式web系统,其步骤1)中的参数块的内容包括下述任何一种:
第一种:<%进程号命令码%>,
第二种:<%进程号模块号命令码%>,
第三种:<%进程号任务号命令码%>,
第四种:<%命令码%>,
第五种:<%模块号命令码%>,
第六种:<%任务号命令码%>,
第七种:<%(参数名=参数值)+%>,
其中,第七种形式中的”+”号表示前面括号中的内容可以出现一次或多次,参数的具体含义与前六种形式相同,第四、五、六这三种形式应用于单进程的web系统,其中仍然隐含有进程号,只不过进程号是固定的,不需要在参数块中表现出来;进程号具体是指为每个web应用程序人为定义的一个全局标识符,通过这个标识符可以全局定位一个具体的进程,命令码是指web应用程序开发者为每个进程、模块或任务中的每个功能人为定义的一个功能编号,通过这个功能编号,可以完全精确定位出在进程内部、模块内部、任务内部相应的功能代码的最终位置,从而可以触发执行该位置的代码;模块号是指相应进程内部各模块的标识号,任务号是指相应进程内部各任务的标识号。
所述的在网页中嵌入命令码的分布式web系统,其嵌入参数块中的目标程序代码定位参数的进程号、模块号、任务号、命令码可以是具体的数字,也可以是字符串,嵌入参数块中的各参数可以直接给出常量,也可用变量表示,如果用变量表示,则在请求该网页时,必须在尾部附上这些变量的具体值。
所述的在网页中嵌入命令码的分布式web系统,步骤2)中的设备包括通用计算机和嵌入式设备。
所述的在网页中嵌入命令码的分布式web系统,当web服务器接收到从浏览器发来的动态网页的请求后,就转发给平台层的命令码处理引擎进行处理,从而触发步骤3)的执行。
所述的在网页中嵌入命令码的分布式web系统,经过步骤6)的处理之后,平台层的命令码处理引擎把处理后的标准html文档提交给web服务器,再由web服务器返回给浏览器。
所述的在网页中嵌入命令码的分布式web系统,应用层接口主要封装了底层通信代码及其他可供web应用程序调用的api类库。
所述的在网页中嵌入命令码的分布式web系统,参数块中的每个命令码的功能都要在对应的进程号所标识的web应用程序内实现,这个web应用程序可以由任何一种程序语言实现,但是,该程序语言必须能调用平台层提供的应用层接口的api类库。实现web应用程序的主要语言选C++。
本发明的优点:本发明同时解决了上述7个问题:
本发明的平台层只需由个别高水平的平台开发人员一次性完成即可,是固定的,并且最终用户也是可以购买的,对不同的web应用系统来说,只有应用层是可变的,也就是说,最终的用户只需在平台层接口模块的基础上完成web应用程序的命令码对应的功能即可,多线程相关的复杂问题是在平台层中考虑的,web应用系统的开发人员一般不需要考虑这些的问题,因此,对web应用程序开发人员的要求不高,只要掌握了标准的C++就能应付自如,而C++是一种通的程序设计语言,并不是专用的动态网页语言,问题1便自然解决了。当然,所有方法都要掌握一点html或xml,这是web应用系统的基础知识。
由于需要在服务器端执行的代码,在网页中都用<%进程号命令码%>代替了,因此在网页中没有任何服务器端执行代码,这些代码完全集成到web应用程序的C++代码中去了,html、客户端javascript代码与在服务器端执行的代码是完全分开的,因此,问题2得到解决。
由于只需对动态网页要实现的功能进行任意分类,不同的类别放到不同的应用进程中去完成,并且放到不同的计算上去运行,这样就能构成任意规模的分布式处理系统,因此这是一种自然的分布式体系结构,并且在这方面对开发者的要求也不高。问题3便得到解决。
对于动态脚本较多较大的动态网页,可以在其中嵌入较多的参数块,通过嵌入参数块中的命令码将各动态脚本要执行的功能分散到数台计算机的相应进程中去同时处理,因此,问题4得到解决。
由于在服务器端所用的开发工具主要为C++,最后当然能直接执行机器码,web应用进程可以看成是命令服务器,只需启动一次,当然不会象CGI那样每个请求都启动一个进程,由于在各操作系统平台上都实现了标准C++,只要你所使用的C++是标准的,就可以在不同的操作系统平台上重新编译便可以使用,或者使用一些流行的跨平台c++程序库,象wxWidgets,Qt,ACE,STL等,因此,问题5得到解决。
由于C++本身就有无限的开发潜力,如不考虑跨平台的问题,可以用任何平台的C++,如果您的web应用系统将来只在windows操作系统中使用,你可以选用得最广的visual c++,其中有大量现成的资源可供使用,每一种操作系统平台上都有C++开发工具,也有大量的现成资源可供使用。标准C++本身在通用计算机及嵌入式设备上都适用的,其处理能力自然可以从底层到高层均可以完成,因此,问题6、问题7得到解决。
除了能同时解决上述七个问题外,本发明还有一个较大的优点是:web应用程序的扩充及功能的分布调整简单,如果想扩充web应用程序的功能,只需添加一些命令,再实现这些命令,然后在动态网页中嵌入相应的定位参数块即可,如果想让某些功能转移到其他的计算机上去执行,只需把该命令转移到该计算机负责运行的进程上去,再修改相应嵌入块上的进程号即可,也可以不移动命令,也就是说不修改web应用程,只需把该命令所在的进程拷一份到其他的计算机上去执行,分配一个新的进程号,然后修改一下动态网页中相应嵌入参数块中的进程号即可。
本发明的最重要特征是,在动态网页中没有嵌入任何动态网页语言,通常仅嵌入应用进程号及命令码,但是处理能力和开发大型项目的方便性却强大得多,并且还是一种天然的分布式体系,而现有的动态网页处理技术都要嵌入某种语言到网页中,或把html嵌入到C中,在web服务器上执行,网页设计人员还要学会一种专用的动态网页语言。
也就是说,只要在网页中嵌入了<%进程号命令码%>,并用命令码处理引擎将这些命令码对应的功能分布到各相应的web应用进程中去处理,就决定了本发明所要解决的7个问题都能简明解决。
本发明可广泛用于需要web服务器的地方,从普通计算机到嵌入式设备中均可使用。
附图说明
图1本发明技术方案总体流程图。
图2本发明的模块层次图。
图3本发明的实施例相关模块分布图。
图4本发明的实施例流程图。
图5本发明的命码处理引擎流程图。
具体实施方式
下面的步骤与图1是一一对应的:
步骤1:本发明首先要定义一种新的动态网页格式,网页中需要用程序在服务器端执行的地方全部嵌入如下形式的参数块,而不需要插入相应的动态网页语言程序:
开始标记一个或多个目标程序代码定位参数结束标记
其中,“开始标记”通常为:<%,“结束标记”通常为:%>,“一个或多个目标程序代码定位参数”是指这样一些参数:进程号,模块号,设备号,命令码,子命令码,任务号,或其他自定义参数等,通过这些参数能完全定位出目标代码所在的详细具体位置,从而加以执行,但是,这里列举的这些参数一般不需要全部用,最常见的有如下七种具体形式:
第一种:<%进程号命令码%>,
第二种:<%进程号模块号命令码%>,
第三种:<%进程号任务号命令码%>,
第四种:<%命令码%>,
第五种:<%模块号命令码%>,
第六种:<%任务号命令码%>,
第七种:<%(参数名=参数值)+%>。
在这里,进程号具体是指为每个web应用程序人为定义的一个全局标识符,通过这个标识符可以全局定位一个具体的进程,命令码是指web应用程序开发者为每个进程、模块或任务中的每个功能人为定义的一个功能编号,通过这个功能编号,可以完全精确定位出在进程内部、模块内部、任务内部相应的功能代码的最终位置,从而可以触发执行该位置的代码。模块号是指相应进程内部各模块的标识号,任务号是指相应进程内部各任务的标识号。具体实现时,嵌入参数块中的进程号、模块号、任务号、命令码可以是具体的数字,也可以是字符串,嵌入参数块中的各参数可以直接给出常量,也可用变量表示,如果用变量表示,则在请求该网页时,必须在尾部附上这些变量的具体值。具体实现方法,取决于平台设计时约定的协议。
第七种形式中的”+”号表示前面括号中的内容可以出现一次或多次,第七种形式是最通用的方法,不仅包括了前面的六种形式,还可以添加其他可能需要的参数。
一般来说,第一种形式不仅表示法简单、固定,而且用于完成本发明的功能也足够了,在具体的应用环境中,总可以找出一种办法,用第一种形式表示出后面各种形式的具体含义,原理就是字或字节可以任意合并或分开,其中,第四、五、六这三种形式完全分别为第一、二、三这三种形式的特例,用于单进程系统,如果某类设备上的web应用在需求分析时可以完全确定今后不会进行分布式处理,web应用系统只需在一个进程中处理,这时可以采用第四、五、六这三种形式中的一种,因为,在此种设备中,命令处理进程只有一个,是固定的,通过其他定位号就可以完全定位出目标代码所在的位置了,具体选用哪些参数可以根据需求环境和平台的设计策略随意确定。
由于<%进程号命令码%>是最基本、最常用、也是足够满足我们的需求的方式,本说明后面专门采用这种方式进行相关说明。
步骤2:为步骤1中的所有嵌入参数块中的所有不同的进程号各创建一个web应用程序,注意,该web应用程序是在应用层接口的基础上创建并完成的,而应用层接口是本发明必须事先设计的一个平台模块,应用层接口主要封装了底层通信代码及其他可供web应用程序调用的api类库,使最终的web应用系统的开发人员除了实现命令码对应的功能外,尽量不需要作其他工作,关于系统的模块分层详见图2。对于一个web应用系统来说,可能有大量的动态网页,每个动态网页中的嵌入参数块都可以有相同或不同的进程号,将来准备在同一台机器上运行的功能一般都集中在一个进程中,再用命令码区分该进程中的各项功能,最终发行时,只需简单地将各web应用程序拷入到不同的机器中并加一些配置文件就可以实现分布式处理。
步骤3:实现步骤2中所有web应用程序中的各命令码所对应的具体功能。命令码的执行结果一般来说最终要格式化成html或xml片段,也可以是一些数字,或一段文本,还可以是一个完整的文件,当要在某设备中下载一个文件时,该命令的执行结果就是所读出的整个文件。
步骤4:启动浏览器、web服务器、命令码处理引擎、web应用程序。其中,命令码处理引擎也是本方案设计的一个平台模块,该模块与web服务器密切相关,其具体工作流程如图5所示:
当Web服务器收到一个网页的请求时,如果发现是本发明所定义的动态网页,就转发给命令码处理引擎,命令码处理引擎首先提取该网页中的所有进程号及对应的命令码,然后,将该命令码及请求参数发给其进程号所对应的web应用程序进行处理,并回收执行结果,当一个网页中的所有命令全部处理完毕后,命令码处理引擎就用回收的命令执行结果替换原动态网页中的<%进程号命令码%>,从而从使原动态网页变成成标准html文档,再通过web服务器返回给浏览器。为了提高命令码处理引擎查找web应用程序的速度,web应用程序在启动时可以与命令码处理引擎建立连接,并以进程号为关键字登记连接信息。
步骤5:用户在浏览器的地址栏中输入网页详细地址,这同其他常规方法是一样的。
步骤6:浏览器将该请求提交给web服务器。
步骤7:web服务器如果发现为静态网页,就直接读出该网页的内容,然后返回给浏览器,如果为不合法输入,在这里也向浏览器返回一个提示,整个过程结束。
步骤8:web服务器如果发现为本发明所定义的动态网页,则将请求进一步转发给命令码处理引擎。
步骤9:命令码处理引擎读取该动态网页。
步骤10:命令码处理引擎提取该动态网页中的所有进程号及命令码。
步骤11:命令码处理引擎将提取的所有命令码与浏览器请求参数合并,然后分别
发给相应进程号的web应用程序。
步骤12:web应用程序执行与所接收的命令码对应的程序段。
步骤13:web应用程根据动态网页中所需的内容需求,确定是否要将执行的结果作某种格式化,如果需要格式化,就在这一步完成。
步骤14:web应用程序再将最终的命令执行结果发给命令码处理引擎。
步骤15:命令码处理引擎用回收的所有命令的执行结果替换原动态网页中对应命令的嵌入参数块,从而使原动态网页中的内容变成标准的html文档。
步骤16:命令码处理引擎将标准的html文档提交给web服务器。
步骤17:web服务器将该标准html文档返回给浏览器。
本发明的核心就是用<%进程号命令码%>代替传统方式的动态网页语言,再通过一个命令码处理引擎将这些命令码对应的功能分布到一台或数台计算机上的web应用程序中去执,而web应用程序可以用C++或其他通用语言开发,这取决于平台是否提供了相应的接口,一般都是要提供C++接口,这样开发起来可以无所不能。
如图2所示,本发明在实施时从软件的角度要分成两层实现,第一层为平台层,第二层为应用层。平台层根据其他需求或通信子系统的设计策略的不同可以有较多的模块可供选择,本说明书不可能介绍所有情况,只介绍必不可少的模块,其中,命令码处理引擎模块和应用层接口模块是平台层必不可少的两大模块,命令码处理引擎模块在前面的步骤4中已经作了介绍,应用层接口模块在前面的步骤2中也进行了简单介绍,应用层接口主要封装了底层通信代码及其他可供web应用程序调用的api类库。利用这个应用层接口,最终的web应用系统的开发人员除了实现命令码对应的功能外,可以尽量不需要作其他工作。Web应用程序可以分布在一台或多台通用计算机或嵌入式设备上,从而简单实现分布式处理。
实施例:
下面结合图4进一步举例说明本发明所提出的技术方案是如何具体实施的。假设用户要通过浏览器从服务器端的数据库中读两张表,要求这两张表组合在一个页面中返回给用户,但是,在服务器端,这两张表又不是放在web服务器中,而是放在两台分别命名为dev1,dev2的设备中,这两台不同的设备可以是两台通用计算机,也可以是两台不同的嵌入式设备,或者是它们的混合,如果采用本发明所提出的技术方案,该问题可通过如下步骤去解决,相应的实施流程图如图4所示,图4与图1是完一致的,只是为了说明的需要,在局部一方面进行了细化,另一方面又进行了一定的归并:
步骤1首先按本发明的要求写一段动态网页代码置于web服务器的网页发布目录中,假设文件名为:test.rcsp,该文件的内容如下:
<html>
<head><title>具体实施例</title></head>
<body>
<table width=″200″border=″1″>
<%110%>
</table>
<table width=″200″border=″1″>
<%220%>
</table>
</body>
</html>
在该test.rcsp文件中,<%110%>及<%220%>为根据本发明的格式要求所插入的参数块,分别表示要将10号命令发给1号进程,将20号命令发给2号进程,最后要用命令的执行结果替代上面的插入块,tesp.rcsp文件的其余部分为标准的html文档。由于该网页中有1和2两个进程号,所以后面要建两个对应的web应用程序工程
步骤2用C++新建一个web应用程序工程p1,p1的进程号为1,该进程的功能是接收并处理从命令码处理引擎发来的命令码10。10号命令的功能是:先从相应的表中读出记录,然后组织成html片段,再返回给命令码处理引擎。假设该表有两个字段,表中有两条记录,第一条记录是1,1,第二条记录是2,2,这时的html片段如下:
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
步骤3用C++新建一个web应用程序工程p2,p2的进程号为2,该进程的功能是接收并处理从命令码处理引擎发来的命令码20,20号命令的功能是:先从相应的表中读出记录,然后组织成html片段,再返回给命令码处理引擎,假设该表有两个字段,表中有两条记录,第一条记录是3,3,第二条记录是4,4,这时的html片段如下:
<tr>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
</tr>
注意:由于test.rcsp中有两个进程1和2,所以要建两个工程,如果10号及20号命令对应的进程号相同,那么就只需创建一个工程,在同一个工程中实现这两个命令。
步骤4启动浏览器、web服务器、命令码处理引擎,将p1拷入dev1中,然后启动,将p2拷入dev2中,然后启动,至此,如果网络连接正常,一套完整的系统已经达成。
步骤5在浏览器的地址栏输入:http://地址/test.rcsp
步骤6浏览器将tesp.rcsp请求发给web服务器。
步骤7 web服务器发现是动态网页,再转发给命令处理引擎,命令码处理引擎首先提取进程号及命令码。
步骤8命令处理引擎将10号命令发给1号进程,将20号命令发给2号进程.
步骤9 1号进程及2号进程分别执行命令10和20后,将结果格式化后返回给命令码处理引擎。具体的返回结果样例在步骤2和步骤3中已经进行了说明,本例给出的是html片段,还可以是其他任意所需要的形式。
步骤10命令码处理引擎用从1、2号进程返回的结果分别替换test.rcsp文件中的<%110%>及<%220%>,最后形成的标准html文档如下:
<html>
<head>
<title>具体实施例</title>
</head>
<body>
<table width=″200″border=″1″>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
</table>
<table width=″200″border=″1″>
<tr>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
</tr>
</table>
</bodv>
</html>
步骤11将从步骤10产生的标准html文档返回给浏览器。
从上述过程可以看出,动态网页文档tesp.rcsp非常简明,其中没有任何服务器端脚本语言,也不象CGI或ISAPI一样,把整个html超文本全部嵌入到c++工程中,在这里,html与C++动态处理程序是完全分开的,网页界面设计人员不仅不需要懂得得C++,而且在动态网页上根本就看不到任何C++代码,而C++开发人员只需懂得一些简单的html或xml标记即可。
从上述过程还可以看出,用两台设备共同处理同一网页,只需简单创建两个C++工程,然后拷到两台不同的设备dev1、dev2中去运行即可,如图3所示,里面的其他细节,在平台中自动完成,由此可见,用该方案,完成一套分布式系统是一件很简单的事情。
前面提到的本发明能同时解决的七大问题基本上是由这里明显看出的几大特点决定的:动态网页语言用通用C++,C++与html超文本完全分离,构造分布式系统只需简单添加工程。
还有一点需要指出的是,如果不想进行分布式处理,要在一台机器上处理,只需将p1,p2简单地放到一台设备,或放到web服务器上运行即可。如果某类设备在需求分析时可以完全确定今后不会进行分布式处理,在针对该平台设计时,只需考虑在网页中仅需嵌入<%命令码%>,这样就可以满足需求,因为,在此种设备中,命令处理进程只有一个,是固定的。
另外,本例中的步骤9返回的html片段,实质上根据具体的应用还可以是其他形式,如xml数据,文本数据,甚至是整个文件等,但实现原理是类似的。
申请人使用本发明开发了一套web系统平台,这就是本发明中所说的第一层平台层,然后,在该平台层的基础上完成了一套OA系统,能很轻易地实现非常强大的功能,并且功能扩充非常简单,扩充时在服务器端只需添加一些命令,再实现这些命令即可,经试验证明,效果非常好,实现了本发明的目的。
本发明的核心过程就是用<%进程号命令码%>代替传统方式的动态网页语言,再通过一个命令码处理引擎将这些命令码对应的功能分布到一台或数台计算机上的web应用程序中去执行,最后回收并处理命令执行结果,形成标准的html文档。
Claims (8)
1.一种在网页中嵌入命令码的分布式web系统,包括第一层平台层,第二层应用层,平台层的核心模块是命令码处理引擎模块及应用层接口模块,应用层就是web应用程序,web应用程序在平台层提供的应用层接口的基础上创建,该系统的实现要经历如下步骤:
1)定义一种新的动态网页格式,网页中需要用程序在服务器端执行的地方全部嵌入如下形式的参数块:
开始标记一个或多个目标程序代码定位参数结束标记;
2)创建若干个web应用程序,具体实现上述嵌入参数块所定位的目标程序的功能,这些web应用程序可以分布在一台或多台设备上,实现分布式处理;
3)平台层的命令码处理引擎取出动态网页中的各嵌入参数块并与浏览器请求参数合并,然后发往相应嵌入参数块所定位的web应用程序;
4)web应用程序执行该嵌入参数块所定位的目标程序代码;
5)命令码处理引擎回收web应用程序的执行结果;
6)命令码处理引擎用第5)步所回收的结果替换掉第1)步所定义的动态网页中的嵌入参数块,从而使该动态网页变成浏览器能识别的标准html文档。
2.根据权利要求1所述的在网页中嵌入命令码的分布式web系统,其特征在于:步骤1)中的参数块的内容包括下述任何一种:
第一种:<%进程号命令码%>,
第二种:<%进程号模块号命令码%>,
第三种:<%进程号任务号命令码%>,
第四种:<%命令码%>,
第五种:<%模块号命令码%>,
第六种:<%任务号命令码%>,
第七种:<%(参数名=参数值)+%>,
其中,第七种形式中的”+”号表示前面括号中的内容可以出现一次或多次,参数的具体含义与前六种形式相同,第四、五、六这三种形式应用于单进程的web系统,其中仍然隐含有进程号,只不过进程号是固定的,不需要在参数块中表现出来;进程号具体是指为每个web应用程序人为定义的一个全局标识符,通过这个标识符可以全局定位一个具体的进程,命令码是指web应用程序开发者为每个进程、模块或任务中的每个功能人为定义的一个功能编号,通过这个功能编号,可以完全精确定位出在进程内部、模块内部、任务内部相应的功能代码的最终位置,从而可以触发执行该位置的代码;模块号是指相应进程内部各模块的标识号,任务号是指相应进程内部各任务的标识号。
3.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于:嵌入参数块中的目标程序代码定位参数的进程号、模块号、任务号、命令码可以是具体的数字,也可以是字符串,嵌入参数块中的各参数可以直接给出常量,也可用变量表示,如果用变量表示,则在请求该网页时,必须在尾部附上这些变量的具体值。
4.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于:步骤2)中的设备包括通用计算机和嵌入式设备。
5.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于: 当web服务器接收到从浏览器发来的动态网页的请求后,就转发给平台层的命令码处理引擎进行处理,从而触发步骤3)的执行。
6.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于:经过步骤6)的处理之后,平台层的命令码处理引擎把处理后的标准html文档提交给web服务器,再由web服务器返回给浏览器。
7.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于:应用层接口主要封装了底层通信代码及其他可供web应用程序调用的api类库。
8.根据权利要求1或2所述的在网页中嵌入命令码的分布式web系统,其特征在于:嵌入参数块中的每个命令码的功能都要在对应的进程号所标识的web应用程序内实现,这个web应用程序可以由任何一种程序语言实现,但是,该程序语言必须能调用平台层提供的应用层接口的api类库,实现web应用程序的主要语言选C++。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101249159A CN1996287A (zh) | 2006-11-02 | 2006-11-02 | 一种在网页中嵌入命令码的分布式web系统 |
PCT/CN2007/070893 WO2008052460A1 (fr) | 2006-11-02 | 2007-10-15 | Système web de distribution pourvu de codes de commande intégrés dans une page web |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101249159A CN1996287A (zh) | 2006-11-02 | 2006-11-02 | 一种在网页中嵌入命令码的分布式web系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1996287A true CN1996287A (zh) | 2007-07-11 |
Family
ID=38251382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101249159A Pending CN1996287A (zh) | 2006-11-02 | 2006-11-02 | 一种在网页中嵌入命令码的分布式web系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1996287A (zh) |
WO (1) | WO2008052460A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023856A (zh) * | 2010-10-21 | 2011-04-20 | 杭州万格网络科技有限公司 | 根据用户的需求格式化输出及操作伺服端业务数据的方法 |
CN102141991A (zh) * | 2010-02-02 | 2011-08-03 | 钟巨航 | 用于web服务器的方法和系统 |
CN108023966A (zh) * | 2017-12-19 | 2018-05-11 | 北京小度信息科技有限公司 | 通用网关接口请求处理方法、设备和存储介质 |
CN113901411A (zh) * | 2021-10-15 | 2022-01-07 | 四川新网银行股份有限公司 | 一种web登录前置式安全加固系统、加固方法及登录方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110457616B (zh) * | 2019-07-24 | 2024-02-13 | 万达信息股份有限公司 | 一种异构cpu体系下网页一致性展示的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058671B2 (en) * | 2001-09-13 | 2006-06-06 | International Business Machines Corporation | System combining information with view templates generated by compiler in a server for generating view structure for client computer |
EP1662405A1 (en) * | 2004-11-30 | 2006-05-31 | Alcatel | Method of displaying data on a client computer |
CN100383790C (zh) * | 2005-09-15 | 2008-04-23 | 杭州华三通信技术有限公司 | Http网页动态输出的方法和系统 |
-
2006
- 2006-11-02 CN CNA2006101249159A patent/CN1996287A/zh active Pending
-
2007
- 2007-10-15 WO PCT/CN2007/070893 patent/WO2008052460A1/zh active Application Filing
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141991A (zh) * | 2010-02-02 | 2011-08-03 | 钟巨航 | 用于web服务器的方法和系统 |
CN102023856A (zh) * | 2010-10-21 | 2011-04-20 | 杭州万格网络科技有限公司 | 根据用户的需求格式化输出及操作伺服端业务数据的方法 |
CN108023966A (zh) * | 2017-12-19 | 2018-05-11 | 北京小度信息科技有限公司 | 通用网关接口请求处理方法、设备和存储介质 |
CN108023966B (zh) * | 2017-12-19 | 2020-12-04 | 北京星选科技有限公司 | 通用网关接口请求处理方法、设备和存储介质 |
CN113901411A (zh) * | 2021-10-15 | 2022-01-07 | 四川新网银行股份有限公司 | 一种web登录前置式安全加固系统、加固方法及登录方法 |
CN113901411B (zh) * | 2021-10-15 | 2024-06-11 | 四川新网银行股份有限公司 | 一种web登录前置式安全加固系统、加固方法及登录方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2008052460A1 (fr) | 2008-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105100191B (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
Perchat et al. | Component based framework to create mobile cross-platform applications | |
CN105117210A (zh) | 一种面向wscn的图形化编程系统 | |
CN102257474B (zh) | 多个运行时容器共享的值解析 | |
CN106649794A (zh) | 图片合成方法及装置 | |
CN1996287A (zh) | 一种在网页中嵌入命令码的分布式web系统 | |
CN108399086A (zh) | 一种微件管理方法、服务器和计算机可读存储介质 | |
Gassner | Flash Builder 4 and Flex 4 Bible | |
CN102118439A (zh) | 一种文档内容的自动处理方法、自动处理装置及编辑器 | |
Gray et al. | Object-based programming in Fortran 90 | |
Fujima | Building a meme media platform with a JavaScript MVC framework and HTML5 | |
Taivalsaari et al. | Web User Interface Implementation Technologies: An Underview. | |
CN114721647B (zh) | 一种基于无代码应用开发的面向对象编程方法 | |
Snider | Mastering Xamarin. Forms | |
Gaffar et al. | HCI pattern semantics in XML: a pragmatic approach | |
Falzone et al. | Intelligent code generation for model driven web development | |
CN101681293A (zh) | 在事务存储器系统中高效地定位事务代码块 | |
Song et al. | SM@ RT: representing run-time system data as MOF-compliant models | |
Vegas Niño et al. | Using the Epanet Toolkit v2. 00.12 with different programming environment | |
Luong | Web application development with Reactjs framework; Case: Web application for an association | |
Wingo et al. | Modular and spatially explicit: A novel approach to system dynamics | |
Trivedi | User interface implementation of environmental data integration system with React | |
Jonna et al. | Angular UI Development with PrimeNG | |
Avery et al. | Windows developer power tools | |
JP2010186378A (ja) | ソフトウェアのバージョン間の差分表示システム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20070711 |