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

时间:2010-12-27 15:48:37

标签: wcf web-services

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

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

例如,简单地从我的WCF服务中抛出异常在.NET中运行良好。但根据this article,应该使用错误契约来处理异常处理,以确保与非.NET使用者的兼容性。作者将这种缺乏远见标记为 .NET-Only World 的谬误

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

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

2 个答案:

答案 0 :(得分:6)

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

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

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

    < / LI>
  • 不要使用DataSetDataTable等内容 - 它们都与.NET密切相关

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

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

答案 1 :(得分:2)

一种好方法是提供服务RESTful

来自维基百科 - Representational State Transfer (REST)是一种用于分布式超媒体系统(如万维网)的软件架构。

REST样式的Web服务利用HTTP的现有功能来公开服务。由于几乎所有构建软件技术都可以处理HTTP,因此可以确保任何非DotNet消费者都可以使用您的Web服务。

RESTful服务的一个很好的例子是stackOverflow API

以下是一些可以开始的好链接 -

http://www.oracle.com/technetwork/articles/javase/index-137171.html

http://msdn.microsoft.com/en-us/magazine/dd315413.aspx