您的位置:首页 > 其它

设计 .NET 应用程序

2007-04-05 17:30 246 查看
升级到Microsoft.NETPaulD.SheriffPDSA,Inc.2002年4月摘要:本文概要介绍.NET应用程序中的各种典型物理结构之间的区别,这些结构已被证明是很有用的。针对每种结构介绍了其适用方案、实现方式和优缺点。本文同时介绍了两层、三层和N层应用程序。注意:
本文所介绍的应用程序设计问题在MSDN®的BuildingDistributedApplicationswith.NET(英文)部分中进行了更深入的讨论。

目标

了解Microsoft®.NET应用程序的典型结构。了解在每种结构内进行开发的优缺点。

前提条件

熟悉.NET开发(包括Web开发和桌面开发)。熟悉编程概念(包括类和属性)。熟悉各种结构(包括多层和多服务器结构)。目录两层应用程序结构
使用XMLWebService的三层应用程序
使用.NETRemoting的三层应用程序
逻辑N层应用程序
使用XMLWebService的N层应用程序
其他N层应用程序技术
迁移VisualBasic6.0的N层应用程序
小结

两层应用程序结构

典型的两层应用程序是使用ADO.NET直接与数据库服务器(如MicrosoftSQLServer™)进行通信的客户端应用程序(参见图1)。除ADO.NET外,在客户端应用程序和数据库之间没有任何其他层。有关ADO.NET的详细信息,请参阅.NET框架文档、本系列的其他文章或使用MSDN搜索引擎。
图1:两层应用程序包括客户端应用程序和数据存储(如MicrosoftSQLServer)

何时使用两层结构

两层应用程序适用于没有或只有少量窗体的小型应用程序。对于使用本文中介绍的其他N层技术的应用程序,其原型也可算是两层应用程序。但是,两层应用程序不太适用于企业环境,因为开发和维护的时间及成本不好控制。

典型的实现方式

开发两层应用程序时可以采用多种技术。所有技术均使用ADO.NET、一个客户端界面(如桌面或基于Web的应用程序)和一个数据库(如SQLServer)。要使用两层应用程序结构,可以采用以下方式:使用数据绑定技术将ADO.NET数据集直接与控件连接。编写代码以访问ADO.NET对象,从而手动将数据加载到用户界面的控件中。使用上述两种技术的组合。使用上述任何技术直接在窗体上编写业务规则代码。

优点

两层应用程序具有以下优点:因为可以使用数据绑定将ADO.NET数据集直接与用于构建用户界面的很多控件连接,所以开发工作就变得简单而快捷。这有助于迅速建立并运行应用程序的基本功能。只需查看窗体便可以浏览应用程序的全部代码,而无须同时查看窗体和另一个组件。

缺点

两层应用程序开发方法具有以下缺点:所有业务规则均包含在前端代码中。因而,如果需要更改业务规则,则必须更新全部客户端。除非能够进行自动更新,否则这种维护工作将十分繁琐。当然,如果使用SQLServer,则可以将某些业务规则放到存储过程中,从而减少维护的时间和成本。尽管SQL可以在数据库结构和应用程序的其他部分之间提供某种程度的精简,但字段名称通常还是在源代码或控件属性中硬编码的。如果更改字段名称,则必须查找和替换应用程序中所有该字段的名称。如果使用了数据绑定,还必须检查所有窗体并更改属性。很多代码(如SQL语句和业务规则)常常在应用程序中重复出现,这是因为不同的窗体使用了某些相同的表。这使得此类应用程序的维护非常困难,因为如果需要更改表或字段的名称,则必须在多个位置进行更改,同时还需要在多个位置进行额外的回归测试。如果数据源发生变化,则对用于将数据加载到数据集的代码的更改将更加困难。例如,如果原来使用文本文件存储数据,然后又希望转换到SQLServer,其访问方式是截然不同的。此外,要将数据加载到应用程序的数据集,还有很多地方都需要更改代码。

使用XMLWebService的三层应用程序

另一种设计方式是使用XMLWebservice,将数据库的访问单独分给另一个组件,该组件将把数据返回到前端应用程序。图2显示了这种设计方式。有关使用XMLWebservices开发三层应用程序的详细信息,请使用MSDN搜索引擎。
图2:使用XMLWebservice将数据库层与前端代码分离

