Web应用的UML建模与.NET框架开发

简介:

摘要 本文通过分析Web应用的构架模式,引入UML扩展机制,实现对Web应用中各种对象的建模。探讨. NET框架下Web应用的UML建模及开发方法,并将其应用到一个实际的研究所管理系统中。实际应用表明该方法有利于降低开发的复杂性,缩短开发周期,取得了较好的效果。

关键词 Web应用 构架 UML建模 .NET框架 LOB

   引言

基于Web的应用系统一般包含两部分:服务器和客户端浏览器。服务器主要对事务进行逻辑处理,而用户对服务器上业务逻辑的影响,使Web应用往往具有复杂性和高度动态性的特点。这种特点使得基于Web应用的 系统开发比较复杂、管理困难。为了有效地解决上述问题,缩短开发周期,减少维护费用,主要策略是对Web应用进行建模。UML是面向对象技术领域中占主导地位的统一建模语言。此外,.NET框架在通用语言运行时CLR的基础上,提供了完善的基础类库、数据库访问技术ADO.NET和网络开发技术ASP.NET,使开发者可以快速构建Web应用。因此,本文主要探讨基于.NET框架Web应用的UML建模及开发方法,并将该方法用于作者开发的研究所管理系统中,实际应用表明该方法可以有效地降低系统开发和管理的复杂性,提高经济效益。

Web
应用的构架模式

Web应用的基本构架包括浏览器、网络和Web服务器。浏览器向服务器请求Web页,Web页可能包括由浏览器解释执行的客户端脚本,而且可以与浏览器、页内容和页中包含的其他控件(Java Applet、 ActiveX控件和插件等)进行交互。用户向Web页输入信息或通过超级链接导航到其它Web页,与系统进行交互,改变系统的“业务状态”。

1、瘦Web客户端

主要适用于基于Internet的应用,对客户端配置几乎没有控制。客户端只需要标准Web浏览器,可以请求和显示标准的HTML页面。所有的业务逻辑都在服务器上执行。

客户端浏览器通过HTTP协议向服务器请求页面资源,服务器将被请求的URL解析为文件系统中的文件,或者由应用服务器处理并可能改变业务状态,得到请求的页面,返回给客户端。

2、胖Web客户端

胖Web客户端对于可以确定客户端配置和浏览器版本的Web应用是最适合的。客户端通过HTTP与服务器通信,使用DHTML、Java applet或者ActiveX控件执行业务逻辑。HTTP的无连接特性,决定了客户端脚本、ActiveX控件和Java Applet只能同客户端对象进行交互。图1显示了构架中对象之间的关系。

图片点击可在新窗口打开查看
图1 胖Web客户端构架中的主要参与者

客户端显示接收的页面时,执行嵌入的脚本,这些脚本通常可以在不同的线程中执行,通过DOM接口与页面内容进行交互。

3、Web传输

Web传输模式除了使用HTTP负责客户端和服务器的通信之外,还可以使用IIOP和 DCOM等协议以支持分布式对象系统。Web页面通过远程对象桩和远程对象传输协议与远程对象服务器通信,由服务器管理远程业务对象的生命周期,向客户端对象提供服务。图2显示了各组件之间的关系。

图片点击可在新窗口打开查看
图2 Web传输构架中的主要参与者


远程对象桩是一个对象,在客户端执行,并与远程对象具有相同的接口。当通过这个对象调用方法时,这些方法被封装起来,使用远程对象传输协议 RMI/DCOM发送到远程对象服务器,服务器解释请求,实例化并调用实际对象实例中的方法。

实际应用中,往往根据业务需要,综合使用上述构架。在我们的研究所管理系统中,综合采用了瘦Web客户端和Web传输构架。客户端使用了JavaScript进行客户端验证,把经过验证的数据提交服务器处理。在数据的后台管理上,采用了Web传输构架,保持客户端与服务器的开放连接,以便进行较长时间的、较复杂的会话。
UML的Web应用扩展

  UML(Unified Modeling Language)是一种通用的可视化建模语言,适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。但在对Web应用进行建模时,它的一些构件不能与标准UML建模元素一一对应,因此必须对UML进行扩展。

