随笔-6  评论-17  文章-0  trackbacks-0

本期茶话会主题:CodeSmith&NetTiers Step by Step

主讲&文档撰写:Jacob.Huang

文档最后统筹:Jimmy.Ke

时间:2007-11-07

参与人员:Diapers Team & Enterprise Product Team

技术背景

Suryani.China的项目中,GenClaimsWarehouse等项目以Microsoft Enterprise Library作为基础的技术架构,包括其中的DataAccess BlockLoggerExceptionEncryptionCache等等,搭配使用Open SourceMyGeneration作为代码生成器。整体技术架构遵循三层模型,包括Entity包(实体包,与Database一一映射)、Data包(Access to Database,与数据库交互)、Core包(业务逻辑包,对Data包的简单代理以及扩展、事务实现)、Web表现层,其中EntityData包、Core包的大部分代码由MyGeneration自动生成,并通过partial class的方式支持自定义扩展。

与这种存储过程和数据驱动的架构类似的解决方案是:CodeSmith + NetTiers组合。CodeSmith作为一个著名的代码生成工具,同样提供了基于模板生成C#VB.NETTSQL等语言代码的功能,并且支持ASP.NET语法的自定义模板;NetTiers则提供了一套成熟的基于CodeSmith的模板,在Microsoft Enterprise Library的基础上对其进行了封装和再组织,帮助开发者快速开发遵循三层架构的代码,以期在一定基础上统一并简化对EL的操作,避免重复的工作,减轻开发者的负担。本文是对本次茶话会的总结和扩展,对CodeSmithNetTiers做一个简单的介绍。Jacol.Huang也在茶话会上分享了他的开发经验。

环境安装和配置

首先从www.codesmithtools.com 下载最新版本的Code Smith安装文件(Professional版本,有30天的试用期)。Code Smith有两个版本,Standard Profession版,我们使用Profession 版本,可以编辑模板。

其次从www.nettiers.com 下载最新的Net Tiers包,NetTiers是免费的。

Code Smith Step by Step

下载netTiers2.2后,解压到目录,右击选择Excute,打开CodeSmith配置窗口。


CodeSmith配置窗口中编辑配置属性,比如数据源、代码输出目录、数据源表和视图等等。

配置完毕后点击Generate生成工程包和代码,如下图所示,包括一份生成报告report.html

CodeSmith的自定义模板支持ASP.NET语法,包括命名空间的引入和属性的读取。可以在模板中定义需要引入的命名空间和CodeSmith配置界面将呈现的属性,如下图所示。


NetTiers Step by Step

下图是一个利用NetTiersCodeSmith生成的解决方案的截图,其中包括Web视图(自动生成的针对单表的维护界面)、Entities实体包、Services业务逻辑包等等。

利用NetTiers,还可以生成自定义的存储过程、视图,可以在CodeSmith配置界面中配置生成的存储过程的前缀等属性。如下图所示。

如果要扩展NetTiers框架生成的代码,则可以修改Processor,添加相应的扩展代码。如下图所示。

与现有技术架构的比较

与现有的MyGeneration自定义模板相比,利用CodeSmith + NetTiers,架构基本上遵循NetTiers所定制的结构,每次修改数据库表结构后都需要重新生成代码,并将其拷贝到解决方案的相应位置。利用CodeSmith生成的自定义存储过程也是一样。

另外,NetTiers是一个相对完善的框架,其生成的文件较多,对硬件的要求也相对较高,特别是大型系统。

技术参考

参考网站:http://www.cnblogs.com/iCaca/category/80950.html

博客园网友的Net Tiers系列学习笔记

关于EL的可以查看MSDN的相关WebCast

http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/EntLib.aspx

CodeSmith官网:http://www.codesmithtools.com

NetTiers官网:http://www.nettiers.com

15分钟快速构建数据访问层:http://onlytiancai.cnblogs.com/archive/2006/02/16/331700.html

posted on 2007-11-27 12:58 Suryani 阅读(2011) 评论(6)  编辑 收藏 所属分类: 技术茶话会

评论:
#1楼  2007-11-27 13:19 | Soul Huang      
对多表操作就有点郁闷了。。。
  回复  引用  查看    
#2楼  2007-11-27 14:05 | Jeffrey Zhao      
用的是VS 2003呢。
这个和现在的一些ORM框架相比,优势在哪里呢?
  回复  引用  查看    
#3楼  2007-11-27 14:11 | Enzo      
请问这个茶话会在哪举行的?
  回复  引用  查看    
#4楼  2007-11-27 14:17 | arcticfox [未注册用户]
这个东西我以前也使用过,太复杂了,要定义扩展麻烦的很

还有很多不完善的地方,
  回复  引用    
#5楼  2007-11-27 15:35 | Yoshow      
在小型的开发上 我觉得用CodeSmith还是很爽的..
  回复  引用  查看    
#6楼  2007-11-27 17:45 | 奇怪 [未注册用户]
年初的时候第一次见到它兴奋的要死,研究了两个多星期,后来才发现是个没有用的东西,死codesmith用来展现codesmith强大功能的,nh比他强大的多,扩展也费时事,大家看看算了,千万不要把时间放在那上面
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-11-30 10:48 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: