2009-04-17 58 views
0

我写了一个ASP.NET Web服务调用容易(的.asmx风格,而不是WCF)和我有主Web方法在我的原型环境现在的工作。现在,我需要为其中一个webmethods添加几个新参数,但更重要的是,我需要使我的web服务尽可能从ColdFusion Web应用程序中“消费”(可调用)。根据CF(或其他客户端调用者)的使用情况,我对如何最好地设计webservice方法的参数类型感到困惑。制作一个ASP.NET ASMX Web服务通过ColdFusion的Web客户端

我的原型依靠我自己的ASP.NET web页面调用我的web服务上;这里是如何为我服务代理类是从.aspx页名为:

BrokerASMXProxy.Svc.FileService brokerService = new BrokerASMXProxy.Svc.FileService(); 
recNumber = brokerService.UploadFile(binData, fileNameOnly, kvData); 

这里是将WebMethod的签名:

[WebMethod] 
    public string UploadFile(byte[] incomingArray 
     , string FileName 
     , MetaData[] metaDataArray) 

我对字节数组已经有点担心和MetaData数组(ColdFusion会有这样的参数类型调用这个服务的问题?)。我假设字符串不是问题,但是设计webmethods(及其类型)以供所有类型的调用者使用的最佳做法是什么?

p.s.我也有一个具有“走出去”的参数DownloadFile的WebMethod:

[WebMethod] 
    public bool DownloadFile(string recNumString, out byte[] docContents, out string returnFiletype) 

..和我不知道类似的关于这些输出的ColdFusion的住宿。先谢谢你。

+0

做一个简单的http post工作?它更高效。 – Henry 2009-04-17 22:51:42

+0

http://livedocs.adobe.com/coldfusion/8/htmldocs/webservices_15.html CF应该能够接受WSDL XSD:base64Binary的标准 – Henry 2009-04-17 23:13:11

回答

1

如果你正在运行ColdFusion 8,和碰巧有相同的物理服务器的.NET代码,你可能会更好使用.NET集成,在那里你可以写一个.NET类和内intantiate它您的CF代码就好像它是CFC或Java对象一样。

Here's a good example (with tons more on the same blog) of writing a .NET class that's used in CFML code

但是,如果你的.NET和CF应用服务器不在同一台机器上,你可能有一个Web服务去为你原来想象。

关于Web服务的好处是它们是语言不可知的。它看起来像是定义了一个MetaData类型或类,并且您期望将这些集合作为输入参数发送。最终将转化为的是一些表示该数组的XML,并且数组中的每个项目都将分解为其核心部分(字符串,数字,布尔等)......理论上,它应该只是工作 ,只要你相应地设计你的输入XML。

这已经有一段时间,因为我最后创建.NET Web服务,但我敢肯定有一个方式来看待预期的XML结构(又名WSDL)。找到那个,你已经得到了你的答案。然后,您只需要创建符合ColdFusion代码定义的XML,并完成设置。