在WCF服务中创建私有数据成员是否是一个好主意,如果这是一种很好的做法,那么当我们初始化这些成员变量时,因为客户端只调用服务的方法。在WCF服务中创建私有数据成员
0
A
回答
1
仅将数据合约用作DTO,并将其扩展到处理数据的代码中。
事情是这样的:
[DataContract]
public class WCFDataClass
{
[DataMember]
public String Foo { get; set; }
}
// Your class, used for internal processing
class MyWCFDataClass : WCFDataClass
{
public String MyFoo { get; set; }
public String DoFoo()
{
return this.Foo + this.MyFoo;
}
}
0
如果您有任何的互操作性的兴趣,我相信dont't它一般是一个很好的做法。
首先创建合同(操作合同,消息合同,数据合同等),以明确的方式指定哪些是支持的,哪些不支持。它明确地公开指定这些事情。当你开始宣布私人成员参与公共合同时,很快就会变得非常混乱。程序员在你发现后面的事情之后会产生问题。
您可能试图将逻辑封装在数据合同中,这不是数据合同的目的。正如@CodeCaster所建议的那样,这种操作应该在数据契约类之外进行。即使简单的事情,如构造函数填充默认值可能会有问题。这种逻辑也应该在DataContract类之外执行。
此外,当您声明私有成员为[DataMember]
时,您依赖于数据协定序列化程序的非标准实现细节 - 事实上它可以读取/写入不是公有的成员 - 即DataConstractSerializer(至少在.NET平台上)可以做你在自己的代码中无法做到的事情。你依靠'魔术'。虽然这个'魔术'有助于DataConstractSerializer提供惊人的性能,但我认为您不应该依赖于它的实现细节。例如,您会发现DataContract类无法与Silverlight应用程序共享,因为在该平台上,DataConstractSerializer无法读取/写入非公共成员。
然而,就像所有'惯例'一样,你必须考虑你的情况。如果互操作性和可维护性不是要求,则上述大部分内容不相关,可以忽略。 :)
相关问题
- 1. 在WCF服务中迭代数据成员
- 2. WCF服务创建
- 3. 创建WCF服务
- 4. WCF服务创建
- 5. C#:WCF服务与IXmlSerializable的成员变成数据集
- 6. Azure中的“私有”TCP WCF服务?
- 7. 在服务器上创建具有成员资格数据库的ASP.NET网站
- 8. 私有成员
- 9. WCF/WCF数据服务/ WCF RIA服务
- 10. 访问私有数据成员
- 11. 私有数据成员访问
- 12. 复制私有数据成员
- 13. 访问私有数据成员
- 14. 多态性与私有数据成员
- 15. C++私有函数成员
- 16. 我如何添加页眉/数据成员的所有DataContracts在WCF服务?
- 17. WCF数据服务:如何避免__metadata成员
- 18. WCF Web服务数据成员默认为null
- 19. 确保与ASP.NET成员资格的ADO.net WCF数据服务
- 20. 平WCF数据服务或WCF服务
- 21. 创建WCF服务网站
- 22. 创建WCF把REST服务
- 23. 创建动态WCF服务?
- 24. 创建使用WCF服务
- 25. 如何创建一个安全/私人WCF服务
- 26. 私人WCF Web服务
- 27. WCF服务,WCF RIA服务和WCF数据服务的区别
- 28. Gson如何在私有成员数据中填充值?
- 29. WCF数据服务
- 30. 在远程服务器上创建成员资格数据库(ASPNETDB)?