Служба WCF для нескольких конечных точек - PullRequest
1 голос
/ 05 декабря 2010

Как мне обеспечить, чтобы к моей службе WCF можно было обращаться с любого другого языка (Java, PHP, независимо от того, что использует iOS и т. Д.)?

Я сохранил все как httpbinding плюс не использовал никакой.net ролей / аутентификация членства для клиентов.Но есть некоторые вещи, в которых я не уверен.Например, можно ли вернуть общий список, который читается этими другими языками?

Ответы [ 2 ]

1 голос
/ 05 декабря 2010

Любые привязки WCF, которые не начинаются с net (netTcp, netMsmq и т. Д.), Должны быть в порядке - они предназначены для взаимодействия.

Самым базовым является basicHttpBinding, который в значительной степени является простым HTTP - к нему ничего добавить нельзя. Вы должны иметь возможность вызывать это с любого языка сценариев (PHP и т. Д.).

Более продвинутая привязка - wsHttpBinding, которая реализует множество стандартов WS- * и может вызываться из других языков, где сетевой стек может обрабатывать WS- * - такие вещи, как Java и т. Д.

И еще есть webHttpBinding, который предоставляет ваш сервис не через SOAP, а через конечную точку REST. Это должно вызываться практически на любом языке, на любом устройстве, в любом месте.

И, конечно, вы получаете наилучшее покрытие, если вы предоставляете несколько конечных точек своей службы, предлагая различные варианты выбора любому, кто пытается вам позвонить. Все это делается просто в конфиге - не требуется изменение кода для поддержки нескольких конечных точек, нескольких привязок и т. Д.

Что касается списков и прочего: обмены WCF сериализованные сообщения - в основном XML - который управляется XML-схемой. Комбинация WSDL и XSD полностью совместима и может быть понята многими другими языками.

A List<T> в .NET превратится в массив в вашей структуре XML, и это полностью совместимо - не волнуйтесь. Клиент может просто получить массив вместо списка, но это не проблема.

Единственная проблема заключается в том, что вы не можете действительно смоделировать универсальный список , поскольку схема XML не поддерживает универсальные шаблоны - вам необходимо четко указать, что именно вы отправляете обратно. List<T> не будет работать - List<Customer> будет работать (если ваш Customer объект является частью вашего контракта на данные и помечен как таковой)

1 голос
/ 05 декабря 2010

Вы не можете быть на 100% уверены, если не имеете никакого контроля над клиентской технологией, которая используется для потребления ваших услуг. Но вы можете быть очень уверены, что ваша веб-служба (WSDL) соответствует базовому профилю WS-I v1.1. Этот стандарт очень широко поддерживается и является зрелым. Вы можете использовать превосходный SoapUI инструмент для тестирования, чтобы проверить ваш WSDL на соответствие.

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