Любые привязки 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
объект является частью вашего контракта на данные и помечен как таковой)