技术开发 频道

扩展NHibernate为企业级的解决方案


现在干什么?

    如果你在读一篇关于正在兴起的技术的文章,这部分将被称作“进一步研究的方面”。因为那正是这里所描述的,我假设那个仅仅可以应用。这里有一些条目,它们将会被修改以获得更好的灵活性,或者被扩展以获得更大的可用性。这里有一些方法,能帮你补充你的空闲时间。

   • 综合利用Guidance Automation Toolkit,捆扎方法到可装置的基本项目。

   • NHibernate与网络服务整合中,最优方法不多。探索这个地方,至少定义“更好”方法将对NHibernate团体非常有趣。如果你有兴趣学习它,Thomas Erl's Service-Oriented Architecture是一个开始的好地方。

   • 这个结构支持交易,这个交易以HTTP要求开始并结束。一个更理想的方案就是:当要开始交易时,使用属性来定义。在指定方法的结尾,就能开始交易。使用属性在NHibernateSessionManager类型上,能避免一个直接的dependency。一个例子属性就是[Transaction],被放在方法的顶端。而且,如果和不同的数据库工作,属性将包括某种ID指定,数据库通信要求一个交易,例如[Transaction("Primavera")].与Castle Project Automatic Transaction Management facility整合将是一个开始的好地方。

   • 一些开发者抱怨:通过NHibernateSessionModule,使用Open-Session-in-View,为数字资产例如:图像和CSS文件,打开额外的,没有被使用的交易。在article's comments中,将找到一个讨论,后备解决方案。我很有兴趣能听到更进一步的与解决这个临时问题的建议(使用属性开始交易,正如在前面描述的,能解决这个问题) 。

   • 多个数据库执行通过每一个数据库的config文件地址,正确地证明与那一个数据库相似,属于哪个ISession。在web.config和Castle Windsor配置文件中,这样导致了config文件的地址被复制。我喜欢去除这个复制,相反通过一个更简单的ID字符串,或者不需要将字符串传递到DAOs的构造者。

   • 使用被提供的结构,不可能在两个数据库之间(这两个数据库位于不同的服务器上)操作一个单一的交易。可能要综合利用System.Transactions来解决这个问题。

   • A 能为这个企业示例(包括CruiseControl.NET, NAnt (or MSBuild), NDepend, FxCop, SandCastle, NDbUnit, NStatic, 和 FIT/FitNesse.)创建一个模版Continuous Integration配置。 

   
0
相关文章