WCF - кроссплатформенный вопрос - PullRequest
1 голос
/ 06 июня 2010

У меня есть простой сервис WCF, собственный хостинг и клиент .net. Я генерирую прокси с помощью svcutil. Когда я добавляю прокси к клиенту, он просит добавить System.ServiceModel.dll. Ну, я могу добавить его, так как это тестовый сценарий, и я работаю на платформе .Net.

Однако, предположим, что я использую машину, которая не поддерживает .Net, как эта платформа будет компенсировать System.ServiceModel?

Не могли бы вы пролить свет на это?

РЕДАКТИРОВАТЬ: У меня есть идея. Если я создаю клиент WCF, мне нужно добавить ServiceModel. Чтобы проверить это, я добавил клиента ASMX (Добавить веб-ссылку). Мой сервис mthod не принимает никаких параметров. Но я получаю сообщение об ошибке в клиенте с просьбой ввести int Result, out bool ResultSpecified. Не могли бы вы объяснить, почему?

РЕДАКТИРОВАТЬ: Не могли бы вы указать мне пример - как и что установить true в "DataContractSerializer"

Спасибо

Lijo

Ответы [ 5 ]

2 голосов
/ 06 июня 2010

Странный вопрос. Если клиент не является приложением .NET, ему, очевидно, не понадобится System.ServiceModel. Клиенты могут быть написаны с использованием любой другой библиотеки SOAP на любом языке, используемом приложением.

1 голос
/ 17 февраля 2011

Чтобы устранить необходимость в двух выходных параметрах, которые генерируются в прокси-сервере веб-службы, используйте атрибут [XmlSerializerFormat] в контракте на операцию. После регенерации прокси подпись метода должна соответствовать вашему определению, а не преобразовывать возвращаемый тип в тип данных «Result» и «ResultSpecified», указывающий, присутствует ли возвращаемая переменная.

1 голос
/ 17 июня 2010

Я думаю, что здесь есть две проблемы:

  1. Если вы самостоятельно размещаете службу, но хотите, чтобы клиенты, не созданные с использованием .NET, имели к ней доступ, то, возможно, выследует рассмотреть возможность размещения его в IIS.В качестве альтернативы вам необходимо убедиться, что ваше хостинговое приложение также включает привязки метаданных (MEX), чтобы не .NET-платформы могли получить доступ к WSDL.

  2. Если вы создаете не.NET клиент, тогда вы будете использовать набор инструментов или платформу для этой платформы.В таком случае вы будете использовать различные инструменты для создания прокси для вашего сервиса вместо WSDL.

Надеюсь, это поможет.

1 голос
/ 06 июня 2010

Это компенсирует, выбрасывая исключение. Вам требуется .NET Framework, установленный для запуска приложений .NET. Для кроссплатформенности вы можете взглянуть на Mono .


Извините, я неправильно понял ваш вопрос. Если вы выставите конечную точку, используя basicHttpBinding , то любой клиент, соответствующий WS-I Basic Profile 1.1, сможет без проблем использовать веб-службу. Это наиболее совместимая привязка.

...