Web应用环境和开发工具介绍谢琦xieqi@zzu.edu.cn提要定义和范畴Web应用构架特点和困难新技术和解决方案设计工具、开发工具什么是Web应用浏览器/服务器结构HTML页面描述客户端脚本服务器应用程序基于XML/SOAP的智能客户端应用为什么要Web?Web应用构架一般意义上的Web应用构架Web服务器数据库服务器客户机浏览器B/S结构带来的好处Web应用构架问题为什么会变得复杂信息集成的需求多数据源共享SSO多种接入终端已有资源的利用业务复杂性的需求变更变更还是变更软件可重用行/可维护性/可扩展性的需求维护成本管理的需求Web应用构架具有实用性的架构客户机智能客户端客户机浏览器三层结构数据库服务器数据库服务器数据库服务器中间层服务器Web服务器Web的特点维护成本变更管理大范围应用的可用性集成性集成技术(底层、外围)数据表达(统一的、简单的表达方式HTML/XML)传统B/S的困境C/S与B/S的主要区别主机依赖性客户端体验应用程序交互模式的变化服务器配置应用的部署策略C/SB/S保证更多的并发访问(性能问题)应用复杂性带来的问题开发成本易于变更业务规则应用逻辑人机界面在3个节点上运行的瘦客户端的3层模式。数据InterfaceApplicationLogicServerDatabaseClient客户端体验程序设计语言的能力可以做任何事情积累了计算机技术多年的成就与操作系统的完美结合脚本语言的局限浏览器的安全限制界面操控的局限数据结构的局限客户端体验的改良基于浏览器的解决方案更加丰富的浏览器表现对象JavaAppletActiveX智能客户端智能本地缓存服务器控制下的操作权限客户端自动更新B/S结构的人机交互一个实例:新技术和解决方案面向对象分析和设计UML组件技术组件标准互操作性开发技术集成开发环境应用框架插件和构造块集成技术XML和WebServiceSOAOOA/OOD把问题表达成对象及其交互使用UML进行分析和设计分析设计实现UML示例掷是毂子游戏定义用况游戏者在游戏中拿起毂子投掷,总数为7的为赢,否则为输。定义领域模型概念:游戏者游戏穀子PlayernameDiceGameDiefaceValueRollsPlaysIncludes221111示例交互图:DiceGameplay()die1:Diefv1:=getFaceValue()die2:Dieroll()roll()fv2:=getFaceValue()示例设计类图2DiefaceValue:intgetFaceValue():introll()DiceGamedie1:Diedie2:Dieplay()1对象组件技术和接口标准分布式组件技术可方便分布的对象组件由此带来的易于开发和维护组件标准CORBACOMBEANWebService协议IIOPSOAP作用便于构建可伸缩的系统软件系统的架构软件架构软件的整体组织结构;软件元素-〉模块-〉子系统-〉系统。这是一种构架方式。软件的架构可以从多个方面去描述逻辑架构系统的层、包、框架类、类和子系统的组织方式。部署架构系统的进程如何分配到处理单元和网络配置。分布式技术使软件的部署更灵活单一系统的工作(Unix)单一系统的工作(win)系统结构(面向应用的)数据数据数据中间件WebService中间件WebService中间件WebService中间件WebServiceJava处理过程.Net处理过程JavaWebApp.NetWebApp其他主机服务其他进程客户端/浏览器开发技术—IDE集成开发环境设计代码调试人机界面服务器后台软件数据库操作几种IDEVisualStutioWebSphereEclipseJBuilderPocketPC开发技术—应用框架建立在OS基础上的软件开发语言(C++)OS的API数据库API/ODBC/JDBC应用框架大大简化和开发的难度以对象形式展现给开发者针对应用的底层支持更方便的人机界面/数据访问的接口开发技术—插件和构造块提供软件模块模版组件类库更专业满足特定应用方向的需求例如:O/R影射异常处理常用人机界面对象XMLXML(eXtensibleMarkuplanguage)用于表示数据和数据结构的描述语言一种可以自解释的数据描述公共语言两种方法定义数据元素:文档类型定义(DocumentTypeDefinition)或简称DTDXMLSchemaXMLSchema特点:XML模式使用XML语法XML模式支持数据类型XML模式可扩展XML模式表达能力强XML示例?xmlversion=1.0encoding=gb2312?-简况姓名张三/姓名单位河南电力公司/单位职务处长/职称主管岗位维修/岗位岗位后勤/岗位/主管手机13999998888/手机E-mailaaa@xx.com.cn/E-mail住址郑州、杜岭街8号/住址/简况XML和Html比较比较内容HTMLXML可扩展性不具有扩展性是元置标语言,可用于定义新的置标语言侧重点侧重于如何表现信息侧重于如何结构化地描述信息语法要求不要求标记的嵌套、配对等,不要求标记之间具有一定的顺序严格要求嵌套、配对,并遵循DTD的树形结构可读性及可维护性难于阅读、维护结构清晰,便于阅读、维护数据和显示的关系内容描述与显示方式整合为一体内容描述与显示方式相分离保值性不具有保值性具有保值性编辑及浏览工具已有大量的编辑、浏览工具编辑、浏览工具尚不成熟XML实例•为置标语言FCLML公司的客户列表置表语言制定的,文档类型定义DTD,其程序为fclml.dtd(文档定义语言)(例1)•客户联系信息的XML文档Client.xml(例2)•为client.xml制定一个样式Mystyle.xsl(例3)•Html格式及显示(例5,例6)例1返回Fclml.dtd<?xmlversion=“1.0”encoding=“GB2312”?><!ELEMENT联系人列表(联系人)*><!ELEMENT联系人(姓名,ID,公司,EMAIL,电话,地址)><!ELEMENT地址(街道,城市,省份)><!ELEMENT姓名(#PCDATA)><!ELEMENTID(#PCDATA)><!ELEMENT公司(#PCDATA)><!ELEMENTEMAIL(#PCDATA)><!ELEMENT电话(#PCDATA)><!ELEMENT街道(#PCDATA)><!ELEMENT城市(#PCDATA)><!ELEMENT省份(#PCDATA)>例2返回<联系人><姓名>李四</姓名><ID>002</ID><公司>B公司</公司><EMAII>1i@bbb.org</EMAII><电话>(021)87654321</电话><地址><街道>南京路9876号</街道><城市>上海市</城市><省份>上海</省份></地址></联系人></联系人列表>Clent.xml<?xmlversion=“1.0”encoding=”GB2312”standalone=”no”?><!DOCTYPE联系人列表SYSTEM”fclml.dtd”><?xml—stylesheettype=”text/xsl”href=“mystyle.xsl”?><联系人列表><联系人><姓名>张三</姓名><ID>001</ID><公司>A公司</公司><EMAIL>zhang@aaa.com</EMAIL><电话>(010)62345678</电话><地址><街道>五街1234号</街道><城市>北京市</城市><省份>北京</省份></地址></联系人>例3返回MyStyle.xsl<?xmlversion=1.0encOding=GB2312?><xsl:stylesheetxmlns:xsl=”http://.w3.org/TR/WD-xslxmlHs=http://.w3.org/TR/REC—html40result—ns:=><xst:template><xsI:apply—templates/></xsl:template><xsl:templatematch=/><HTML><HEAD><TITLE>F公司的客户联系信息</TITlE></HEAD><BODY><xsl:apply—templatesselect=联系人列表/></BODY></HTMI></xsl:template><xsl:stemplatmatch=联系人列表><xsl:for—eachselect=联系人><UL><LI><xsl:value—ofselect=姓名/><LI><UL><LI>用户ID:<xsl:value—ofselect=ID/></LI><LI>公司:<xsl:value—ofselect=“公司/></LI><LI>EMAIL:<xsl:value—ofselect=“EMAIL/></LI><LI>电话:<xsl:value—ofselect=“电话/></LI><LI>街道:<xsl:value—ofselect=“地址/街道/></LI><LI>城市:<xsl:value—ofselect=“地址/城市/></LI><LI>省份:<xsl:value—ofselect=“地址/省份/></LI></UL></UL></xsl:for-each></xsl:template></xsl:stylesheet>例4例5返回<LI>李四</LI><UL><LI>ID:002</LI><LI>公司:B公司</LI><LI>EMAIL:1i@bbb.or8</LI><LI>电话:(021)87654321</LI><LI>地址:南京路9876号</LI><LI>城市:上海市</LI><LI>省份:上海</LI></UL></UL></BODY></HTML><HTML><HEAD><TITLE>F公司的客户联系信息</TITLE></HEAD><BODY><UL><LI>张三</LI><UI><LI>用户ID:001</LI><LI>公司:A公司</LI><LI>EMAIL:zhang@aaa.com</LI><LI>电话:(010)62345678</LI><LI>地址:五街1234号</LI><LI>城市:北京市</LI><LI>省份:北京</LI></UL>例6返回•李四oID:002o公司:B公司oEMAIL:1i@bbb.or8o电话:(021)87654321o地址:南京路9876号o城市:上海市o省份:上海•张三o用户ID:001o公司:A公司oEMAIL:zhang@aaa.como电话:(010)62345678o地址:五街1234号o城市:北京市o省份:北京XMLSchema?xmlversion=1.0encoding=UTF-8?xs:schemaxmlns:xs=xs:elementname=loanxs:complexTypexs:sequencexs:elementname=initialBalancetype=balance/xs:elementname=currentBalancetype=balance//xs:sequence/xs:complexType/xs:elementxs:simpleTypename=balancexs:restrictionbase=xs:decim