Вызов веб-сервиса из vbscript> option? - PullRequest
2 голосов
/ 27 февраля 2012

для проекта нам нужно вызвать некоторые веб-сервисы из vbscript. Это выполнимо, но требует сборки всего фрагмента XML вручную. Я избалован .NET, поэтому я хочу сделать это лучше.

Существует возможность создания COM-компонента и вызова его из vbscript, но, к сожалению, для этого также требуется регистрация COM-компонента на клиенте, а у нас этого нет.

Еще одна вещь, о которой я подумал, - это создание консольного приложения, которое обрабатывает вызовы и исключения веб-службы и тому подобное. Проблема здесь в том, что мне нужно вернуть строку в vbcode, где consoleapp может вернуть только код завершения и ничего более (насколько я знаю). Поскольку это общий сценарий, я также не могу писать в текстовый файл, так как это вызовет проблемы в многопользовательском сценарии.

Итак, я подумал, есть ли какие-то варианты, которые я пропустил и должен рассмотреть? Или в другом случае: какой вариант вы, ребята, выберете и почему?

Редактировать: стоит упомянуть; веб-сервис мой и сервер, на котором он работает. Он будет защищен SSL и авторизацией, чтобы никто другой, кроме наших клиентов, не мог его использовать. Я настроил его как службу WCF, но она должна быть построена, чтобы я мог ее изменить (либо тип службы, либо тип привязки).

1 Ответ

3 голосов
/ 27 февраля 2012

Ответ будет действительно зависеть от вашего точного сценария. Например, если у вас есть контроль над веб-службой, вы можете предоставить конечную точку netTcpBinding, а затем использовать ее непосредственно из vbscript.

Вот хорошая статья , в которой показано, как добиться этого шаг за шагом. В основном ваш клиентский код может выглядеть так:

Dim addr
addr = "service:mexAddress=""net.tcp://localhost:7891/Test/WcfService1/Service1/Mex"","
addr = addr + "address=""net.tcp://localhost:7891/Test/WcfService1/Service1/"","
addr = addr + "contract=""IWcfService1"", contractNamespace=""http://tempuri.org/"","
addr = addr + "binding=""NetTcpBinding_IWcfService1"", bindingNamespace=""http://tempuri.org/"""

Dim service1
Set service1 = GetObject(addr)
wscript.echo service1.GetData(123)

Служба WCF может быть размещена в WAS в IIS 7.0+, которая позволяет использовать netTcpBinding, или может быть размещена в качестве службы Windows, например.

Еще одна возможность, если у вас есть контроль над сервисом, - представить его как REST, который легче использовать. Вы можете выбрать JSON и XML, которые могут все еще требовать синтаксического анализа на клиенте, но, по крайней мере, это сделает вещи чище.

А если вы привязаны к SOAP, то рекомендуется использовать MSXML2.ServerXMLHTTP.6.0, как показано в этого ответа , и создавать конверты вручную.

Элемент управления MSSOAP.soapClient, поставляемый с Windows XP, теперь устарел, даже если он позволял достичь именно того, что вы искали, с помощью службы SOAP.

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