CN102455903B - 一种用户应用界面的生成方法 - Google Patents
一种用户应用界面的生成方法 Download PDFInfo
- Publication number
- CN102455903B CN102455903B CN201010525417.1A CN201010525417A CN102455903B CN 102455903 B CN102455903 B CN 102455903B CN 201010525417 A CN201010525417 A CN 201010525417A CN 102455903 B CN102455903 B CN 102455903B
- Authority
- CN
- China
- Prior art keywords
- template
- bus
- specific
- file
- pond
- 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.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种用户应用界面的生成方法,该方法包括:若模板对象池判断不存在特定模板文件的数据对象,模板对象池向模板文件池发送获取特定模板文件的请求;模板文件池向模板总线返回特定模板文件;模板解析模块解析并编译特定模板文件,以生成二进制JAVA模板对象,并向模板总线返回JAVA模板对象;模板总线将JAVA模板对象放入JVM中的模板对象池中,以生成特定模板文件的数据对象;模板总线将编译完成的模板文件的数据对象与业务流程中产生的数据对象组合成HTML数据,并将所述HTML数据返回给客户端。实施本发明的技术方案,可大大减小***的负载,提高***的运行效率。
Description
技术领域
本发明涉及软件开发技术,更具体地说,涉及一种用户应用界面的生成方法。
背景技术
软件开发技术已经发展了几十年,随着软件应用越来越广泛,功能越来越复杂,规模越来越庞大,逐个界面定制开发的传统开发方式已经不能满足需求,主要存在以下问题:
1.软件规模越来越庞大,导致开发工作量成倍增长,不可控制;
2.软件界面风格很难做到统一;
3.如果需要统一改***件界面,需要每个界面重新修改,代价很大。
然而,模板技术能够很好的实现美工和程序的分离,同时方便程序员和美工人员的分工合作,现在业界已经有多种模板技术,例如smarty、freemaker、velocity等。其中,smarty是一个使用PHP写出来的模板引擎,它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。
目前的模板引擎的模板解析都是解释执行的,即在程序运行时,读取模板文件,并解析模板中的内容,最后输出最终结果。如图1所示,首先用户通过客户端浏览器发送客户请求业务,服务端的业务处理模块处理业务数据,并将处理后的业务数据发送至模板总线,模板总线向模板文件池发送获取特定模板文件的请求,其中,模板文件池存储有多个模板文件,特定模板文件是与客户发送的业务请求相关的模板文件,然后模板文件池向模板总线返回特定模板文件,模板总线再将特定模板文件交给模板解析模块进行解析,模板解析模块完成解析后,向模板总线返回解析完成后的特定模板文件的数据对象,模板总线最后将特定模板文件的数据对象组合成最终的HTML数据,并通过客户端浏览器返回到客户端。然而,模板解析模块在解析模板文件时要消耗***很多时间,导致运行效率非常低,如果大规模地动态执行运用模板语言,会造成***性能的严重下降,因此该用户应用界面的生成方法更多地应用在数据内容静态化的场景以及对性能要求不高的应用场景。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述在大规模地动态执行模板语言时运行效率低的缺陷,提供一种用户应用界面的生成方法,在大规模地动态执行模板语言时运行效率高。
本发明解决其技术问题所采用的技术方案是:构造一种用户应用界面的生成方法,包括:
A.业务处理模块接收客户请求业务,处理业务数据,并将处理后的业务数据发送至模板总线;
B.模板总线接收处理后的业务数据,并向模板对象池发送获取特定模板文件的数据对象的请求,所述特定模板文件与所述业务数据相关;
C.模板对象池判断是否存在有特定模板文件的数据对象,若是,则执行步骤D;若否,则执行步骤E;
D.模板对象池向模板总线返回特定模板文件的数据对象,然后执行步骤J;
E.模板对象池向模板文件池发送获取特定模板文件的请求;
F.模板文件池向模板总线返回特定模板文件;
G.模板总线向模板解析模块发送特定模板文件;
H.模板解析模块解析并编译特定模板文件,以生成JAVA模板对象,并向模板总线返回JAVA模板对象;
I.模板总线将编译完成的JAVA模板对象放入JVM中的模板对象池中,以便给后续流程直接调用;
J.模板总线将编译完成的模板文件的数据对象与业务流程中产生的数据对象组合成HTML数据,并将所述HTML数据返回给客户端。
在本发明所述的用户应用界面的生成方法中,所述步骤F包括:
F1.模板文件池判断是否存在有特定模板文件,若是,则执行步骤F2;若否,则执行步骤F3;
F2.向模板总线返回特定模板文件,然后执行步骤G;
F3.向模板总线返回相应的错误代码,模板总线再向客户端返回所述错误代码。
在本发明所述的用户应用界面的生成方法中,在所述步骤I中,模板总线以异步的方法将JAVA模板对象放入JVM中的模板对象池中。
在本发明所述的用户应用界面的生成方法中,在所述步骤I中,模板总线以缓冲和同步的方法将JAVA模板对象放入JVM中的模板对象池中。
实施本发明的技术方案,若在第一次读取某一模板文件时,对其进行解析和编译,以生成对应的JAVA模板对象,然后将该编译完成的JAVA模板对象放入JVM中的模板对象池中;若在非第一次读取该模板文件时,只需从模板对象池中调出相应的模板对象即可,运行的即是JAVA二进制流对象,而不需要对其重新进行解析与编译,因此可大大减小***的负载,提高***的运行效率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是现有技术用户应用界面的生成方法的流程图;
图2A是本发明用户应用界面的生成方法实施例一的部分流程图;
图2B是本发明用户应用界面的生成方法实施例一的部分流程图。
具体实施方式
对于一些需要实时更新的用户应用界面,如股票显示的用户应用界面或者一些带有M_Market业务的用户应用界面,应当说明的是,该有M_Market业务是指服务运营商在3G时代搭建的增值业务平台,这些用户应用界面的所有的请求都是动态的,无法像现有的各大门户网站一样将数据内容静态化,为提高***运行的效率,需要构建一种可编译执行的动态模板语言。
在本发明的用户应用界面的生成方法实施例一中,结合图2A和图2B,应当说明的是,图2A是第一次读取某模板文件时生成户应用界面的方法的流程图,图2B是非第一次读取某模板文件时生成户应用界面的方法的流程图,图2A和图2B中的步骤S100-S103及步骤S110-S111都是相同的,区别只是在第一次读取某模板文件时,需要对上述的模板文件进行解析和编译,而在解析和编译后就存储在了模板对象池中,在下次需要重新读取该模板文件时,只需从模板对象池中调出相应的模板文件的数据对象即可,因此,提高了***的运行效率,下面具体说明本发明的用户应用界面的生成方法,该方法包括:
S100.业务处理模块接收客户请求业务,该客户请求业务可来自客户端浏览器;
S101.业务处理模块处理业务数据;
S102.业务处理模块将处理后的业务数据发送至模板总线;
S 103.模板总线接收处理后的业务数据,并向模板对象池发送获取特定模板文件的数据对象的请求,所述特定模板文件与所述业务数据相关;
S104.若模板对象池判断不存在特定模板文件的数据对象,则向模板文件池发送获取特定模板文件的请求,模板对象池在内存中,然后执行步骤S105;应当说明的是,模板文件如果是非第一次读取,即该页面为非第一次运行、没有进行了改动或变更,则与该页面对应的模板文件已经进行了编译,该模板文件所对应的数据对象已经存储在了模板对象池中(下面将会详细说明);如果该页面的模板文件是第一次读取,即该页面为第一次运行、已经进行了改动或变更,则模板对象池中将不会存在该模板文件的数据对象;
S112.若模板对象池判断存在有特定模板文件的数据对象,则向模板总线返回特定模板文件的数据对象,然后执行步骤S110;
S105.模板文件池向模板总线返回特定模板文件;
S106.模板总线向模板解析模块发送特定模板文件;
S107.模板解析模块解析并编译特定模板文件,以生成JAVA模板对象;
S108.模板解析模块向模板总线返回编译完成的JAVA模板对象;
S109.模板总线将编译完成的JAVA模板对象放入JVM中的模板对象池中,以生成特定模板文件的数据对象,在该步骤中,模板总线可以异步的方法将编译完成的JAVA模板对象放入JVM中的模板对象池中,也可以缓冲和同步的方法将JAVA模板对象放入JVM中的模板对象池中;
S110.模板总线将编译完成的模板文件的数据对象与业务流程中产生的数据对象组合成HTML数据,并将所述HTML数据返回给客户端。
另外,SMARTY原生是为PHP服务的,对于JAVA对象中的值获取本身的语法SMARTY本身并不支持,这里我们专门原创一种语法,用来专门获取JAVA中对象的值。
{$object.count}
其中$object即为java中对应的数据对象名称,count为该对象中的一个参数。
优选地,在上述实施例中的步骤S104和步骤S105之间,还包括:
模板文件池判断是否存在有特定模板文件,若是,则向模板总线返回特定模板文件,然后继续执行步骤S105;若否,则向模板总线返回相应的错误代码,模板总线再向客户端返回所述错误代码,以告知客户所请求的业务的模板文件不存在。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (4)
1.一种用户应用界面的生成方法,其特征在于,包括:
A.业务处理模块接收客户请求业务,处理业务数据,并将处理后的业务数据发送至模板总线;
B.模板总线接收处理后的业务数据,并向模板对象池发送获取特定模板文件的数据对象的请求,所述特定模板文件与所述业务数据相关;
C.模板对象池判断是否存在有特定模板文件的数据对象,若是,则执行步骤D;若否,则执行步骤E;
D.模板对象池向模板总线返回特定模板文件的数据对象,然后执行步骤J;
E.模板对象池向模板文件池发送获取特定模板文件的请求;
F.模板文件池向模板总线返回特定模板文件;
G.模板总线向模板解析模块发送特定模板文件;
H.模板解析模块解析并编译特定模板文件,以生成JAVA模板对象,并向模板总线返回JAVA模板对象;
I.模板总线将JAVA模板对象放入JVM中的模板对象池中,以生成特定模板文件的数据对象;
J.模板总线将编译完成的模板文件的数据对象与业务流程中产生的数据对象组合成HTML数据,并将所述HTML数据返回给客户端。
2.根据权利要求1所述的用户应用界面的生成方法,其特征在于,所述步骤F包括:
F1.模板文件池判断是否存在有特定模板文件,若是,则执行步骤F2;若否,则执行步骤F3;
F2.向模板总线返回特定模板文件,然后执行步骤G;
F3.向模板总线返回相应的错误代码,模板总线再向客户端返回所述错误代码。
3.根据权利要求1或2所述的用户应用界面的生成方法,其特征在于,在所述步骤I中,模板总线以异步的方法将JAVA模板对象放入JVM中的模板对象池中。
4.根据权利要求1或2所述的用户应用界面的生成方法,其特征在于,在所述步骤I中,模板总线以缓冲和同步的方法将JAVA模板对象放入JVM中的模板对象池中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010525417.1A CN102455903B (zh) | 2010-10-29 | 2010-10-29 | 一种用户应用界面的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010525417.1A CN102455903B (zh) | 2010-10-29 | 2010-10-29 | 一种用户应用界面的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455903A CN102455903A (zh) | 2012-05-16 |
CN102455903B true CN102455903B (zh) | 2014-12-10 |
Family
ID=46039122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010525417.1A Expired - Fee Related CN102455903B (zh) | 2010-10-29 | 2010-10-29 | 一种用户应用界面的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455903B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104685470B (zh) * | 2013-06-08 | 2018-11-30 | 苹果公司 | 用于从模板生成用户界面的设备和方法 |
CN103617064A (zh) * | 2013-12-09 | 2014-03-05 | 五八同城信息技术有限公司 | 一种改进的移动客户端产品更新的方法 |
CN105138448B (zh) * | 2014-06-05 | 2018-06-05 | 北京畅游天下网络技术有限公司 | 一种在前端测试页面的方法和装置 |
CN105335341A (zh) * | 2015-09-30 | 2016-02-17 | 北京金山安全软件有限公司 | 一种通过网页远程处理Excel文件的方法及装置 |
CN106569800B (zh) * | 2016-10-17 | 2020-10-23 | 北京小米移动软件有限公司 | 前端界面生成方法及装置 |
CN106528129B (zh) * | 2016-10-27 | 2019-06-21 | 南京南瑞继保电气有限公司 | 一种Web应用界面生成***及方法 |
CN107608672B (zh) * | 2017-08-29 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 一种ui模块管理器、ui模块管理方法和*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852302A (zh) * | 2005-09-20 | 2006-10-25 | 华为技术有限公司 | 一种在下一代网络中实现语音交互功能的方法 |
CN101021916A (zh) * | 2007-03-09 | 2007-08-22 | ***通信集团福建有限公司 | 业务流程分析方法 |
CN101257538A (zh) * | 2008-03-25 | 2008-09-03 | 华为技术有限公司 | 一种在浏览器中处理请求的方法、装置 |
-
2010
- 2010-10-29 CN CN201010525417.1A patent/CN102455903B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852302A (zh) * | 2005-09-20 | 2006-10-25 | 华为技术有限公司 | 一种在下一代网络中实现语音交互功能的方法 |
CN101021916A (zh) * | 2007-03-09 | 2007-08-22 | ***通信集团福建有限公司 | 业务流程分析方法 |
CN101257538A (zh) * | 2008-03-25 | 2008-09-03 | 华为技术有限公司 | 一种在浏览器中处理请求的方法、装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102455903A (zh) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102455903B (zh) | 一种用户应用界面的生成方法 | |
US20070028208A1 (en) | Runtime generative programming method and system | |
CN102594833B (zh) | 一种通信协议适配方法和*** | |
CN101322096B (zh) | 元数据驱动的用户界面 | |
CN102508669A (zh) | 一种程序代码自动生成方法 | |
EP2827244A1 (en) | Extension mechanism for scripting language compiler | |
CN110764752B (zh) | 实现Restful服务图形化服务编排的***及其方法 | |
US8756407B2 (en) | Configuration rule prototyping tool | |
CN102043622A (zh) | 一种电子控制器基础软件通用配置器 | |
Mittal et al. | DEVSML 2.0: The language and the stack | |
CN102024204A (zh) | 一种面向服务架构的可靠性设计分析服务体系的构建方法 | |
CN110109671B (zh) | 一种webpack标签尺寸样式转换方法及装置 | |
CN115639980A (zh) | 一种低代码平台可拖拽的前端逻辑编排方法及装置 | |
CN111666072A (zh) | 一种软件代码及文档机器人方法 | |
CN101458633B (zh) | 通过脚本程序访问宿主程序的方法及其***和装置 | |
CN103473034A (zh) | 一种动态发布Web 服务的方法和装置 | |
CN102375743B (zh) | 一种基于模型和模板开发soa***的方法 | |
CN101196812A (zh) | 构件化软件***实现脚本语言调用多输出参数接口的方法 | |
JP6002302B2 (ja) | Webアプリケーション生成システム、Webアプリケーション生成システムの制御方法、Webアプリケーション生成システムのプログラム、Webアプリケーション生成装置、Webアプリケーション生成装置の制御方法、およびWebアプリケーション生成装置のプログラム | |
CN104331288A (zh) | 一种配置化展现动态页面的方法及*** | |
CN114047970A (zh) | 一种autosar架构软件的配置方法及*** | |
CN101561884B (zh) | 一种可变数据印刷过程中的脚本实现方法及装置 | |
Rademacher et al. | Towards Holistic Modeling of Microservice Architectures Using LEMMA. | |
CN115964036A (zh) | 一种基于微服务架构的可视化服务编排*** | |
CN109933308A (zh) | 基于mpi+cuda的遥感卫星数据预处理流程可视化自定制通用*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20201029 |
|
CF01 | Termination of patent right due to non-payment of annual fee |