UML的三种核心扩展机制包括构造型、标记值和约束。其中最重要的扩展机制是构造型,它不能改变原模型的结构,但可以在模型元素上附加新的语义,通常用“《构造型名》”来表示。约束是模型元素中的语义关系,定义了模型如何组织在一起,通常用一对“{}”之间的字符串表示。标记值是对模型元素特性的扩展,大多数的模型元素都有与之关联的特性,通常用带括号的字符串表示。

1、Web页建模

Web页可能同时包含客户端脚本和服务器端脚本,因此必须分别进行建模。服务器端Web页面一般包含由服务器执行的脚本,每一次被请求时都在服务器上组合,更新业务逻辑状态,返回给浏览器。客户端Web页可能包含数据、表现形式甚至业务逻辑,由浏览器解释执行,并可以与客户端组件相关联,如Java Applet、ActiveX、插件等。两者之间通过定向关系相互关联。这种关联关系的构造型为?build?。

Web应用中的超级链接代表导航路径,用构造型为?link?的关联关系表示。标记值用于定义随超级链接请求传递的参数列表,供服务器端Web页使用。图3描述了Web页之间的关系。

图片点击可在新窗口打开查看
图3 Web页之间的关系


.NET框架中大多数建立的是服务器端Web页,经编译后生成HTML代码传递到客户端浏览器。同时,为了提高效率,对于那些不包含业务逻辑的Web页,在.NET框架中可以直接用HTML元素建立客户端Web页,再建立起与对应的服务器端Web页之间的调用关系。

2、表单建模

表单是Web页的基本输入机制,包括<input>、<select> 和 <textarea>等输入元素,用《Form》构造型进行建模。《Form》没有操作,与之交互的操作是包含表单的Web页的特性。它可以与作为输入控件的 Applet或ActiveX 控件关联,还可以把表单内容提交到服务器进行处理。图4描述了含有表单的客户端Web页与服务器的交互过程。

图片点击可在新窗口打开查看
图4 包含表单的客户端Web页与服务器的交互过程


.NET中每一个页面只有一个表单,包含所有的输入元素,通常表现为服务器端控件或客户端控件,其中服务器端控件由服务器端Web页经过编译后传送到客户端。

3、组件建模

Web应用中的组件分为服务器端组件和客户端组件两类。服务器端较复杂的业务逻辑通常由中间层完成,包括一组封装了所有业务逻辑的已编译好的组件。因此,使用中间层不仅可以提高性能,而且可以共享整个应用的业务功能。客户端Web页中常见的组件是Java Applet和ActiveX,利用它们访问浏览器和客户端的各种资源,实现HTML无法实现的功能。

Web应用扩展定义了《static page》和《dynamic page》两个抽象组件构造型。《static page》实现客户端组件。《dynamic page》的主要任务是在运行时系统的物理文件和逻辑视图中的逻辑表现之间提供映射。图5和图6分别表示这两种组件实现的逻辑视图。

图片点击可在新窗口打开查看
图6 由《static page》实现的客户端组件


图片点击可在新窗口打开查看
图5 由《dynamic page》实现的逻辑视图类


4、框架建模

Web应用扩展定义了构造型《frameset》和《target》以及关联关系构造型《targeted link》来实现对框架的建模。《frameset》直接映射到HTML的<frameset>标记。《target》表示当前Web页引用的其它Web页或框架。《targeted link》是指向另一个Web页的超级链接,但它要在特定目标中才能提供。图7显示了论文管理的框架模型

图片点击可在新窗口打开查看
图7 论文管理框架模型

基于.NET框架的Web应用开发

  .NET框架是一种基于通用语言的编程框架,提供了崭新的编程模型:WebForm模型和WebService模型,提供了完善的基础类库、数据库访问技术ADO.NET和网络开发技术ASP.NET,为Web应用的开发提供了强有力的支持。

