0

我有三个项目:

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

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

Web 客户端获取此字符串并将其反序列化回适当的业务对象(引用保存业务对象的项目)

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

我的问题是:

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

任何澄清将不胜感激。

4

1 回答 1

0

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

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

如果业务对象包含一堆您不需要的数据,请不要使用它们。例如,用数百个实体填充网格需要特定于该网格的数据合同。

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

如果您只是要使用数据契约来完全扩展业务对象,请务必使用业务对象。

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

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

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

不是你的情况,而是:如果你正在为数据输入构建富客户端,请使用业务对象。

暂时就这些了,我看看有没有更多的事情发生在我身上。:)

于 2013-04-01T18:31:31.983 回答