WCF Business Objects或DataContracts

时间:2013-04-01 18:07:57

标签: wcf datacontracts

我有三个项目:

  • WCF服务项目(接口和实施)
  • 使用WCF服务的aspx web项目(客户端)
  • 包含我的业务对象(由WCF项目和客户端共享)的类库项目

我在WCF服务实现类文件中有一个方法,它从SQL中检索一个通用的数据列表(引用包含业务对象的项目),使用System.Web.Script.Serialization.JavaScriptSerializer序列化数据并返回结果为字符串。

Web客户端获取此字符串并将其反序列化为相应的业务对象(引用包含业务对象的项目)

这是一个内联网应用程序,我想确保我正确地执行此操作。

我的问题是:

  • 我应该使用DataContracts而不是业务对象吗?不确定何时使用DataContracts以及何时使用业务对象。
  • 如果我使用DataContracts,我不应该使用 System.Web.Script.Serialization.JavaScriptSerializer?

任何澄清都将不胜感激。

1 个答案:

答案 0 :(得分:0)

当然没有一个答案。我认为问题在于你是否想要首先使用业务对象,否则我的第四点几乎涵盖了它。

如果业务对象看起来像数据合同那样,请使用它们,即它们是一堆公共属性,并且不包含子/孙子等的集合。

如果业务对象包含您不需要的大量数据,请不要使用它们。例如,使用数百个实体填充网格,以获取特定于该网格的数据协定。

如果业务对象包含您必须在Web服务中复制的验证逻辑等,请使用它们。

如果您打算使用数据协定来完全膨胀业务对象,请使用业务对象。

如果您想要从非.net代码使用该服务接口,请不要使用业务对象。

如果必须大规模配置序列化,请不要使用业务对象。

如果业务对象需要“知道”它们的位置(Web服务器或应用服务器),请不要使用它们

不是您的情况,但是:如果要构建用于数据输入的富客户端,请使用业务对象。

现在一切都好,我会看看是否还有其他事情发生在我身上。 :)