通常来说,企业库是建立在.NET 2.0 的基础上,使用后续版本的企业库也不需要改变任何代码。不需要将引用更新到新的程序集,也不需要在配置文件中指明程序集的正确版本。
这个版本4.1的企业库可以和以前版本的企业库同时安装,你可以将使用新版本的应用程序和使用旧版本的应用程序一起部署。也你可以一次性的将现有应用的企业库应用升级到新版本。
如果你选择并行使用不同版本的企业库,你一定要将他们部署在不同的文件夹。在任何情况下,不能将不同版本的企业库程序集混合在一起。例如,你不能将4.0的Data Access相关程序集和3.0的Caching相关程序集放在一个目录。
可以在应用项目下面的AssemblyInfo.cs在存在不同版本的程序集信息。这样就可以通过强命名的方式,并行使用GAC中的不同版本程序集。
1、部分迁移
应用中的每个程序集只能引用一个版本的企业库,但是多个程序集可以引用多个版本的企业库。例如,你的应用有两个程序集,原来都是用企业库3.0,现在可以将一个程序集迁移到使用4.0,保留另外一个对3.0的引用。这就是说你可以逐步迁移,一次一次的替换。尽管支持分步骤的迁移,但是实现起来可能是复杂的;所以,不推荐这种做法。
注意:企业库的配置界面是根据企业库的版本定制的,所以在配置不同版本的企业库的时候,请使用不能版本下面的配置程序。
二、企业库的扩展指导
企业库可以作为自定义类库的基础,你可以利用每一个功能模块的扩展点,提供新的支持。
你也可以修改企业库的源代码,组成新的功能。扩展的时候可以遵循下面的指导。
可以通过三种方式扩展企业库。你可以写自定义的provider,可以修改现有功能模块的源代码,可以写一个新的功能模块。如果你要扩展企业库,可以参考下面的建议:
1、方法暴露
一个功能模块应该提供公用的API来暴露自己的方法,API应该独立于内部实现。开发者应该不需要理解模块的设计和实现,就可以高效的使用模块提供的即开即用功能。
无论什么时候,API应该为为特殊的功能提供通用的解决方案。使用配置界面设置值,而不是使用代码设置,可能对特殊的情况和用户很有用,例如数据库的名称,可以使用的缓存数量等。
2、扩展和自定义功能模块
一个功能模块应该提供扩展点给开发者,使得开发者可以根据自己的需要裁剪功能模块。最常用的扩展点就是允许开发者使用自己的provider。例如,一个管理在数据库中存储数据的功能模块,应该允许开发者很容易的添加不同类型的数据库。
开发者应该可以不修改功能模块的源代码,就可以扩展功能模块。为了实现这些,你的扩展点应该包括公共基类或者是接口。开发者可以扩展基类或者实现接口,然后通过修改配置文件来扩展功能模块。通过这种方式,不需要修改或者重新编译功能模块。开发者会发现扩展功能模块很有意思,很好组织,很容易理解,同时应该遵守Microsoft patters & practices的指导。
当提供扩展的时候,也需要考虑给易用性带来的影响。大量的扩展点,可能会给功能模块的配置和使用带来很大的困难。
一些开发者更喜欢自定义的代码,意味着他们可能会修改源代码,而不是使用扩展点。提供这种功能,模块设计应该提供下面的指导。
代码风格和命名规范都应该和.NET类库保持一致,这方面可以查看MSDN的Design Guidelines for Class Library Developers。有一个这方面的代码检查工具,叫做FxCop,这个工具可以检查代码是否和微软的类库设计建议保持一致。
3、包括patterns & practices
有一点很重要,需要记住,企业库只是Microsoft patterns & practices的一小部分。一个功能模块应该包含patterns & practices的相关指导。
4、包含性能仪表
一个功能模块应该包含性能仪表,使得开发者,测试者和系统管理员都可以监测功能模块的运行行为和性能。仪表的数量依赖于功能模块的方法,需要足够的仪表提供给开发人员、测试人员和管理员,使他们可以可以获取足够的信息,保证功能模块正在像设计的时候那样运行,并且性能在可接受的范围之内。
5、使用松耦合
如果一个企业库功能模块需要其他的模块来完成工作,他们之间依赖应该是松耦合的,方便开发者可以用自己的实现来替换他们。如果有可能,使用插件模型的方式。分离和一个provider的代码依赖。开发者可以在需要的时候换成一个不同的provider。
三、企业库的修改指导
企业库被设计成可以在任何应用中使用,提供通用的工具类和方法。使用扩展点,你可以调整企业库来满足任何特殊的需要。但是,如果你想要在功能模块中添加新的feature,你可以对源代码进行一些修改。在这种情况下,可以参考下面的建议:
未完待续。。。。。。。。。。。。。。。。。。
【Blog】http://virusswb.cnblogs.com/
【MSN】[email protected]
【说明】转载请标明出处,谢谢