WCF N层体系结构
本文关键字:体系结构 WCF | 更新日期: 2023-09-27 18:24:14
我正在开发一个相当直接的多层应用程序(WPF、WCF、EF4和SQL)。就架构而言,我们计划包括一个单一的"通用"项目,该项目将包括实体和服务合同。
将实体和服务合同放在单独的程序集中有什么优点/缺点吗?还是让他们在一起通常很好?
我很想听听别人的意见。
谢谢!
将Contracts放在一个单独的程序集中,通过将Contracts程序集提供给开发人员,可以将其注入到不同程序集中的不同实体,开发人员会实现它,并为您提供一个dll,您可以将其放在项目文件夹中,并使用IoC框架(如StructureMap)注入到该文件夹中,而无需重建
让包含实体的同一程序集中的契约将契约与实现联系起来。。。
如果您与其他.NET平台使用者一起使用RESTful体系结构,将服务契约放在一个单独的程序集(Shared)中会很有帮助,这样您就可以轻松地与RESTful使用者共享操作和数据契约,而不会向客户端暴露任何不必要的数据访问组件。
出于这个原因,我建议您将数据访问和服务合同隔离开来。
这正是我设计的电子商务n层应用程序的设计结构。
有两个通用库,一个用于DTO,另一个用于接口。
然后客户端和服务器包括这些库,并且使用公共类型生成服务代理。
这里的主要优势是易于编译——当您更改insterface时,不必重新创建代理,客户端和服务器会自动更新。
我还有一个实用程序应用程序,里面包含了我需要的所有助手类型的东西。
编辑:对不起,只是重读你的问题。在我的案例中,我有多个接口库——一个用于工作流库(具有组合的接口),另一个用于服务(组成工作流操作的东西)
所以就我而言,把他们分开是有意义的。
如果你只有一组接口,并且这些接口都使用了你的DTO,那么就没有理由把它们分成两个库——一个就足够了。不过,如果您将来可能需要在更多接口库之间共享DTO,请考虑,在这种情况下,请从一开始就将DTO与接口分离。