WCF N层架构

时间:2012-02-13 15:24:59

标签: c# wcf entity-framework architecture

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

在单独的程序集中使用实体和服务合同是否有任何优点/缺点?或者将它们放在一起通常是好的吗?

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

谢谢!

3 个答案:

答案 0 :(得分:1)

将Contracts放在一个单独的程序集中,通过向开发人员提供Contracts程序集,为您提供了注入不同程序集中不同实体的能力的优势,他将实现它并为您提供一个可以放入其中的dll项目文件夹并使用像StructureMap这样的IoC框架注入它而无需重建,

让包含实体的同一程序集中的合同将合同绑定到实现...

答案 1 :(得分:1)

如果您将RESTful架构与其他.NET平台使用者一起使用 - 将服务合同放在单独的程序集(共享)中会很有帮助,这样您就可以轻松地与RESTful使用者共享您的操作和数据合同,而不会暴露任何不必要的数据访问客户的组件。

我建议你保持数据访问和服务合同的隔离。

答案 2 :(得分:-1)

这正是我为我设计的电子商务n层应用程序设计的结构。

有两个常见的库 - 一个用于DTO,另一个用于接口。

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

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

我还有一个实用程序应用程序,其中包含我需要的所有助手类型。

编辑:对不起,请重新阅读您的问题。在我的例子中,我有多个接口库 - 一个用于工作流库(带有组合接口),另一个用于服务(用于组成工作流操作的东西)

所以在我的情况下保持它们是分开的。

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