【问题标题】:WCF LayersWCF 层
【发布时间】:2009-05-19 05:45:07
【问题描述】:

我最近开始使用 WCF(是的,我知道我落后了 :-))。问题是我必须如何构建它。

我习惯了 DAL、BL 和表示层。我正在用实体框架替换我的 DAL。

所以到目前为止我有这个

DAL(实体框架)--> BL--> 合同(数据合同消息控制服务合同行为等)--> 服务实现 --> 客户。

问题是在 bl 和将 bl 转换为数据合同(没有更好的词)的合同之间存在一层。

前 DAL.Customer(实体框架)--> BL(规则)--> 转换器(只是转换)--> Contracts.Customer

DAL.Customer(Entity Framework) --> BL (Rules) --> Converter(调用BL并转换。转换器实现服务契约)--> Contracts.Customer.

谢谢

【问题讨论】:

    标签: c# wcf architecture


    【解决方案1】:

    应该有一个薄的“层”,仅仅是因为你并不真的需要 BL 层来理解你的合约,而且你也不想将你的 BL 对象作为合约暴露给世界其他地方。

    当然,您可以这样做。您可以开发作为简单数据传输对象的数据合约。这些将仅包含数据而不包含任何行为,并且会暴露您希望世界看到的数据部分。您的 BL 可以将自身限制为该模型,也可以从它继承以添加特定于 BL 的功能。

    或者,只需要一个 BL 版本的现实和一个“契约”版本的现实,然后在它们之间进行转换。

    【讨论】:

    • 谢谢。我真的不想将我的 bl 暴露给世界,从合同的角度来看,也不需要整个 bl。我认为它们之间的转换听起来是一个可以接受的想法。我仍然在玩让服务实现调用一个调用 bl 并转换然后返回合同版本的层的想法。这个层将实现 servicecontract
    【解决方案2】:

    很多时候,您会发现 BL 和合同类型之间存在相似之处。您可以使用一些快捷方式来帮助您在具有出色AutoMapper 的类型之间进行转换。这些类型的工具可以帮助该层保持“瘦”。

    【讨论】:

    • 谢谢。我会说 80% 的时间 bl 和 datacontract 是相同的。我只是想拆分它,以便将来我可以根据需要进行更改。
    猜你喜欢
    • 2012-06-13
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多