我有三个项目:
-
WCF服务项目(接口和实现)
-
使用WCF服务的aspx Web项目(客户端)
-
类库项目,它包含我的业务对象(由WCF项目和客户端共享)
我在WCF服务实现类文件中有一个方法,它从SQL检索数据的通用列表(引用包含业务对象的项目),使用System.Web.Script.Serialization.JavaScriptSerializer序列化数据并将结果返回为串 .
Web客户端获取此字符串并将其反序列化为相应的业务对象(引用包含业务对象的项目)
这是一个内联网应用程序,我想确保我正确地这样做 .
我的问题是:
-
我应该使用DataContracts而不是业务对象吗?不确定何时使用DataContracts以及何时使用业务对象 .
-
如果我使用DataContracts,我应该不使用System.Web.Script.Serialization.JavaScriptSerializer吗?
任何澄清将不胜感激 .
1 回答
当然没有一个答案 . 我认为问题在于你是否想要首先使用业务对象,否则我的第四点几乎涵盖了它 .
如果业务对象看起来像数据 Contract 那么会使用它们,即它们是一堆公共属性,并且不包含子/孙子等的集合 .
如果业务对象包含您不需要的大量数据,请不要使用它们 . 例如,使用数百个实体填充网格,以获取特定于该网格的数据协定 .
如果业务对象包含您必须在Web服务中复制的验证逻辑等,请使用它们 .
如果您打算使用数据协定来完全膨胀业务对象,请使用业务对象 .
如果您想要从非.net代码使用该服务接口,请不要使用业务对象 .
如果必须大规模配置其序列化,请不要使用业务对象 .
如果业务对象需要“知道”它们的位置(Web服务器或应用服务器),请不要使用它们
不是您的情况,但是:如果要构建用于数据输入的富客户端,请使用业务对象 .
这就是现在,我会看到是否有更多的事情发生在我身上 . :)