![]() |
1
6
我们的团队刚刚花了好几个月的时间来讨论这个设计点,所以我有很多链接要分享;-) 简短回答: 你“应该”从你的nhibernate类转换成一个域模型。 长回答: 我认为这个问题的答案是原则性的。如果你 曾经 要实现互操作,您应该 不 使用数据集作为DTO( I love Hanselman's post on this )我不是说这从来都不是一个好主意,很明显人们已经成功了。只要知道你在偷工减料,这是一个冒险的提议。 如果您完全控制了将数据推送到的类,那么您可以构建一个很好的域模型,并将NHibernate数据映射到这些类中。您很可能会遇到严重的问题,因为ilist<>(它是一个<bag>映射到的)不可序列化。您必须编写自己的序列化程序,或者使用类似的 NetDataContractSerializer 但是您会失去互操作性。 您将需要度量构建一些包装类所涉及的工作量,以及它们之间的转换,但是这样您就可以完全灵活地处理域模型的外观。然后,你可以做一些事情(如我们所做的),比如为你的NHibernate地图和对象生成代码。然后,您的数据契约作为数据的抽象,正如它们应该的那样。 另外,你可能想看看 ADO.NET Data Services 这是一种公开数据的RESTful方法,此时,这似乎是公开数据的最具互操作性的选择。 |
![]() |
2
1
您不希望直接公开您的域模型,而是在域到达进程边界时将其映射到某种消息。你可以利用NHibernate为你做映射工作。在这种情况下,您将有两个映射,一个用于域模型,另一个用于轻量消息。 |
![]() |
3
0
我在这方面没有直接的经验,但我以前通过WCF发送过数据集,这很好。我认为在WCF上使用nhibernet作为数据对象的最大问题是缺乏互操作性(在使用数据集时也是如此)。客户不仅必须使用.NET,还必须使用NHibernate。这违背了SOA原则,但是如果您知道 无疑 如果您不打算重用这个组件,那么就没有理由不这样做。 至少值得一试。 |
![]() |
Ehsan Akbar · 当请求被激发时,WCF请求时间会增加 7 年前 |
![]() |
Gans · 具有多操作合约的WCF Rest服务 7 年前 |
![]() |
Moelgaard · NLog中的IIS应用程序名称。配置 7 年前 |
![]() |
Kerwen · WCF服务调用异步函数 7 年前 |