频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

VB.NET分层开发的几点心得(1)

作者: 出处:AcNow.Net  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-12-08 01:04
关 键 词:.NET  VB  分层
阅读提示:本文作者有幸参与了一个基于三层架构的VB.NET的项目,也有了些心得,下面就开发过程中遇到的一些问题谈谈自己的一点看法。

随着微软.NET开发平台的推出,无疑给无数的VB开发者带来了福音,无继承,丑陋的错误捕捉,无对象池,不能进行底层开发,这些都成为过去,随之而来的是完全的面向OO特性,丰富的类库,支持XML,当有人更钟情于C#,C++开发者更是对此不屑一顾,但软件开发中更重要的是一种思想和原理,语言只是一种工具。

我有幸参与了一个基于三层架构的VB.NET的项目,也有了些心得,下面就开发过程中遇到的一些问题谈谈自己的一点看法。以下是架构图:

一、数据实体层(Entity)的实现

我们首先需要解决的是数据的表示方式的问题,在VB开发中,相信大家都遇到过如何有效的构造数据实体的问题,单个类,集合类,集合类中如何操作单个类,如何用填充数据实体,这些问题解决起来都不是很容易,也有很多方法来实现,对于集合类的实现,可以用数组,可以用集合对象,也可以用字典对象,当然实例化数据实体也有很多方法,象最常见的工厂模式,这里就不讨论了,我在项目中是用TYPED-DATASET对象来作为数据实体,个人觉得有以下好处:

1. 数据绑定。可以直接和控件绑定,尤其是网格控件,在VB中是很困难的,除非增加个属性来存放Recordset,这样一来又要多增加方法来初始化Recordset,并且增加了实例化和封送处理的成本。

2. 代码自动生成。少写很多代码,尤其是当表中字段很多的时候,并且自动提供了序列化功能。

3. 集合类。Typed-Dataset本身就是个集合类,提供添加,删除,修改,查找单个类的方法。

当然也有缺点,任何事物都无法十全十美,比如很难从中派生出子类,实例化成本高等。

在自动生成Typed-Dataset时,需要做些改动使Entity更好的符合OO的特性。

A、自动生成的表对象和行对象是以DataTable和Row结尾的,这可以通过加如以下代码来更改:

在XML文件中的<xml:schema 节点加入:xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:codegen="urn:schemas-microsoft-com:xml-msprop" 命名空间

B、重写 <xs:choice maxOccurs="unbounded"> 节点后的<xs:element name="Tables”> 节点 <xs:element name="Tables" codegen:typedName="Table" codegen:typedPlural="Tables">

C、由于自动生成的代码遇到某个字段为NULL时默认是报错,如想不报错,需在每个Element节点定义中加入: nillable="true" codegen:nullValue="_null" 或nillable="true" codegen:nullValue="false" 或nillable="true" codegen:nullValue="1900-01-01T00:00:00"

D、Entity的粒度。在考虑实体对象的设计时,“对象的粒度”是一个需要仔细考虑的问题,个人喜欢粗粒度的Entity,这样可以减少与数据库的往返次数,当然也不是包含所有的表,这样效率不高,比如Order,只需要Order 和OrderDetail 表,Product,SalesPerson就不需要了,当然也可以用从dataset继承的自定义类来作为Entity,但个人觉得一般情况下没必要,毕竟MS的typed-dataset功能更多,而且实现起来也比较复杂。

二、数据服务层的实现(Data Service)

使用MS的Data Access Application Block,效果还可以,大家可以到MS站点下载。

三、数据访问层(Data Access)

所有的数据操作采用传统的存储过程(SP)实现的,但由于Entity是个集合,包含多行,因此要循环调用SP以实现批量操作,个人建议提供两个方法,一个是操作一行(常用),一个是操作多行(不常用)。

四、业务层(Business Logics)

需要完成的功能是各种业务规则和逻辑的实现,从SevicedComponent继承,这是界面层唯一需要清楚了解的层,也是以后系统扩展和经常需要变更的地方,因此业务层的每个模块都有个基类,Module1BaseClass,例如单据模块,结构如下:

Abstract Class OrderBase
Public Function AddNew()
Public Function Delete
Public Function GetOrderByID
Public Function Update
End class
Public Class SaleOrder Inherits OrderBase
……………
End Class
Public Class PurchaseOrder Inherits OrderBase
………
End Class
Public Class MorePurchaseOrder Inherits PurchaseOrder
………
End Class

这样一来业务层的扩展性就强了,这就是OO的好处啊,如果在VB中,就很难实现了,当然通过Interface也可以间接的实现,但不方便,毕竟VB6不是面向OO的语言,是面向Interface的。


共2页: 1 [2] 下一页
【内容导航】
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看52473次)
·UML类图详解 (查看46951次)
·Java编程开发手册 (查看25172次)
·UML统一建模语言 (查看24155次)
·C#技术开发指南 (查看22515次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (304个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (217个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (569个好)
·.NET开发手册 (251个好)
·PB开发教程 (209个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有