Я - разработчик.NET без опыта coldfusion, но я должен написать код cf для доступа к wcf сервису, который я настроил. У меня есть несколько сервисов WCF, размещаемых в IIS 7 с WsHttpBinding, и я могу использовать сервисы, прекрасные путем добавления сервисных ссылок на клиент.NET и использования клиентских классов.
Это очень просто для разработчика.NET:
var addressClient = new Service.AddressClient();
addressClient.AddressDTO[] addresses = addressClient.GetAddresses();
Ясно, что Visual Studio делает много негласно для установки этих клиентских классов от WSDL.
Я видел, что coldfusion примеры используют cfinvoke для вызова веб-сервисов, но ни один, где они на самом деле настраивают клиентские классы от WSDL и создают их из ответа веб-сервиса.
Так, как что-то вроде этого сделано от coldfusion?
Заранее спасибо!
Проблема с CF заключается в том, что он не позволяет вам иметь дело со сложными объектами. Итак, пока служба ожидает только параметры строк и тому подобное, ваше ОК, но если она хочет сложного вложения объектов, она разваливается.
В основном вам нужно перейти к объектам Axis Java.
Я уже однажды отвечал на этот вопрос здесь:
Вы должны настроить конечную точку для работы в качестве веб-службы .NET. Как только вы это сделаете, вы можете вызвать его, просто используя Createobject в coldfusion. Вот быстрый пример:
<cfscript>
wcf = CreateObject("webservice","http://ws.spreety.com/TvOnline2009.svc?wsdl");
variables.TalkShowImgHtml = wcf.GetGenreTalkShowImg("test@spreety.com");
</cfscript>
<cfoutput>#variables.TalkShowImgHtml#</cfoutput>
другие правы в том, что если ваш веб-сервис возвращает простые типы данных, cf сопоставит их с типами данных cf, и все будет просто. в некоторых случаях вам придется самостоятельно преобразовать сложные типы данных в типы данных cf.
cflib.org имеет некоторую функцию для их обработки, так что вы можете посмотреть там. вот функция для преобразования набора данных .net, возвращаемого веб-сервисом, в запрос cf. надеюсь, это даст вам момент ага:
http://www.cflib.org/index.cfm?event=page.udfbyid&udfid=1580
Adobe действительно имеет очень хороший справочник, подробно описывающий все шаги, необходимые для перехода от кода WSDL к ColdFusion для использования веб-службы:
ColdFusion: использование веб-служб
Если вы используете WsHttpBinding
в WCF, тогда ваша веб-служба должна работать так же, как и в примере (вы можете сравнить свой WSDL с примером WSDL, чтобы понять, как создавать все вручную).