何时使用此技术

使用XMLWebservice的三层应用程序适用于基于Web的应用程序或MicrosoftWindows®应用程序。如果需要桌面应用程序的丰富功能,而用户连接自多个不同的位置,并通过HTTP界面访问数据,则很适合使用此技术。

典型的实现方式

要创建三层/XMLWebservice应用程序,通常采用以下开发技术:所有SQL驻留在XMLWebservice中。在服务器上构建数据集,并将其作为XML流返回到客户端,它们在这里又可以重新被构建为数据集。可以将从XMLWebservice返回的数据集直接绑定到窗体的控件中。可以使用从XMLWebservice返回的数据集手动将数据加载到窗体的各种控件中。直接在窗体上编写所有业务规则的代码。

优点

使用XMLWebservice的三层应用程序具有以下优点:因为可以使用数据绑定将ADO.NET数据集直接与用于构建用户界面的很多控件连接,所以开发工作就变得简单而快捷。这有助于迅速建立并运行应用程序的基本功能。用户可以从能连接到Internet(或Intranet)的任何地方运行应用程序。数据库访问被单独分给自己的组件,这样就无需在前端代码中嵌入SQL。连接信息只保留在XMLWebservice上,同样减少了客户端计算机的维护工作。可以在某个中心位置更新数据库访问层。如果对此层进行简单的代码更改,则无需重新向客户端分发组件。

缺点

此设计的缺点与典型的两层应用程序的缺点基本相同,因为它并没有分离业务规则,而只是分离了数据层。此外,表中的列名称也没有被提取到类中(将在下一节中介绍)。所有业务规则均包含在前端代码中。因而,如果需要更改业务规则,则必须更新全部客户端。除非能够进行自动更新,否则这种维护工作将十分繁琐。当然,如果使用SQLServer,则可以将某些业务规则放到存储过程中,从而减少维护的时间和成本。所有字段名称均在源代码或控件属性中硬编码。如果更改字段名称,则必须查找和替换应用程序中所有该字段的名称。如果使用了数据绑定,还必须检查所有窗体并更改属性。通过HTTP界面进行访问比直接连接数据库要慢。如果用户无法访问Internet(或Intranet),则无法使用该应用程序。

使用.NETRemoting的三层应用程序

这种类型的应用程序结构与使用XMLWebservice的三层应用程序几乎完全相同。唯一的区别是使用.NETRemoting代替XMLWebservice来包装数据访问层。图3显示了这种设计方式。有关.NETRemoting的详细信息,请参阅本系列的其他文章或使用MSDN搜索引擎。
图3:在LAN环境中,可以使用.NETRemoting来包装数据访问层

何时使用三层.NETRemoting技术

使用.NETRemoting的三层应用程序适用于必须在LAN中的计算机之间分布的应用程序。这可能是出于业务原因,或者考虑到所涉及的工作成本,采用网络呼叫比较合理。

典型的实现方式

要创建这种应用程序,通常采用以下开发技术:所有SQL驻留在通过Remoting服务调用的组件中。在服务器上构建数据集,并将其作为XML流返回到客户端,它们在这里又可以重新被构建为数据集。将从Remoting组件返回的数据集直接绑定到窗体的控件中。使用从Remoting组件返回的数据集手动将数据加载到窗体的不同控件中。直接在窗体上编写所有业务规则的代码。

优点

使用.NETRemoting的三层应用程序与使用XMLWebservice的三层应用程序具有相同的基本优点。因为可以使用数据绑定将ADO.NET数据集直接与用于创建用户界面的很多控件连接,所以编写三层应用程序就变得简单而快捷。这有助于迅速建立并运行应用程序的基本功能。用户可以从能连接到LAN或WAN的任何地方运行应用程序。数据库访问被单独分给另一个组件,这样就无需在前端代码中嵌入SQL。可以在某个中心位置更新数据库访问层。如果在此组件中进行简单的代码更改,则无需重新向客户端分发组件。注意:
所有N层结构都具有此优点。

缺点

