Способы обеспечения совместимости ваших служб WCF с потребителями, не входящими в .NET - PullRequest
3 голосов
/ 27 декабря 2010

Я работаю над добавлением слоя служб WCF в мое существующее приложение .NET. Этот слой будет размещен в IIS и будет использоваться различными пользовательскими интерфейсами, по крайней мере один из которых не будет использовать технологии Microsoft.

Я могу создать веб-сервис в WCF, который используется моим приложением .NET. Тем не менее, я обеспокоен вещами, которые работают в мире .NET, но не с другими технологиями.

Например, простое создание исключения из моей службы WCF прекрасно работает в .NET. Но согласно этой статье следует подходить к обработке исключений с контрактами на отказ, чтобы обеспечить совместимость с пользователями, не являющимися пользователями .NET. Автор отмечает это отсутствие предвидения как Заблуждение .NET-Only World .

Есть ли у кого-нибудь какие-либо высокоуровневые предложения или ссылки на статьи, посвященные взаимодействию между пользователями WCF и не .NET?

Я понимаю, что потенциально работаю против принципа ЯГНИ. Я действительно стараюсь избегать вещей, которые потом будет невероятно трудно преодолеть, когда разработчики не-NET-пользователей сообщат мне о проблемах.

Ответы [ 2 ]

6 голосов
/ 27 декабря 2010
  • использовать любые привязки WCF, которые не начинаются с net - избегать netTcp, netMsmq и т. Д. - это только .NET

  • убедитесь, что вы правильно используете атрибуты DataContract / DataMember, так что параметры ввода и возврата вашего метода легко и приятно сериализуются

  • избегайте любых специфических типов .NET в вашемконтракты данных - не передавайте обратно Exception или что-то в этом роде - вместо этого используйте элементы SOAP (или REST) ​​

  • не используйте такие вещи, как DataSet, DataTable и т. Д. - все они сильно привязаны к .NET

  • . Убедитесь, что вы правильно перехватываете все ошибки на стороне службы - например, путем реализации IErrorHandler - и возвращаетесь обратно.Вместо этого происходит сбой SOAP (если вы используете привязку SOAP) или код ошибки HTTP (для REST) ​​

  • ПРОВЕРЬТЕ свои сервисы с клиентами, отличными от .NET!Запустите на них страницу PHP, кодируйте что-нибудь на Ruby - что угодно - протестируйте и убедитесь, что он работает

2 голосов
/ 27 декабря 2010

Один хороший способ - сделать ваши услуги RESTful.

Из Википедии - Передача репрезентативных состояний (REST) ​​ - это стиль архитектуры программного обеспечения для распределенных гипермедиа систем, таких как WorldWide Web.

Веб-сервисы в стиле REST используют существующие возможности HTTP для предоставления сервисов.Поскольку почти каждая технология создания программного обеспечения может работать с HTTP, вы можете быть уверены, что ваши веб-сервисы могут использоваться любым пользователем, не являющимся DotNet.

Очень хорошим примером сервисов RESTful был бы stackOverflow API.

Вот несколько хороших ссылок, с которых вы можете начать -

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...