WCF - кроссплатформенный вопрос
У меня есть простой сервис WCF, собственный хостинг и клиент.net. Я генерирую прокси с помощью svcutil. Когда я добавляю прокси к клиенту, он просит добавить System.ServiceModel.dll. Ну, я могу добавить его, так как это тестовый сценарий, и я работаю на платформе.Net.
Однако предположим, что я использую машину, которая не поддерживает.Net, как эта платформа будет компенсировать System.ServiceModel?
Не могли бы вы пролить свет на это?
РЕДАКТИРОВАТЬ: У меня есть идея. Если я создаю клиент WCF, мне нужно добавить ServiceModel. Чтобы проверить это, я добавил клиента ASMX (Добавить веб-ссылку). Мой сервис mthod не принимает никаких параметров. Но я получаю сообщение об ошибке в клиенте с просьбой ввести int Result, out bool ResultSpecified. Не могли бы вы объяснить, почему?
РЕДАКТИРОВАТЬ: Не могли бы вы указать мне пример - как и что установить true в "DataContractSerializer"
Спасибо
Lijo
5 ответов
Странный вопрос. Если клиент не является приложением.NET, ему, очевидно, не понадобится System.ServiceModel
, Клиенты могут быть написаны с использованием любой другой библиотеки SOAP на любом языке, используемом приложением.
Чтобы устранить необходимость в двух выходных параметрах, которые генерируются в прокси-сервере веб-службы, используйте [XmlSerializerFormat]
атрибут в договоре операции. После регенерации прокси подпись метода должна соответствовать вашему определению, а не преобразовывать возвращаемый тип в тип данных "Result" и "ResultSpecified", указывающий, присутствует ли возвращаемая переменная.
Это компенсирует, бросая исключение. Для запуска приложений.NET вам необходимо установить.NET Framework. Для кроссплатформенности вы можете взглянуть на Mono.
Извините, я неправильно понял ваш вопрос. Если вы выставите конечную точку, используя basicHttpBinding, любой клиент, который соответствует WS-I Basic Profile 1.1, сможет без проблем использовать веб-сервис. Это наиболее совместимая связь.
Я думаю, что здесь есть две проблемы:
Если вы самостоятельно размещаете службу, но хотите, чтобы клиенты, не созданные с использованием.NET, имели к ней доступ, то, возможно, вам следует рассмотреть возможность размещения ее в IIS. В качестве альтернативы вам необходимо убедиться, что ваше хостинговое приложение также содержит привязки метаданных (MEX), чтобы не.NET-платформы могли получить доступ к WSDL.
Если вы создаете не.NET-клиент, вы бы вместо этого использовали набор инструментов или платформу для этой платформы. В таком случае вы будете использовать различные инструменты для создания прокси для вашего сервиса вместо WSDL.
Надеюсь, это поможет.
Какие привязки вы используете?!
См. Также Является ли платформа WCF независимой?