gpt4 book ai didi

数据协定、共享类和 DTO 的 WCF 最佳实践

转载 作者:行者123 更新时间:2023-12-02 03:09:12 25 4
gpt4 key购买 nike

在破坏我的应用程序之前,我当前的命名空间看起来像这样:

CompanyAbc.Core
CompanyAbc.AppXyz.Web
CompanyAbc.AppXyz.Business

CompanyAbc.Core 命名空间包含我们公司所有应用程序使用的通用代码。一个例子是一个名为“ClientMessage”的类,我们使用它作为容器将消息从一层传送到另一层(例如,在将数据一直保存到数据层时,抽象并支持显示成功或错误消息) UI层)

我们现在正在将 CompanyAbc.AppXyz.Business 制作为 WCF 服务。我的问题是:“共享”(或不共享)这些基础/公共(public)实体的最佳实践是什么?

例如,您会:

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

最佳答案

我建议您在程序集中创建“层次结构组”,以便使其更加简洁并且使用更加直观。例如:(以@learner示例为基础)

ABC.Common (It communicates better the intention)
ABC.Core
ABC.Core.Web
ABC.Core.Windows
ABC.Services.DataContracts
ABC.Services.ServicesContracts

等等...

建立清晰的层次结构可以刺激开发人员使用它,因为它与之前已经部署的程序集相匹配。查看 .NET 程序集以供引用。

关于数据协定、共享类和 DTO 的 WCF 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11677483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com