1、Web页的实现

.NET框架提供了WebForm开发模型,利用内嵌的各种服务器组件来生成服务器端Web页。它可以包含一些重要的页面元素:用户控件或者自定义控件等。用户控件User Control在.NET框架中是以.ascx为扩展名的文件,可以在多个Web页面中使用,实现代码的重用。自定义控件Custom Control是在.NET中创建或在原有控件上进行修改,添加新功能,以实现特定需求的控件,可以被多个应用程序调用。

2、Web页导航方式

.NET框架中的页面导航方式体现了Web页之间的关系,可以用下列四种方式实现。

(1)超级链接

使用HTML超链接控件或HyperLink控件可以实现页面之间的链接。其中HyperLink服务器控件允许在代码中改变其NavigateUrl属性,从而构造出具体目标可根据应用的当前状态动态变化的超链接。

(2)用Response.Redirect 实现

当Response.Redirect( )方法被调用时,创建HTTP应答,其中指出了状态代码302(表示目标已经改变)和新的目标URL。浏览器接收到该应答,发出一个对新URL的请求。 即重定向操作发生在客户端,涉及到两次与服务器的通信。

(3)用Server.Transfer 实现

这种方法把执行流程从当前的ASPX页面转到同一服务器上的另一个ASPX页面。但新的页面仍使用前一页面创建的应答流。 浏览器中的URL不会改变,重定向完全在服务器端进行。因此,这种方法能够避免不必要的网络通信,获得较好的性能和浏览效果。

(4)用Server.Execute 实现

此方法允许当前的ASPX页面执行同一服务器上的指定ASPX页面,指定的ASPX页面执行完毕后,控制流程返回原页面中发出Server.Execute( )调用的位置,被调用页面能够访问调用页面的表单数据和查询字符串集合。默认情况下,被调用页面的输出追加到当前应答流。但是,Server.Execute( )方法有一个重载的方法,允许通过一个TextWriter对象获取被调用页面的输出,而不是直接追加到输出流,这样,在调用页面中可以方便地调整被调用页面输出结果的位置。

3、数据库操作

数据库处于Web应用的最底层,存放系统数据和部分后台数据库逻辑,如存储过程、触发器等。它与业务逻辑层和用户界面分开,易于管理和维护,执行效率高,安全性能好。

(1)Oracle数据库操作

.NET框架提供了System.Data.OracleClient和System.Data.OleDb 命名空间,实现对Oracle数据库的支持,其中前者的针对性较强,本文的实例中使用了此命名空间。

数据库连接字符串为连接数据库提供必要的参数,通常保存在配置文件web.config中,以简化代码实现和便于部署。

Web应用中对数据库的操作频繁,通常情况下,把对数据库的各种操作集成在一个数据库操作类中,在需要进行数据库操作的地方只需调用此类的各种方法即可。

(2)Oracle数据库中LOB对象的存取

Web应用中的二进制文件、图片、大段文本等在数据库中的存取,通常都要用大对象(LOB)实现。.NET框架提供了OracleLob类来完成对Oracle中BLOB、CLOB、NCLOB等数据类型的操作。Oracle中实现大段文本存入CLOB字段的过程可以表示为:

①用SQL语句向数据库中添加一个CLOB字段为empty_clob( )的记录;

②开始事务,锁定刚加入的记录,把要写入CLOB字段的内容用流或CLOB的Write( )方法写入;

③提交事务,完成对CLOB字段的写入;

Oracle中对CLOB类型数据的读取过程相对简单,不需要对数据库记录进行锁定:

①执行SQL 语句获得OracleDataReader对象;

②用OracleDataReader对象的GetOracleLob( )方法得到要读取的CLOB字段的OracleLob对象;

③用OracleLob对象的Read( )方法或流读出CLOB字段的内容;

结束语

