2012-02-13 129 views
2

我正在研究一个相当直接的多层应用程序(WPF,WCF,EF 4和SQL)。就架构而言,我们计划包括一个“共同”项目,该项目将包括实体和服务合同。WCF N层体系结构

在单独的程序集中拥有实体和服务合同有什么优点/缺点吗?或者将它们放在一起通常很好?

我有兴趣听到别人的意见。

谢谢!

回答

1

在一个单独的程序集中拥有合同,可以让您通过向开发人员提供合同程序集来向不同程序集中的不同实体注入能力,并且可以实施它并为您提供一个可放入其中的dll项目文件夹,并注入到它使用IoC框架像StructureMap不重建,

具有包含实体扳平合同的实现同样的组装合同...

+1

感谢您的回复。如果合同和实体在同一个程序集中,那么它们肯定会紧密结合在一起。 – 2012-02-13 15:51:41

-1

这正是我如何构成的为我设计的电子商务N层应用程序设计。

有两个通用库 - 一个用于DTO和另一个用于接口。

然后客户端和服务器包含这些librarues,服务代理使用常见类型生成。

这里的主要优点是易于编译 - 当您更改接口时,您不必重新创建代理,客户端和服务器会自动更新。

我也有一个实用程序应用程序,其中包含我需要的所有帮助类型的东西。

编辑:对不起,只是重新读你的问题。在我的情况下,我有多个接口库 - 一个用于工作流程库(具有组合的接口),另一个用于服务(正在组成工作流操作的东西)

所以在我的情况下,保持它们的分离是有意义的。

如果你只有一组接口,并且这些接口都使用你的DTO,那么没有理由把它们分成两个库 - 一个就足够了。考虑一下,如果你将来可能需要在更多的接口库之间共享你的DTO,在这种情况下,应该保持DTO从一开始就与接口分离。

1

如果您将RESTful体系结构与其他.NET平台消费者一起使用 - 将Service Contracts放在单独的程序集(Shared)中会很有帮助,以便您可以轻松地与RESTful消费者共享您的操作和数据合同,而不会泄露任何不必要的数据访问组件到您的客户。

我建议您保持数据访问和服务合同隔离出于这个原因。