我正在努力为我现有的.NET应用程序添加WCF服务层.该层将托管在IIS中,并将被各种UI使用,其中至少有一个不使用Microsoft技术.
我可以在我的.NET应用程序使用的WCF中创建Web服务.但是,我担心在.NET世界中有效的东西,而不是其他技术.
例如,简单地从我的WCF服务中抛出异常在.NET中运行良好.但是根据这篇文章,人们应该使用错误契约处理异常处理,以确保与非.NET使用者的兼容性.作者将这种缺乏远见称为"仅限世界的谬误".
有没有人有任何高级别的建议或链接到涵盖WCF和非.NET消费者之间的互操作性的文章?
我意识到我可能正在反对YAGNI原则.我非常希望避免以后非.NET消费者的开发人员向我报告问题时难以克服的事情.
使用任何不以net- 避免netTcp, netMsmq等开头的WCF绑定- 这些只是.NET
确保充分利用DataContract/DataMember属性,以便您的方法输入和返回参数可以轻松,良好地序列化
避免数据契约中的任何.NET特定类型 - 不要传回Exception类似的东西 - 使用SOAP(或REST)元素代替
不使用之类的东西DataSet,DataTable等等-他们都严重依赖于.NET
确保正确捕获服务端的所有错误 - 例如通过实现IErrorHandler- 并传回SOAP错误(如果您使用的是SOAP绑定)或HTTP错误代码(用于REST)
使用非.NET客户端测试您的服务!针对它们运行PHP页面,用Ruby编写代码 - 无论如何 - 测试它并确保它有效