您的位置:首页 > 其它

CodeSmith&NetTiers Step by Step[转]

2009-05-05 11:34 417 查看

CodeSmith&NetTiers Step by Step

主讲&文档撰写:Jacob.HuangŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

文档最后统筹:Jimmy.KeŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

时间:2007-11-07ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

参与人员:Diapers Team & Enterprise Product TeamŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

一 技术背景ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

在Suryani.China的项目中,GenClaims、Warehouse等项目以Microsoft Enterprise Library作为基础的技术架构,包括其中的DataAccess Block、Logger、Exception、Encryption、Cache等等,搭配使用Open Source的MyGeneration作为代码生成器。整体技术架构遵循三层模型,包括Entity包(实体包,与Database一一映射)、Data包(Access to Database,与数据库交互)、Core包(业务逻辑包,对Data包的简单代理以及扩展、事务实现)、Web表现层,其中Entity、Data包、Core包的大部分代码由MyGeneration自动生成,并通过partial class的方式支持自定义扩展。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

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

二 环境安装和配置ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

首先从www.codesmithtools.com 下载最新版本的Code Smith安装文件(Professional版本,有30天的试用期)。Code Smith有两个版本,Standard 和 Profession版,我们使用Profession 版本,可以编辑模板。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

其次从www.nettiers.com 下载最新的Net Tiers包,NetTiers是免费的。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

三 Code Smith Step by StepŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

下载netTiers2.2后,解压到目录,右击选择Excute,打开CodeSmith配置窗口。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

在CodeSmith配置窗口中编辑配置属性,比如数据源、代码输出目录、数据源表和视图等等。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

配置完毕后点击Generate生成工程包和代码,如下图所示,包括一份生成报告report.html。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

CodeSmith的自定义模板支持ASP.NET语法,包括命名空间的引入和属性的读取。可以在模板中定义需要引入的命名空间和CodeSmith配置界面将呈现的属性,如下图所示。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

四 NetTiers Step by StepŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

下图是一个利用NetTiers和CodeSmith生成的解决方案的截图,其中包括Web视图(自动生成的针对单表的维护界面)、Entities实体包、Services业务逻辑包等等。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

利用NetTiers,还可以生成自定义的存储过程、视图,可以在CodeSmith配置界面中配置生成的存储过程的前缀等属性。如下图所示。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

如果要扩展NetTiers框架生成的代码,则可以修改Processor,添加相应的扩展代码。如下图所示。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

五 与现有技术架构的比较ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

与现有的MyGeneration自定义模板相比,利用CodeSmith + NetTiers,架构基本上遵循NetTiers所定制的结构,每次修改数据库表结构后都需要重新生成代码,并将其拷贝到解决方案的相应位置。利用CodeSmith生成的自定义存储过程也是一样。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

另外,NetTiers是一个相对完善的框架,其生成的文件较多,对硬件的要求也相对较高,特别是大型系统。ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ


ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

技术参考ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

参考网站:http://www.cnblogs.com/iCaca/category/80950.html ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

博客园网友的Net Tiers系列学习笔记ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

关于EL的可以查看MSDN的相关WebCastŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/EntLib.aspx ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

CodeSmith官网:http://www.codesmithtools.com ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ

NetTiers官网:http://www.nettiers.com选择了自动上传ŽÂ\C—p¯¤Ñbbs.51aspx.comÆF( ª@úùÎ
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: