第一篇:用友UAP打造全周期开发平台 实现敏捷开发
用友UAP打造全周期开发平台 实现敏捷开发
为了解开用友UAP平台的面纱,了解更多平台技术,5月28日记者来到用友软件园,采访了用友集团UAP中心的两位专家,重点介绍了用友UAP的平台产品之一——开发平台所包含的组件及其特性,详细讲解了开发平台如何使得敏捷开发成为可能。
用友UAP平台诞生背景
中国软件行业正在经历第三次转型的阵痛,用友UAP伴随NC产品诞生,随着业务复杂度的提升,对页面交互、页面数据处理能力都提出了新的要求,这促使全新的用友UAP开发平台诞生。
用友UAP开发平台从不同类型的软件开发过程中,研究、分析、总结和提炼了大量的设计工具、开发工具、应用开发框架、中间件、基础技术类库以及研发模式等成果,并提供了一个集成的软件开发环境。
用友集团UAP中心Java应用平台开发部经理刘昆鹏表示,用友公司“平台化发展 产业链共赢”的策略,对如何有效利用和扩展研发成果,并在不同研发层次进行独立的资产管理和发展提出了要求。另一方面,随着软件工程的不断推进,整个开发过程的各个环节更加精细化,管理人员、需求人员、设计人员、开发测试等各开发人员都需要协同工作。所以将在开发过程中所产生的最佳实践达到有效的积累,也是开发平台要解决的问题。
用友集团UAP中心Java应用平台开发部经理 刘昆鹏
UAP开发平台的核心优势
用友集团UAP中心技术支持部总经理彭立东介绍,该平台包括了覆盖软件全生命周期的需求分析、设计、开发、测试、构造、发布、运行及维护等各阶段所需的工具。基于用友UAP开发平台能够大幅度提升软件的开发效率、稳定性、可集成性及可维护性,降低软件实现的技术难度以及开发成本。
用友集团UAP中心技术支持部总经理 彭立东
用友UAP开发平台由可视化集成开发环境、应用开发框架、公共服务以及基础技术类库/中间件几个部分组成,同时从开发过程角度提供了软件配置管理与研发管理功能。可视化集成开发环境UAP Studio支持业务建模、分析、设计、开发、测试、组装、发布等开发过程的全生命周期管理,提供各种管理工具、设计器、监控工具,以及软件配置管理系统。采用模型驱动开发的方式,通过上一阶段的输出与下一阶段的输入结合,利用可视化设计器将开发过程串接起来,大大降低开发难度,降低各阶段的鸿沟和不一致性。
用友UAP开发平台的“灵魂”
随后,彭立东先生向记者重点介绍了开发平台的“灵魂”——元数据。元数据框架支持访问服务、开发服务、管理服务,支持建模开发工具整合与适配其他系统模型数据,并提供统一的查询服务,使得平台上的开发者只需要关注业务逻辑,实现了业务与技术的分离。
开发平台的实体设计器包含多种建模元素和实体元素,可以可视化的方式创建面向对象的实体组件,可通过配置代码模板,自动产生可以直接运行的业务实体源代码。
业务与技术相分离
用友UAP开发平台的应用开发框架是基于企业建模理论的,将应用软件的业务逻辑和开发技术相分离,是应用软件开发者可以仅仅关注应用的业务逻辑,而不必关注繁琐的技术实现,使得管理层与业务人员参与应用软件的开发成为可能。大大缩短研发周期、提高研发效率、加快应用开发速度、减少企业信息系统开发的风险,并保证应用开发软件的质量,实现最终用户的个性化的需求。
除了支持开发WEB应用等常见的应用类型外,还支持开发跨平台移动应用。用友UAP移动应用框架提供了数据处理、应用适配器等功能,提供移动应用商店,开发者可以在上面发布自己的移动应用产品。
用友UAP平台产品的问世,能够支持我国大型企业及公共组织更好的实现IT及软件系统的运营与运维,提升管理绩效,并帮助客户参与全球化竞争。其开发平台将开发的全过程做为资产管理起来,大量的原数据模型和可视化界面大大降低开发的难度,实现了敏捷开发。
第二篇:微信公共服务平台开发(.Net 的实现)1
C#开发微信公众平台-就这么简单(附Demo)最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写了很多教程,但都是理论说了一大堆,实用指导或代码很少。如果你自己仔细研究下,其实就那么点东西,C#实现起来也很简单,原本不想写这篇文章的,但是本人当时摸索走了很多弯路,这边总结下,希望初次接触微信公众平台的朋友别像当时的我一样。
自己动手,丰衣足食。服务号和订阅号
服务号是公司申请的微信公共账号,订阅号是个人申请的,我个人也申请了一个,不过没怎么用。
服务号
1.1个月(30天)内仅可以发送1条群发消息。
2.发给订阅用户(粉丝)的消息,会显示在对方的聊天列表中。3.在发送消息给用户时,用户将收到即时的消息提醒。4.服务号会在订阅用户(粉丝)的通讯录中。5.可申请自定义菜单。订阅号
1.每天(24小时内)可以发送1条群发消息。
2.发给订阅用户(粉丝)的消息,将会显示在对方的订阅号文件夹中。3.在发送消息给订阅用户(粉丝)时,订阅用户不会收到即时消息提醒。4.在订阅用户(粉丝)的通讯录中,订阅号将被放入订阅号文件夹中。5.订阅号不支持申请自定义菜单。URL配置
启用开发模式需要先成为开发者,而且编辑模式和开发模式只能选择一个,进入微信公众平台-开发模式,如下:
需要填写url和token,当时本人填写这个的时候花了好久,我本以为填写个服务器的url就可以了(80端口),但是不行,主要是没有仔细的阅读提示信息,所以总是提示
从上面可以看出,点击提交后微信会向我们填写的服务器发送几个参数,然后需要原样返回出来,所以在提交url的时候,先在服务器创建接口测试返回echostr参数内容。代码:
1.//成为开发者url测试,返回echoStr
2.public void InterfaceTest()3.{
4.string token = “填写的token”;5.if(string.IsNullOrEmpty(token))6.{
7.return;8.} 9.10.string echoString = HttpContext.Current.Request.QueryString[“echoStr”];
11.string signature = HttpContext.Current.Request.QueryString[“signature”];
12.string timestamp = HttpContext.Current.Request.QueryString[“timestamp”];
13.string nonce = HttpContext.Current.Request.QueryString[“nonce”];14.15.if(!string.IsNullOrEmpty(echoString))16.{
17.HttpContext.Current.Response.Write(echoString);18.HttpContext.Current.Response.End();19.} 20.}
在一般处理程序ashx的ProcessRequest的方法内调用上面的方法,url填写的就是这个ashx的服务器地址,token是一个服务器标示,可以随便输入,代码中的token要和申请填写的一致,成为开发者才能做开发。
创建菜单
我们添加一些微信服务号,聊天窗口下面有些菜单,这个可以在编辑模式简单配置,也可以在开发模式代码配置。微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口,可以看到创建菜单的一些要点,下面的使用网页调试工具调试该接口,只是调试接口是否可用,并不是直接创建菜单的,菜单分为两种:
click: 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互。
view: 用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
click菜单需要填一个key,这个是在我们菜单点击事件的时候会用到,view只是一个菜单超链接。菜单数据是json格式,官网是php示例,其实C#实现起来也很简单,就是post发送一个json数据,示例代码:
1.public partial class createMenu : System.Web.UI.Page 2.{
3.protected void Page_Load(object sender, EventArgs e)4.{
5.FileStream fs1 = new FileStream(Server.MapPath(“.”)+“menu.txt”, FileMode.Open);
6.StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding(“GBK”));
7.string menu = sr.ReadToEnd();8.sr.Close();9.fs1.Close();
10.GetPage(“https://api.weixin.qq.com/cgi-bin/menu/create?access_token=access_token”, menu);11.}
12.public string GetPage(string posturl, string postData)13.{
14.Stream outstream = null;15.Stream instream = null;16.StreamReader sr = null;
17.HttpWebResponse response = null;18.HttpWebRequest request = null;19.Encoding encoding = Encoding.UTF8;
20.byte[] data = encoding.GetBytes(postData);21.// 准备请求...22.try
23.{
24.// 设置参数
25.request = WebRequest.Create(posturl)as HttpWebRequest;
26.CookieContainer cookieContainer = new CookieContainer();
27.request.CookieContainer = cookieContainer;28.request.AllowAutoRedirect = true;29.request.Method = “POST”;
30.request.ContentType = “application/x-)代码
31.string content = sr.ReadToEnd();32.string err = string.Empty;33.Response.Write(content);34.return content;35.}
36.catch(Exception ex)37.{
38.string err = ex.Message;39.return string.Empty;40.} 41.} 42.}
access_token获取方式上面已经讲过了,查询菜单返回的是json数据,其实就是我们创建菜单的menu.txt里面的内容。删除成功返回信息提示:{”errcode“:0,”errmsg“:”ok“},这个也只要在本地运行就可以了。
接受消息
微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/index.php?title=接收普通消息,我们使用微信就是要对用户发送的信息进行处理,这边以接受普通消息为例,语音、图片消息等,举一反三可得。
从文档上可以看出接受消息获得的是一个xml格式文件,当时有点犯傻的是,我要在哪边进行接受消息啊?还郁闷了半天,其实就是你一开始填写的url,是不是很汗颜啊,哈哈。
1.
2.
3.
4.
5.
6.
7.
8.
我们在ashx添加下面代码:
1.public void ProcessRequest(HttpContext param_context)2.{
3.string postString = string.Empty;
4.if(HttpContext.Current.Request.HttpMethod.ToUpper()== ”POST“)
5.{
6.using(Stream stream = HttpContext.Current.Request.InputStream)
7.{
8.Byte[] postBytes = new Byte[stream.Length];9.stream.Read(postBytes, 0,(Int32)stream.Length);
10.postString = Encoding.UTF8.GetString(postBytes);
11.Handle(postString);12.} 13.} 14.} 15.16.///
18.///
19.private void Handle(string postStr)20.{
21.messageHelp help = new messageHelp();
22.string responseContent = help.ReturnMessage(postStr);23.24.HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
25.HttpContext.Current.Response.Write(responseContent);26.}
messageHelp是消息处理帮助类,这边提供下部分代码,完整的可以下载来,获取的postString是xml,格式如上,我们这边只需要转换成XmlDocument进行解析就行了:
1.//接受文本消息
2.public string TextHandle(XmlDocument xmldoc)3.{
4.string responseContent = ”“;
5.XmlNode ToUserName = xmldoc.SelectSingleNode(”/xml/ToUserName“);
6.XmlNode FromUserName = xmldoc.SelectSingleNode(”/xml/FromUserName“);
7.XmlNode Content = xmldoc.SelectSingleNode(”/xml/Content“);
8.if(Content!= null)9.{
10.responseContent = string.Format(ReplyType.Message_Text,11.FromUserName.InnerText, 12.ToUserName.InnerText, 13.DateTime.Now.Ticks,14.”欢迎使用微信公共账号,您输入的内容为:“ + Content.InnerText+”rn点击进入“);15.}
16.return responseContent;17.}
18.///
19./// 普通文本消息
20.///
21.public static string Message_Text 22.{
23.get { return @”
25.
26.
27.
上面的代码就是接受消息,并做一些处理操作,返回消息。发送消息(图文、菜单事件响应)
这边发送消息我分为三种:普通消息、图文消息和菜单事件响应。普通消息其实上面说接受消息的时候讲到了,完整的代码下边下载来看。
我们先看下图文消息和菜单事件响应,微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/index.php?title=回复图文消息#.E5.9B.9E.E5.A4.8D.E5.9B.BE.E6.96.87.E6.B6.88.E6.81.AF,xml格式为:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21. 图文消息分为两种,我们先看下效果,找的圆通速递的微信服务号做示例:
刚开始做的时候,我以为这两种应该不是用的同一个接口,但是在文档中找了半天也没有找到除这个之外的,就试了下两个图文消息,发现就是这个接口发送的,如果多个的话,item中的Description会失效,只会显示Title,大家试下就知道了,示例代码:
1.//事件
2.public string EventHandle(XmlDocument xmldoc)3.{
4.string responseContent = ”“;
5.XmlNode Event = xmldoc.SelectSingleNode(”/xml/Event“);6.XmlNode EventKey = xmldoc.SelectSingleNode(”/xml/EventKey“);
7.XmlNode ToUserName = xmldoc.SelectSingleNode(”/xml/ToUserName“);
8.XmlNode FromUserName = xmldoc.SelectSingleNode(”/xml/FromUserName“);
9.if(Event!=null)10.{
11.//菜单单击事件
12.if(Event.InnerText.Equals(”CLICK“))13.{ 14.if(EventKey.InnerText.Equals(”click_one“))//click_one
15.{
16.responseContent = string.Format(ReplyType.Message_Text,17.FromUserName.InnerText, 18.ToUserName.InnerText, 19.DateTime.Now.Ticks, 20.”你点击的是click_one“);21.} 22./click_two
23.{ 24.responseContent = sage_News_Main, 25.FromUserName.InnerText, 26.ToUserName.InnerText, 27.DateTime.Now.Ticks, 28.29.m,”我要寄件“,”“,30.31.32.m, ”订单管理“, ”“, 33.34.35.} 36.)//click_three
37.{ 38.responseContent = sage_News_Main, 39.FromUserName.InnerText, 40.ToUserName.InnerText, 41.DateTime.Now.Ticks, 42.43.m, ”标题“, ”摘要“, 44.45.46.} 47.} 48.}
else if(EventKey.InnerText.Equals(”click_two“))/
string.Format(ReplyType.Mes
”2“,string.Format(ReplyType.Message_News_Ite
”http://www.xiexiebang.com/orderPlace.jpg“, ”http://www.xiexiebang.com/“)+
string.Format(ReplyType.Message_News_Ite
”http://www.xiexiebang.com/orderManage.jpg“, ”http://www.xiexiebang.com/“));
else if(EventKey.InnerText.Equals(”click_three“)
string.Format(ReplyType.Mes
”1“,string.Format(ReplyType.Message_News_Ite
”http://www.xiexiebang.com/jieshao.jpg“, ”http://www.xiexiebang.com/“));
49.return responseContent;50.}
51.///
52./// 图文消息主体
53.///
54.public static string Message_News_Main 55.{ 56.get
57.{
58.return @”
59.
60.
61.
62.
66. 67. “;68.} 69.}
70.///
71./// 图文消息项
72.///
73.public static string Message_News_Item 74.{ 75.get
76.{
77.return @”
78.
79.
80.
81.
需要注意的是:XmlNode Event = xmldoc.SelectSingleNode(”/xml/Event“)表示获取的是事件类型,XmlNode EventKey = xmldoc.SelectSingleNode(”/xml/EventKey“)表示事件标示,就是我们创建菜单添加click的key,通过key我们就可以判断出是点的哪个菜单。还有一点是回复超链接,有时候在服务号会发送一些链接,我们打开直接就会链接到相关网址,只需要在回复内容中添加:点击进入,就可以了。
示例Demo下载
下载地址:http://pan.baidu.com/s/1i3kMpwh 后记
关于微信公众平台当然还有许多其他的东西,本篇只是一些经验之谈,希望可以起到抛砖引玉的作用。有时候我们发现一些新鲜事物,觉得很难,就远远的看着,如果你用心的去感受它,其实也就这么回事。
第三篇:基于JSP+XML+SQL Server开发网络教学平台的设计与实现
基于JSP+XML+SQL Server开发网络教学平台的设计与实现
摘要 网络教学平台是面向教师和学生的网络教学系统,采用JSP+XML+SQL Server开发,对该平台的体系结构、功能进行了详细的分析,并介绍了设计中所采用的关键技术。
关键词 网络;三层结构;教学平台;JSP;流媒体
引言
随着计算机技术的飞速发展,信息网络已成为社会发展的重要保证。如何以网络为纽带快速、高效、方便地实现知识传递,以现代化手段促进教学改革,将传统的课堂教学转变为课堂+电脑+网络课堂+internet等多种学习方式,是教育工作者应当为之努力的方向。基于JSP技术的网络教学平台是依托校园网的优势设计和开发的,通过此平台,学生可以不受时间、空间、地域的限制,实现网上浏览教学内容、完成作业,参加测试等功能,教师也可借助此平台,发布公告信息,发布试题,实现课件上传下载,组织讨论答疑等功能。
系统体系结构
网络教学平台按照Browser/Server模式,将传统的浏览器/WEB服务器的两层体系结构扩展成浏览器—WEB服务器+应用服务器—数据库服务器三层体系结构,这种模式采用多种标准的协议和技术,适合于任何硬件平台和软件环境。
系统采用JSP与SQL Server 2000 数据库相结合,其实现的基本原理是利用SQL Server 2000 作为数据仓库,用Servlet等高性能服务器端程序作为后台总控程序,JSP程序在前台运行,Servelet接受用户的输入,分别调用不同的JSP程序向客户端反馈信息,JSP/Servlet通过HTTP连接在服务器端和客户端传递数据,其体系结构如图1所示。
图1 系统体系结构
系统功能分析
网络教学平台由教师教学系统、学生学习系统和教学管理系统三大模块组成,这些模块之间相互联系,相互配合,构成一个完整的网络教学系统。系统功能框图如图2所示。
图2 系统功能框图
1、教师教学系统与学生学习系统
教师教学系统与学生学习系统的功能相对应,主要包含以下几个模块:
(1)网络课堂:网络课堂是实施网络教学的主要场所,教师和学生可以通过此模块实现实时和非实时的网上交流。教师可以实现课程添加、修改,将课件上传等功能,而学生可以浏览教学大纲,教学计划,教学参考资料,教学课件等内容,也可以下载这些资料,观看优秀教师教学录像,通过此平台学生可以自主预复习,把传统的学习过程变得更加方便灵活。
(2)网上作业:作业环节是对所学知识理解和巩固的过程。教师可以在网上发布、批改、删除作业,学生可以在线或下载完成作业,完成后可以将作业上传,还可以通过此环节查看自己完成作业的情况,查看教师评语等内容。
(3)网上测试:教师可以完成试题添加,试题管理,可以调用网络试题库按章、节或综合应用自动、手动组卷,进行成绩分析;学生除了可以参加网上测试外,还可查询测试结果。
(4)讨论答疑 :在界面上采用了BBS形式,提问与回答的过程是异步的,学生将学习中遇到的问题用留言的形式公布在网上,教师通过此模块进行答疑。教师也可以在网上发布讨论题,引导学生进行学术研究和讨论
(5)网上交流:本模块类似于网络聊天室,教师与学生、学生与学生之间可进行实时的网上交流,网上讨论,通过此模块可以解决个别学生的概念模糊,解题思路混乱等问题。
(6)实验指导:教师把学生在实验中遇到的问题和易犯的错误以回答问题的形式表现出来,以交互的形式辅导学生顺利完成实验;学生可以在计算机上撰写、提交实验报告,教师可以浏览、批阅。
2、教学管理系统
系统分为人员管理、课程管理、作业管理、考试管理和讨论交流管理。
(1)人员管理:包括系统管理员、教师和学生管理。其中管理员可以对所有人员进行添加、修改、删除和查询,同时还可以对教师的所有权限进行分配。
(2)课程管理:包括课程添加、课程查询和课件管理。
(3)作业管理:可以查看、修改和删除作业。
(4)考试管理:试题添加、修改、审核和删除。
(5)讨论交流管理:包括BBS版主管理、帖子管理。
软件开发技术
系统采用目前流行的JSP技术开发Web应用程序,采用XML技术对教学数据进行处理,通过JSP/Servlet和XML进行数据交互,同时也采用了计算机网络中的许多成熟技术,如流媒体技术,客户/服务器技术,数据库技术。
(1)JSP技术:JSP是一种卓越的Java技术,它基于强大的Java语言,可在任何Web或应用服务器上运行,与Java Enterprise API(Java 企业应用编程接口)紧密结合,可快速创建高性能的Web应用程序。它将内容的生成和显示进行分离,使Web开发人员能专注于应用逻辑的处理;利用可重用的组件(Java BtensEJB),加快了总体开发速度,并提高了系统质量,采用标识简化页面编程,降低了开发人员的难度。
(2)XML与HTML技术:XML和HTML一样属于标记语言,可以通过标记来描述数据的结构,并且它允许用户自行视描述数据的需要,随意地制定不同的标记,这和HTML有着极大的差别,除此之外,XML不同于HTML对于所有的标记都已经定义了显示格式的意义,对于XML而言,显示格式并不是最重要的,相对地,数据所代表的意义才是最重要的,因此,XML并不负责标记显示的格式。不过,XML却允许通过较复杂且灵活性的方式显示数据,如通过XSL、CSS、HTML+XML Island以及编写程序并通过DOM取出数据再显示;XML具有跨平台、与语言和应用程序等无关的特性;XML除了可以使用标记与属性来描述数据的意义之外,另外还提供了可用来描述文件结构的DTD与XML Schema。
(3)基于连接池的数据库技术:系统采用DB Connection Manager的Java类管理连接池对象,其中每一个连接池保持一组JDBC数据库连接对象,可以为任何Servlet所使用。连接池具有以下功能:装载和注册JDBC驱动程序;根据在属性文件中定义的属性创建连接池对象;实现连接池名字与其实例之间的映射;跟踪客户程序对连接池的引用,保证在最后一个客户程序结束后安全关闭所有连接池。
(4)流媒体技术:采用流媒体技术实现视频音频数据传输。在网络上传输音/视频等多媒体信息主要有下载和流式传输两种。下载时用户必须将既耗费时间又耗费磁盘空间的整个文件复制到自己的计算机中,然后才能播放.因为整个文件必须在下载之后才能播放,所以下载不能用于实况流。同时,下载也不能高效地使用可用带宽,当客户端开始下载数字媒体文件时,所有可用网络带宽都用于尽可能快地传输数据,其他网络功能可能会减慢或被中断。流式传输只以客户端正确呈现的速度通过网络发送数据,所以它比下载更高效地使用带宽。因此,流式传输有助于防止网络过载并能维持系统的可靠性。在流式传输的实现方案中,采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输音视频数据。
(5)客户/服务器技术 :联入校园网的计算机从功能上来说,可以分成服务器和客户机两种,不论哪种服务器,如文件服务器,FTP服务器,数据服务器,邮件服务器,数据服务器,代理服务器等都成天候运行,提供各种服务,为学生服务。
结论
相对于封闭的传统教学模式而言,网络化教学做到了信息渠道的畅通无阻,它突破了时间、空间、地域的限制,体现了以学生为本,因材施教的思想,促进了学生创新意识和创新能力的培养,为学生向多方向,全方位发展起到了推波助澜的作用。
第四篇:基于MVC模式的快速Web应用开发平台的设计与实现概要
收稿日期:2003-11-07;修返日期:2004-07-08 基金项目:湖南省普通高校青年骨干教师培养计划([2001]204 基于MVC 模式的快速W eb 应用开发平台的设计与实现 * 王 禹,王建新,江 南,王 斌
(中南大学信息科学与工程学院,湖南长沙410083 摘 要:在探讨Web 应用开发平台的基础上,提出了基于MVC(Model-View-Cont roller模式的Web 应用平台的开发方法,并详细论述了应用开发平台的核心体系结构、技术实现方案及其关键技术。利用该快速Web 应用开发平台可以迅速搭建企业级的Web 应用,其代价要比利用传统的J 2EE 开发平台低,具有良好的应用前景。关键词:Web 应用平台;MVC 模式;应用逻辑组件框架;对象-关系映射基础组件
中图法分类号:TP31;TP 393 文献标识码: A 文章编号:1001-3695(200411-0204-03 Design a nd Im plem ent ation of Rapid Web Applicat ion Plat form Based on M VC Pat t ern WAN G Yu,WAN G J ia n-xin,J IAN G N an,WAN G Bin(C ollege of Information S cience &E ngineer ing,Centr al South Univers ity,Changsha H unan 410083,C hina Abst ract :Introduces developm ent t echnique a bout MVC pa tt ern ra pid Web applica tion plat form on t he bas is of exploreing Web a pplication plat form a nd det ailedly discusses it ’s kernel architect ure,technic reliz at ion schem e and key t
echnologies.B ased on this ra pid Web a pplicat ion developm ent pla tform ,the ent erprise Web applica tion ca n be cons truct ed quickly,a nd it s cost is fewer t ha n t ra dit iona l J 2EE dev elopm ent pla tform ,so it ha s glorious pros pect.Key wo rds:Web Applica tion P lat form;M VC P at tern;Applica tion Log ic Fram ework;Object-Relat ional Mapping C om po-nent近年来,随着网络技术和Internet 的迅速发展,基于B/S 模式的Web 应用,因其具有易用性、通用性和良好的可扩展性等优点而发展迅速,正逐渐成为企业应用信息系统市场的主流。但是,当前基于J ava 的Web 应用软件开发过程中,还存在如下一些不尽人意的地方
[1] :(1程序可重用程度很低。多个项目常常有功能类似的部分,但由于设计之初没有考虑到或不能深入考虑,导致程序虽然类似却不能重用,只能重写的局面。完成一个项目积累下来的只有经验而没有代码,造成工作量的浪费。
(2维护工作烦琐困难。即使不考虑由于需求模糊造成的追加,项目后期维护仍然烦琐。用户的几乎任何一点修改都需要程序员参与才能够完成,而这类维护中有近一半以上的修改都只需要非常简单的改动就可以完成。
(3程序应变能力较弱。由于当前应用软件的业务和用户均不够成熟,需求的变化就是一个客观存在的必然事实,而目前应用软件的应变能力无论从技术体系还是程序编码都不够强,这也导致了维护工作的困难。
为了能够有效地提高Web 应用程序的可重用性、可维护性和可扩展性等方面,我们结合MVC(Model-View-C ontroller,模型-视图-控制器模式来设计一个基于J 2EE 技术的Web
应用开发平台,它能够提供大量的高度抽象且功能强大的基础组件框架;特别地,它还能提供丰富灵活的客户化程序和应变体系。基于这个Web 应用开发平台用户或程序员可以快速地编写出自己的应用软件项目或产品
[2]。平台的体系结构与实现方案 1.1 We b 应用平台的中心体系结构 图1 Web 应用平台的中心体系结构
图1说明了Web 应用平台的中心体系结构的各个组件,每个服务器代表所提供的服务。服务器实际可能位于同一机器,或对于大型的Web 主机设备而言,可能存在几个各自执行相似任务的服务器。这类Web 应用体系结构的长处之一是大部分的Web 应用程序可以通过向用于传输应用程序的服务器组或Web 区添加更多机器,升级以支持更多用户。该Web 应用平台体系结构中各部分的内容有:(1Web 浏览器客户机。在Web 应用程序中,用户接口通
过一个Web 浏览器进行传输。浏览器理解的主要语言是超文本标记语言HTML,大部分当前浏览器还具有执行JavaScript ・402・计算机应用研究2004 年 因特
网 因特网防
火墙
网络服务器 企业防火墙 应用程序服务器 数据库 服务器 企业计算资源
和J a va的内置能力。当前主要应用的浏览器有IE,Nets cape 和Opera等。(2Web服务器。它处理HTTP请求,并确定如何生成一个请求响应。在本体系结构中,Web服务器用于响应静态Web页,把请求传递到一个应用程序服务器,以及接收应用程序服务器的返回内容以生成响应内容。当前的平台采用主流的Apache服务器作为Web服务器。
(3应用程序服务器。该平台是基于J2EE的架构,应用程序服务器包括服务程序引擎和EJ B容器。本平台是基于J2EE架构的轻量级Web应用实现,主要采用服务程序引擎部分来实现应用逻辑。服务程序引擎还提供对J S P的支持,J S P 是与平台和Web服务器无关的。该平台采用的服务程序引擎来自Apache的应用服务器Tom cat4.1.12。
(4数据库服务器。在该体系结构中,数据库可以通过运行EJ B或服务程序的J DB C API程序调用进行访问。该平台的数据库服务器采用MS S QL S erv er2000。
(5传统遗留系统。该平台采用的J av a技术是将不同系统连接在一起的应用程序的理想平台。J DBC允许建立大量通用数据库的统一数据库连接,J a va消息服务(J MS是实现提供消息中介服务标准化接口的良好起点,J a va与XML及简单对象访问协议(S OAP的组合可以提供从支持不同语言和通信机制的各种系统到传统应用程序的访问。
(6防火墙。防火墙及代理了限制应用程序在随机套接字上通信的能力。如果客户机上的代码需求独立于浏览器之外与服务器通信,则该通信应采用HTTP或HTTPS协议。
1.2 Web应用平台的技术实现方案
Web应用平台的程序结构是基于MVC模式来实现的。M VC模式中包括三类组件:Model组件用于描述应用程序中的数据以及操作该数据的方法,与用户界面无关;View组件负责将数据展现给用户;Cont roller组件将用户操作翻译为对Model 组件的操作。接到C ontroller传来的操作之后,Model再更新View,以反映出数据的变化[3]。
Web应用平台的技术实现主要采用J S P,J a va S ervlet,J a-vaB ea ns和J DBC等技术来实现基于J2EE架构的轻量级Web 应用的开发。其中,通过J DBC进行数据库访问的J a va Bea ns 代表模型(数据,S ervlet充当控制器(处理请求,J S P页面则是模型的视图[4]。
图2 Web应用平台的程序结构
如图2所示,Web浏览器发出HTTP请求后,通过Web服务器接收后传递,然后由应用服务器中的服务引擎调用操作S ervlet来处理,操作S ervlet再将请求调至J avaBeans,即操作B ea n。操作B ea n更新代表业务对象模型的数据B ean,并向操作S ervlet返回一个操作路径选择器。操作S ervlet利用这个路径选择器将请求转发或
重定向至J S P页面,接着,J S P页面访问通常具有定制标记的业务对象,并向浏览器发回响应。
2平台的主要功能与组成内容
Web应用开发平台作为Web应用系统开发的通用化基础平台,其主要的功能要求有:(1将数据建模、数据显示与用户交互三者分开,使得程序设计的过程更清晰;(2简化程序扩展时的副作用分析,从而提高系统的可扩展性;(3将应用程序的功能封装在众所周知的API后面,提高系统的可维护性,减少重复代码,将应用程序的功能和数据表现分开,提高可复用程度;(4提高系统的灵活性,把数据模型、用户交互和数据显示等部分设计为可接插组件;(5可以用于部分发布,支持渐近式升级;(6提供自定义的系统通用组件集,包括改善数据库访问性能的连接池组件,用于应用程序错误处理的组件以及其他实现通用化的用户与权限管理等组件。
开发平台的内容包含一系列互相合作的类、Servlet控制程序、JSP定制标记库以及一些实现通用化功能的组件集,它们共同组成了可重用的基于MVC的框架。
开发平台主要由以下几个部分组成:表示控制器(Control-ler部分的Web应用逻辑组件框架,表示视图(View部分的Web用户界面组件框架,表示模型(Model部分的对象-关系映射(ORM的基础组件,以及有关的JSP定制标记组件库和其他通用化组件集。
3平台设计与实现的关键技术
(1控制器功能的Web应用逻辑组件框架的设计与实现
从JSP页面或Servlet调用中接收请求,调用相应的操作Bean及数据Bean实现应用逻辑处理,最后再转移到其他的JSP页面或Servlet调用的操作。应用逻辑框架中包括四种类型的对象: ●Action(接口实现此接口的应用程序的特定操作;●ActionFactory(类生成操作实例;●ActionServlet(Servlet将请求映射到操作;●ActionR outer 将请求转发或重定向至JSP页面。
应用逻辑框架中的对象类型在运行过程中的协作关系如图3所示。一般情况下,可以从JSP页面或另一个Servlet调用操作Servlet(ActionServlet,作为表单提交或链接激活的结果。根据请求的类型,该Servlet重新检索相应的操作类型。操作Servlet(ActionServlet从操作库中获得一个操作后,它便调用此操作的Perform方法,Perform方法实现了特定应用程序的功能,通常用于更新业务对象。Action.perform返回一个操作路径选择器,它具有一个URI和Boolean变量,指示是否将请求转发或重定向至这个URI。操作Servlet使用操作路径选择器调用路径选择器的Route方法,Route方法将请求转发或重定向到适当的Web组件[5,6]。
基于框架增加应用开发时,可以考虑按以下几步实现:①实现Action操作,使其能操作业务对象模型,而且可能在适当
・ 5 2 ・
第11期王禹等:基于MVC模式的快速Web应用开发平台的设计与实现
浏览器 操作Servlet(控制器 4.返回操作路径 JSP页面(视图
5.转发或重定向 1.请求 7.响应 操作Bean 2.调度请求 3.更新 的范围内为J S P页面(视图存储B ea n,以便访问;②实现J S P 页面,使其能访问业务对象以及特定范围内的B ea n;③增加到应用程序属性文件的映射,以便使上述产生的操作及页面与逻辑名等同。
图3 Web应用逻辑组件框架中对象类型的协作顺序图(2模型功能的对象-关系映射的基础组件的设计与实现
通过数据Bean来存取后台数据库的相应数据,即将J a va 对象映射到数据库表中,也就是要创建一个J ava对象来代表数据库表的其中一行,然后初始化它的各个域,并且通知对象将其添加到数据库中。此即对象到关系映射技术(Object-Re-la tional
Ma pping,ORM。平台的ORM基础组件设计一个基础类,要能够简化数据Bean代码的一个抽象数据库对象类。并且,每一个映射到数据库表的J ava类必须能够提供它们自己的添加、更新和删除语句,同时还必须能够从ResultS et对象中读出各个域。该抽象类Dat aba seObject的概要说明如下: public abstr act class Da tabaseObject{ public Vector g etAll(Connection connthrows S QLEx ception{} public Vector getAll(Connection conn,Str ing w hereC lausethrow s S QLException{} //返回表中符合条件的所有对象
public Vector getAll(Connection conn,S tring whereCla use,Str ing addi-tionalTablesthrows SQLException{} //执行一个指定连接的查询串
public Vector executeQuer y(Connection conn,Str ing quer ythrows S QLE xception{} //插入对象到数据库中
public int insert(Connection connthrows S QLException{} //返回表中用于S elect的字段列表 public abstr act Str ing getFieldList(;public Str ing getFieldList(S tring tableName{};public abstr act Str ing getInser tStatement(;public abstract void prepar eInsertStatem ent(Pr epar edS tatement s throw s S QLE xception;
//修改数据库中的对象
public int update(Connection connthr ows SQLException{} public abstr act Str ing getUpdateS tatement(;public abstract void prepareUpdateS tatement(PreparedStatem ent s throw s S QLE xception;//删除数据库中的对象
public int delete(Connection connthrows S QLException{} public abstr act Str ing getDeleteS tatement(;public abstract void pr epar eDeleteStatem ent(PreparedStatement s throw s S QLE xception;public abstr act Str ing getTableName(;public abstr act DatabaseObject createInstance(ResultS et r esults throw s S QLE xception;} 所有业务应用需要的数据B ea n都可以从这个抽象对象基础类上继承出来,再结合具体的要求进行相应的扩展。
(3视图功能的Web用户界面组件框架的设计与实现
HTML表单用于Web应用程序,而用户界面框架(如Sw ing和AWT用于传统软件,页面制作者使用表单而不是用户界面工具包来创建用户界面。所以,为Web应用的开发提供一个类似传统软件用户界面框架的Web用户界面组件框架,这样的作用是能够大大提高Web应用界面开发中的代码重用,也给开发人员提供了一个界面开
发中能不断扩展的基础平台。在Web应用表示层的视图部分,J S P规范没有直接支持表单,Web应用平台在此基础上实现Bea n表单框架,也就是开发平台的Web用户界面框架。而且J SP没有提供界面工具中类似于组件、容器或布局管理器的对象。但是J S P具有定制标记和包含Web组件的能力两个特色,利用这两个特色,可以实现定制的组件、容器和布局管理器。所以,Web应用平台通过设计节点、区域和模板实现网页的基础组件来实现可扩展的、可重用的和可维护的Web应用的界面部分。
(4平台的J S P定制标记组件库和其他通用化组件集的设计与实现
它包括用于优化数据库访问效率的数据库连接池,系统初始化设置、客户端的显示、上传下载与页面显示分页等通用控制组件,以及实现加密解密、第三方打印组件和通用的系统用户与功能权限管理模块等内容。基于该平台的Web应用开发过程中,可以直接使用上述公用组件所提供的通用化功能,从而减少了开发Web应用系统的工作量。
4结束语
基于MVC模式的Web应用平台具有如下特点:能够快速完备地搭建Web应用系统;采取设计模式来扩展显示逻辑、应用逻辑以及数据模型的复用度;结合区域与模板重用的定制JSP页面;提供优化数据库访问的连接池以及丰富的、通用的工具组件。通过实践证明,基于此通用化平台开发的Web应用系统能够具有以下的优良特点:使应用程序模块化;减少了HTML和Java代码的相关性;允许开发人员为相同的数据提供多个视图;简化了应用程序流程,使得应用程序更易维护,是一种进行Web应用开发的可靠模型。
参考文献: [1]蒋步星.Web应用软件开发平台ExPl atO-Web[C].全国第四届 Java技术与应用交流会,2001.285-288.[2]齐勇,等.基于Web的中间件系统集成框架———应用服务器的 研究[J].计算机研究与发展,2001,38(4:430-437.[3]姚慧广,赵岳松.Web编程中MVC模型的应用[J].微机发展, 2002,11(3:9-10.[4]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算 机工程,2002,28(6:274-281.[5]王斌,王建新,张尧学,等.基于通信的MAS内部自动服务协商 [J].小型微型计算机系统,2003.[6]王斌,张尧学,陈松乔.分布式环境下代理协同的主动黑板结构 设计模式[J].计算机工程,2003.作者简介: 王禹,男,硕士研究生,主要研究方向为网络信息系统;王建新,男,教授,博士,主要研究方向为计算机网络理论;江南,男,硕士,主要研究方向为软件工程;王斌,男,博士,主要研究方向为组件技术。
・ 6 2 ・计算机应用研究2004年
JSP或Servlet ActionServlet ActionFactory Hashtable Class Action ActionRouter
service(getAction(Action action=get(classname action=newInstance(put(classname,action ActionRouter router=perform(this,req,resnew(“URL” route(this,req,res
第五篇:对“中泽地产XX项目全周期开发计划”的几点建议(朝阳刘总)
对“中泽地产XX项目全周期开发计划模板”的几点建议
一、建议将行政等事务性的工作及流程,从此计划中删除,由专项计划规范实施。因为行政事务性工作对总体项目的开发计划没有直接影响。将不重要的日常性工作从此表中删除,如围挡的搭建、小金额的配套工程合同等。
二、建议多设置些一级节,将一级节点贯穿于全周期开发各主要阶段,对于集团来讲,重点把控一级节点就可以实现全盘监督与管理。此外,还应有二级和三级节点,二级节点由集团/城市公司共同监管。三级节点/专项计划由职能中心/城市公司自行把控。但是总的节点数量不宜过多,节点过度会增加公司人力资源的成本。如此更便于集团/城市公司对总体开发计划的把控与责权划分。
三、全周期开发计划表,应考虑二条时间线路进行编制。其一,是按开发的自然的流水时间进行编制,从拿地、开发到交付,全过程一目了然。其二,是按开发模块分别进行编制,比如可按土地拓展阶段、项目启动阶段、规划方案阶段、扩初设计阶段、施工阶段、营销及策划阶段、竣工及交付阶段等,并将成本合约、招采规划及评审会议工作交叉贯穿于各个阶段之中。
四、在每个开发模块阶段,建议应增加一个竖向列的内容,就是专题会议(评审会议)计划,注明会议级别、由谁倡议和主持、由哪些部门参加、会议时间、几次之后形成决议。比如,在营销策划阶段,应该有筹划方案及定位的会议;入伙实施阶段,应该有入伙方案会议等等。