系统建模对软件开发过程相当重要,UML的扩展机制为Web应用的建模提供了必要的支持。.NET框架为Web应用的开发提供了很好的解决方案。本文首先分析了常见的Web应用的构架模式,然后把Web应用的UML建模与基于.NET框架的开发结合起来,提出了对Web应用中的各种对象进行建模的方法,对开发过程中的相关重要问题进行了阐述,并针对现有文献中较少涉及的Oracle数据库的操作提供了详细的解决步骤,希望能起到抛砖引玉的作用。



本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2007/08/27/871586.html,如需转载请自行联系原作者

相关文章
|
2天前
|
编解码 前端开发 JavaScript
.NET_web前端框架_layui_栅格布局
【8月更文挑战第27天】
14 4
|
2天前
|
前端开发 JavaScript API
构建高效Web应用:React与Node.js的完美结合
【8月更文挑战第29天】在当今快速变化的软件开发领域,构建高性能、可扩展的Web应用成为开发者的首要任务。本文将深入探讨如何利用React和Node.js这两大技术栈,打造一个高效且响应迅速的现代Web应用。从前端的用户界面设计到后端的服务逻辑处理,我们将一步步分析这两种技术如何协同工作,提升应用性能,并确保用户体验的流畅性。通过实际代码示例和架构设计的解析,本篇文章旨在为读者提供一套清晰的指南,帮助他们在项目开发中做出更明智的技术选择。
|
3天前
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
18 7
|
3天前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
30 3
|
3天前
|
缓存 Java API
【揭秘】.NET高手不愿透露的秘密:如何让应用瞬间提速?
【8月更文挑战第28天】本文通过对比的方式,介绍了针对 .NET 应用性能瓶颈的优化方法。以一个存在响应延迟和并发处理不足的 Web API 项目为例,从性能分析入手,探讨了使用结构体减少内存分配、异步编程提高吞吐量、EF Core 惰性加载减少数据库访问以及垃圾回收机制优化等多个方面,帮助开发者全面提升 .NET 应用的性能和稳定性。通过具体示例,展示了如何在不同场景下选择最佳实践,以实现更高效的应用体验。
16 3
|
3天前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
14 2
|
3天前
|
前端开发 JavaScript 开发工具
跨域联姻:React.NET——.NET应用与React的完美融合,解锁前后端高效协作新姿势。
【8月更文挑战第28天】探索React.NET,这是将热门前端框架React与强大的.NET后端无缝集成的创新方案。React以其组件化和虚拟DOM技术著称,能构建高性能、可维护的用户界面;.NET则擅长企业级应用开发。React.NET作为桥梁,使.NET应用轻松采用React构建前端,并优化开发流程与性能。通过直接托管React组件,.NET应用简化了部署流程,同时支持服务器端渲染(SSR),提升首屏加载速度与SEO优化。
11 1
|
3天前
|
存储 缓存 安全
.NET 在金融行业的应用:高并发交易系统的构建与优化之路
【8月更文挑战第28天】在金融行业,交易系统需具备高并发处理、低延迟及高稳定性和安全性。利用.NET构建此类系统时,可采用异步编程提升并发能力,优化数据库访问以降低延迟,使用缓存减少数据库访问频率,借助分布式事务确保数据一致性,并加强安全性措施。通过综合优化,满足金融行业的严苛要求。
13 1
|
3天前
|
大数据 开发工具 开发者
从零到英雄:.NET核心技术带你踏上编程之旅,构建首个应用,开启你的数字世界探险!
【8月更文挑战第28天】本文带领读者从零开始,使用强大的.NET平台搭建首个控制台应用。无论你是新手还是希望扩展技能的开发者,都能通过本文逐步掌握.NET的核心技术。从环境搭建到创建项目,再到编写和运行代码,详细步骤助你轻松上手。通过计算两数之和的小项目,你不仅能快速入门,还能为未来开发更复杂的应用奠定基础。希望本文为你的.NET学习之旅开启新篇章!
12 1
|
3天前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
31 1
下一篇
云函数