如何使您的WCF服务与非.NET使用者兼容

May*_*ayo 3 wcf web-services

我正在努力为我现有的.NET应用程序添加WCF服务层.该层将托管在IIS中,并将被各种UI使用,其中至少有一个不使用Microsoft技术.

我可以在我的.NET应用程序使用的WCF中创建Web服务.但是,我担心在.NET世界中有效的东西,而不是其他技术.

例如,简单地从我的WCF服务中抛出异常在.NET中运行良好.但是根据这篇文章,人们应该使用错误契约处理异常处理,以确保与非.NET使用者的兼容性.作者将这种缺乏远见称为"仅限世界的谬误".

有没有人有任何高级别的建议或链接到涵盖WCF和非.NET消费者之间的互操作性的文章?

我意识到我可能正在反对YAGNI原则.我非常希望避免以后非.NET消费者的开发人员向我报告问题时难以克服的事情.

mar*_*c_s 6

  • 使用任何net- 避免netTcp, netMsmq等开头的WCF绑定- 这些只是.NET

  • 确保充分利用DataContract/DataMember属性,以便您的方法输入和返回参数可以轻松,良好地序列化

  • 避免数据契约中的任何.NET特定类型 - 不要传回Exception类似的东西 - 使用SOAP(或REST)元素代替

  • 不使用之类的东西DataSet,DataTable等等-他们都严重依赖于.NET

  • 确保正确捕获服务端的所有错误 - 例如通过实现IErrorHandler- 并传回SOAP错误(如果您使用的是SOAP绑定)或HTTP错误代码(用于REST)

  • 使用非.NET客户端测试您的服务!针对它们运行PHP页面,用Ruby编写代码 - 无论如何 - 测试它并确保它有效