这种三层设计的缺点与使用XMLWebservice的三层设计的缺点相同。所有业务规则均包含在前端代码中。因而,如果需要更改业务规则,则必须更新全部客户端。除非能够进行自动更新,否则这种维护工作将十分繁琐。当然,如果使用SQLServer,则可以将某些业务规则放到存储过程中,从而减少维护的时间和成本。所有字段名称均在源代码或控件属性中硬编码。如果更改字段名称,则必须查找和替换应用程序中所有该字段的名称。如果使用了数据绑定,还必须检查所有窗体并更改属性。通过网络从一个组件向另一个组件传输数据比直接连接数据库要慢。在Intranet方案中,.NETRemoting的性能比XMLWebservice要好。而在Internet方案中,一般不使用.NETRemoting。建立这种应用程序比建立两层应用程序或使用XMLWebservice的应用程序要复杂一些。

逻辑N层应用程序

使用.NET创建应用程序的最好方法是将所有逻辑进程分为不同的类。在典型的业务应用程序中,这通常包含业务规则组件、数据层组件和使用这些组件的前端代码。图4显示了这一方法。有关设计N层应用程序的详细信息,请参阅本系列的其他文章或使用MSDN搜索引擎。
图4:将业务进程分解为不同的类,从而使应用程序更易于创建和维护

何时使用N层结构

逻辑N层开发策略适用于所有类型的应用程序。无论是小型、中型、大型应用程序,还是桌面或Web应用程序,效果都很好。

典型的实现方式

要创建这种应用程序,通常采用以下开发技术:使用Windows窗体或Web窗体创建前端用户界面。使用单独的类库项目创建业务规则组件。使用单独的类库项目创建数据层组件。此数据层使用类来包装对各个表的访问。应当使用类型化数据集;它们提供了灵活的数据集类,并且为表中的每个列提供了严格的类型检查功能。

优点

逻辑N层应用程序具有以下优点:将业务规则集中到易于创建、使用和重用的组件中,从而方便了开发和维护。提供了高级语言以开发业务规则,代替使用存储过程和有限的SQL语言来检查业务规则。将数据访问集中到组件中,从而减少了应用程序中的重复代码,每个需要访问特定表的窗体都使用相同的组件。如果使用类型化数据集,则可以使用智能感知功能来查询列名称,而不必记住它们。集中式数据访问例程有助于维护工作,因为对任何数据访问例程的更改都只需进行一次即可。可以随时将组件分离到不同的物理计算机上。这种灵活性使代码具有更好的可缩放性和集中性。

缺点

逻辑N层应用程序只有两个较大的缺点:开发时间稍长,因为必须构建单独的组件。需要跟踪的组件会多一些。这使其略显复杂,对于编程新手来说可能不太好理解。

使用XMLWebService的N层应用程序

图5显示了如何进行逻辑N层应用程序设计并将其分布于多台计算机的示例。在此图中,可以看到使用了XMLWebservice来访问数据层。类型化数据集通过HTTP层返回到业务规则层。然后,客户端应用程序可以将该数据集用于用户界面的数据显示。
图5:将业务进程分离到单独的计算机中以利于部署和维护

何时使用此技术

如果需要桌面应用程序的丰富功能,而用户可能连接自很多远程位置,并且需要通过HTTP界面来获取数据,那么就可以采用这种N层XMLWebservice应用程序设计。将业务规则保留在客户端上有利于网络畅通,但如果这些规则更改频繁,则会增加一些维护更新工作。由于.NET可以复制新的DLL而无需注册,所以这些问题已经不象在以前的技术中那样严重。这种方案也适用于基于Web的应用程序,其中由一台Web服务器提供数据,而由另一台Web服务器上的Web应用程序显示此数据。

典型的实现方式

要创建这种应用程序,通常采用以下开发技术:这些技术与逻辑N层应用程序中的技术相同。使用Windows窗体或Web窗体创建前端用户界面。使用单独的类库项目创建业务规则组件。使用单独的类库项目创建数据层组件。此数据层使用类来包装对各个表的访问。应当使用类型化数据集;它们提供了灵活的数据集类,并且为表中的每个列提供了严格的类型检查功能。

优点

