帮助.NET开发人员使用coldfusion消费wcf服务

时间:2010-05-20 14:30:53

标签: wcf web-services coldfusion wsdl

我是一名没有冷融经验的.NET开发人员,但我需要编写cf代码来访问我设置的wcf服务。我使用WsHttpBinding在IIS 7中托管了一些WCF服务,并且我可以通过向.NET客户端添加服务引用和使用客户端类来使用这些服务。

对于.NET开发人员来说非常简单:

var addressClient = new Service.AddressClient();
addressClient.AddressDTO[] addresses = addressClient.GetAddresses();

很明显,visual studio在幕后做了很多工作来从WSDL设置这些客户端类。

我见过使用cfinvoke调用Web服务的coldfusion示例,但没有一个他们实际从WSDL设置客户端类并从Web服务响应创建它们。

那么,如何通过coldfusion完成这样的事情?

提前致谢!

4 个答案:

答案 0 :(得分:2)

其他人是正确的,因为如果您的webservice返回简单的数据类型,cf会将它们映射到cf数据类型,一切都很简单。在某些情况下,你必须自己将复杂的数据类型转换为cf数据类型。

cflib.org有一些功能来处理这些,所以你可能想看看那里。这是一个将从Web服务返回的.net数据集转换为cf查询的函数。希望这会给你一个啊哈时刻:

http://www.cflib.org/index.cfm?event=page.udfbyid&udfid=1580

答案 1 :(得分:1)

Adob​​e实际上有一个非常好的参考,详细说明了从WSDL到ColdFusion代码使用Web服务所需的所有步骤:

ColdFusion: Consuming Web Services

如果您在WCF中使用WsHttpBinding,那么您的Web服务应该像示例中的那样工作(您可以将WSDL与示例WSDL进行比较,以了解如何通过手)。

答案 2 :(得分:1)

CF的问题在于,它不能很好地处理复杂的对象。因此,只要服务只是期望字符串的索引,这样你的确定,但如果它想要一个复杂的对象嵌套它就会崩溃。

基本上你必须开始使用Axis Java对象。

我在此之前回答了一次:

Web service is expecting a DataSet object, how can I provide that via ColdFusion or in raw XML?

答案 3 :(得分:0)

您必须将端点配置为充当.NET Web服务。一旦你这样做,你可以通过在coldfusion中使用Createobject来调用它。这是一个简单的例子:

<cfscript> 
  wcf = CreateObject("webservice","http://ws.spreety.com/TvOnline2009.svc?wsdl"); 
  variables.TalkShowImgHtml = wcf.GetGenreTalkShowImg("test@spreety.com"); 
</cfscript> 
<cfoutput>#variables.TalkShowImgHtml#</cfoutput>