- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DotNet(Net)下构建高适应性的三层架构
HYPERLINK /rexsp/articles/43815.html DotNet(.Net)下构建高适应性的三层架构
我想所有的企业级系统开发的.Net程序员都和我一样,曾经苦苦挣扎于底层架构的搭建,如何一次性简单快速的搭建出足够前台调用的接口便成为一个欲罢不能的想法。参与了若干系统的开发之后,经过头脑风暴,我尝试着构建了一种简单的架构实现过程,在经过一些尝试后最终构建成功,并实施在我的一个解决方案当中了,现将构建方案与大家分享如下。
写了很久的程序,养成一个习惯,就是坚持用尽量少的代码实现尽量多的事情,所以一般能共用的代码,我就写成共用的,这样基本上就减少了不少的代码量。另外,通过一定的抽象过程,本人已经总结出规律,并成功的开发出一个底层代码自动化工具,基本上我尝试了一下,一个有二十六个表的系统,二十分钟内,我就完成了底层(包括存储过程类)的构建,这个过程如果纯手工的话,我觉得效率高也要一两周吧。
(注:下文所有例举的代码都由自动化工具生成)
我的架构中有PetShop的影子,也有Duwamish的痕迹。
Solution中包含六个Project:
1、??????????? BussinessRules:规则层,主要存放一些公用的规则类,比如对图片的处理类,对Excel的处理类。
2、??????????? Common:数据实体类,与数据库表一一对应,在这一点上,有些人可能说一一对应可能并不怎么行,在我看来,数据实体类的目的就是为了抽象数据表结构的,那么完全可以直接没有逻辑的把数据表抽象出来,应该少考虑点逻辑上的事情。至于你要想同时想对不同实体里的东西进行混合操作,也完全没有必要独立定义出一个新的数据实体的。
3、??????????? DataAccess:数据访问层,与数据实体一一对应,基本上一个数据访问类对应一个数据实体,通过对数据实体属性的控制来实现数据的添加、更新、删除和检索。
4、??????????? Web:这一层当然就是PetShop中的表示层,Duwamish的Web层,主要是与用户交互的。许多逻辑上的事情得在这一层的CodeBehind里来写。
5、??????????? WinTest:这是个WinForm,用来在构建底层结构的时候,对相关方法进行测试的,一般做项目的时候,应该有这样一个测试工程,养成写好一个方法测试一个方法的习惯,这样到后面写Web层的时候,就不用再返回头来改底层了。
6、??????????? SystemFramework:系统参数的初始化及日志的处理工程。
本文的重点放在Common和DataAccess这两个工程上,当然也会包括存储过程部分。我们拿一个表作例子来讲:
1、Table结构:
Table:Product_InfoPK:ProductIDIndex:noneField NameTypeLengthNullDefaultDescriptionProductIDInt4N(‘’)产品IDSerialNumberNvarchar50N(‘’)产品序列号PriceDecimal4N0价格AuthorNvarchar50作者AuthorWebSiteNvarchar100作者网站TypeIDInt4N0产品类型IDOperationSystemInt4N0支持的平台系统ReleaseDateDatetime8NGetDate发布时间HitCountInt4N0点击数DescriptionNtext16产品描述AddTimeDatetime8添加时间这个表比较有代表性,字段类型基本上含概了我们经常使用的几种数据类型:Int、Nvarchar、Decimal、DateTime、Ntext,我比较喜欢带N的数据类型,这样是有利于多语言方面的扩展,语言切换不会有问题。另外对数据表有一个特殊的要求,就是不管怎么样都要加上一个自增长的栏位,否则会产生N多代码,而且添加一个自增长的栏位不影响系统,我只把数据库当成存储数据的地方,不加任何逻辑,逻辑由程序员在开发过程中用程序控制。
2、数据实体类
数据实体类命名与数据表名一致(Product_Info.cs)包含两部分,私有成员和公共属性(两者一一对应)。但会跟数据类型不同而有不同的对应关系:
数字型和时间型的一个字段对应三个公共属性,分别为字段本身、字段的极小值和字段的极大值,后两者主要为了检索设置的。如果是不是上面的两种类型,都归为字符型,字符型除了自身外,会多一个用来模糊搜索的属性。除了上面的所有,还会有一个属性ReturnCount,控制
文档评论(0)