使用XMLWebservice的N层应用程序具有多个优点,其中很多与逻辑N层应用程序相同。将业务规则集中到易于创建、使用和重用的组件中,从而方便了开发和维护。提供了高级语言以开发业务规则,代替使用存储过程和有限的SQL语言来检查业务规则。将数据访问集中到组件中,从而减少了应用程序中的重复代码,每个需要访问特定表的窗体都使用相同的组件。如果使用类型化数据集,则可以使用智能感知功能来查询列名称,而不必记住它们。集中式数据访问例程有助于维护工作,因为对任何数据访问例程的更改都只需进行一次即可。可以随时将组件分离到不同的物理计算机上。这种灵活性使代码具有更好的可缩放性和集中性。其他优点:集中式数据访问层。其他优点:应用程序的可扩展性-可以添加Web领域以处理用户对数据库的请求的大量负载。其他优点:用户可以通过Internet进行连接,但仍从桌面或基于Web的应用程序访问数据。

缺点

使用XMLWebservice的N层应用程序开发方法也有一些缺点。其中大部分与使用逻辑N层应用程序开发方案的缺点相同。开发时间稍长,因为必须构建单独的组件。需要跟踪的组件会多一些。这使其略显复杂,对于编程新手来说可能不太好理解。如果XMLWebservice不能正常工作,该应用程序将无法使用。

其他N层应用程序技术

当然,可以采用很多不同的技术来创建N层应用程序。例如,可以使用.NETRemoting在客户端层和业务规则层之间进行通信,如图6所示。
图6:可以组合使用.NETRemoting和XMLWebservices,为应用程序提供最佳的可缩放性和可维护性使用N层技术开发应用程序后,还可以采用多种方法对其进行配置。可以组合使用.NET中的任何可用方法来分离应用程序的各层。

迁移VisualBasic6.0的N层应用程序

程序员在以前版本的MicrosoftVisualBasic®中使用N层技术已经有很多年了。如果有现成的COM组件,则可以很容易地为这些组件上加上.NET包装。之后,便可以获得如图7所示的结构。有关在.NET中使用COM组件的详细信息,请参阅本系列的其他文章或使用MSDNWeb站点中的搜索引擎。
图7:使用.NET可以方便地建立原有COM组件的接口

何时使用VisualBasic迁移技术

如果具有大量的COM组件代码,并且这些组件已经包含了您的业务规则和数据访问例程,则适合使用这种技术。因为可以利用很多现有代码,从而降低进入.NET框架的成本。

典型的实现方式

要创建这种应用程序,通常采用以下开发技术:使用Windows窗体或Web窗体创建前端用户界面。设置对原有COMDLL的引用。Microsoft.NET自动为此DLL创建一个.NET包装,因此可以象对任何.NET组件那样访问其属性和方法。如果从该DLL中返回任何ADO记录集,则可以将它们转换为数据集,这是绑定到.NET控件的最简单的方法。

优点

在COM接口外加上.NET包装,可以在使用现有代码的同时充分利用.NET的新功能,从而缩短开发周期。

缺点

在.NET中使用COM包装具有以下缺点:其性能不如完全在.NET中编写的代码。可能需要额外的代码以将ADO记录集转换为ADO.NET数据集。

小结

在开发.NET应用程序时,可以采用的结构形式几乎是无限的。易于创建和维护的结构才是最好的。当然,还要考虑其他设计目标,包括可缩放性、可靠性和可管理性等。在MSDN中,您可以找到许多相关主题的白皮书。

关于作者

PaulD.Sheriff是PDSA,Inc.的所有者。该公司位于南加利福尼亚州,是一家自定义软件开发和咨询公司。Paul是南加利福尼亚州的MSDN地区总监,著有《PaulSheriffTeachesVisualBasic》一书,并为KeystoneLearningSystems制作了至少72套关于VisualBasic、SQLServer、.NET和Web开发的视频教材,Paul还是《ASP.NETJumpstart》(英文)的作者之一。有关详细信息,请访问PDSA,Inc.的Web站点www.pdsa.com。

关于InformantCommunicationsGroup

InformantCommunicationsGroup,Inc.(www.informant.com)是一家专注于信息技术行业的多媒体公司。它成立于1990年,主要从事于软件开发出版物、会议、目录发布和Web站点。ICG在美国和英国均设有办事处,目前已成为享有盛誉的媒体和营销内容集成商,满足IT人员对高质量技术信息不断增长的需求。©2002InformantCommunicationsGroup和MicrosoftCorporation版权所有。技术编辑:PDSA,Inc.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