我正在寻找我的网站的新架构,并想知道将NHibernate与Web服务核心配对是一个好主意。我想做的是让我的web服务成为我业务的核心,从站点前端到我写的实用工具。我试图让我的所有用户界面完全不知道除了我的服务API之外的所有内容。
在一个简单的稻草人体验中,我遇到了串行我的Iesi ISets的问题......这让我完全重新思考这个策略。
我知道我可以开发一个核心库(dll)并在我的每个应用程序中引用它,但是在至少6个应用程序中维护该dll的版本似乎会让我感到很痛苦。
使用NHibernate,这两种方法的专家和内容是什么?
答案 0 :(得分:4)
我认为将NHibernate和webservices一起使用没有问题 - 我认为将实体本身发送到“另一方”并不是一个好主意。
更好的方法是使用为服务制作的一组DTO - 然后您将不会遇到类似于序列化未知类型等问题。
您可以使用AutoMapper之类的库来执行从实体到DTO的映射。
有很多关于此的内容,其中一些内容:
http://martinfowler.com/bliki/FirstLaw.html
http://ayende.com/Blog/archive/2009/05/14/the-stripper-pattern.aspx
http://elegantcode.com/2008/04/27/dtos-or-serialized-domain-entities/
DTOs vs Serializing Persisted Entities
作为自己服务的旁注,你可以设计明智地使用Davy Brion描述的方法:http://davybrion.com/blog/2009/11/requestresponse-service-layer-series/
答案 1 :(得分:2)
我不知道NHibernate,但是想提醒你,你应该使用WCF进行新的Web服务开发,除非你被困在过去(.NET 2.0)。 Microsoft现在认为ASMX Web服务是“遗留技术”,您可以想象这意味着什么。