在我破坏我的应用程序之前,我当前的命名空间看起来像这样:
CompanyAbc.Core
CompanyAbc.AppXyz.Web
CompanyAbc.AppXyz.Business
CompanyAbc.Core 命名空间包含我们公司所有应用程序使用的通用代码。一个例子是一个名为“ClientMessage”的类,我们用它作为容器将消息从一层传送到另一层(例如,在将数据保存到数据层时,抽象出来并支持显示成功或错误消息。 UI层)
我们现在将 CompanyAbc.AppXyz.Business 制作成 WCF 服务。我的问题是:“共享”(或不共享)这些基本/通用实体的最佳做法是什么?
例如,您是否会:
a) 将 [DataContract] 属性直接添加到 CompanyAbc.Core 命名空间中的类,即使它与 WCF 无关。
CompanyAbc.Core.Entities
ClientMessage.cs
或者
b) 创建一个与 CompanyAbc.Core 命名空间完全相同的数据传输对象?
CompanyAbc.Core.Entities
ClientMessage.cs
CompanyAbc.AppXyz.Business.DataContracts
ClientMessageDto.cs
或者
c) 其他选择?
另一个复杂性是我们打算共享这些程序集。但是为了强制解耦而不共享程序集/业务实体,你会全力以赴做这样的事情吗?
CompanyAbc.Core
CompanyAbc.Core.Shared.Entities
ClientMessage.cs
CompanyAbc.AppXyz.Web
CompanyAbc.AppXyz.Web.Entities
ClientMessage.cs --> derives from the Core.Shared, or just duplicate code?
CompanyAbc.AppXyz.Business.Entities
ClientMessage.cs --> derives from the Core.Shared, or just duplicate code?
CompanyAbc.AppXyz.Business.DataContracts
ClientMessageDto.cs