首页 文章

在业务层中将[DataContract]标记为类是不是很糟糕? [关闭]

提问于
浏览
2

我需要使用一个表示发送到我的REST WCF服务的客户端请求的类 .

但我想将此请求也传递给业务层中的方法 . (目前它是WCF服务的一部分)

在业务层中将[DataContract]标记为类是不是很糟糕?

4 回答

  • 2

    正如我在评论中所述:

    如果您感觉不好,请引入该类实现的接口,并在业务层中使用该接口 . 请注意,DataContract属性仅仅是序列化引擎的标记 .

  • 0

    我发现这是一个有用的答案 . 基本上你的POCO可以通过 DataContractSerializer 序列化而不添加 [DataContract] 属性 .

    https://stackoverflow.com/a/14185417/1099260

  • 2

    如果另一个选项是将 Contract 几乎复制到另一个“BL类”,只是为了让你对不将DataContracts发送到某个层感觉更好 - 我会说不要 - 发送DataContract .

    此外,“请求”,“命令”和“数据传输对象”不是严格的“外观”对象(或模式) . 您可以在DAL API中使用请求对象(我假设是分层架构),以简化方法签名并启用将来的重构,对吧?那么为什么不在所有图层中使用相同的请求对象呢?

    如果有关于实际DataContract属性的部署问题(我想不出任何问题),那么它就是一个不同的故事 .

  • 0

    如果将来您需要REST WCF客户端请求服务的不同接口,并且您无法控制使用客户端,那么如果您的BL严重依赖于WCF Contract 类,则可能会遇到问题 . 您可能很难在不破坏BL的情况下修改服务接口,或在不破坏客户端界面的情况下修改BL .

    如果上述两种情况都不适合你,我会说@Rahal在评论中说的话(我已经给了他1个人) .

相关问题