2009-04-17 10 views
0

私はASP.NET Webサービス(WCFではなく.asmxスタイル)を作成しましたが、今は私のプロトタイプ環境で主なWebメソッドを使用しています。 Webメソッドの1つにいくつかの新しいパラメータを追加する必要がありますが、より重要なことは、WebサービスをColdFusion Webアプリケーションからできるだけ「消耗品」(呼び出し可能)にする必要があることです。私はCF(または他のクライアント呼び出し側)の使用に照らして、Webサービスメソッドのパラメータ型を最適に設計する方法について混乱しています。ColdFusion Webクライアントから簡単に呼び出し可能なASP.NET ASMX Webサービスを作成する

私のプロトタイプは、自分のWebサービスを呼び出す自分のASP.NET 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には、このような引数型でこのサービスを呼び出す際に問題がありますか?)私は文字列は問題ではないと思いますが、すべてのタイプの呼び出し元が使用するwebmethod(およびその型)を設計するためのベストプラクティスは何ですか?

p.s.私はまた、「アウト」のパラメータがありDownloadFileのWebMethod属性があります。

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

を..and私は、これらの出力のColdFusionのの宿泊施設についても同様だろう。前もって感謝します。

+0

単純なhttp投稿は機能しますか?より効率的です。 – Henry

+0

http://livedocs.adobe.com/coldfusion/8/htmldocs/webservices_15.html CFはWSDL xsd:base64Binary標準を受け入れることができるはずです – Henry

+0

これはまだ試しましたか?そして、あなたは何がうまくいくのかを知ることができます。 –

答えて

1

ColdFusion 8を実行していて、.NETコードと同じ物理サーバー上にある場合は、.NET統合を使用する方がよい場合があります。ここで、.NETクラスを記述し、内部でintentiateすることができますCFCまたはJavaオブジェクトのようにCFコードを作成します。

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サービスを利用する必要があります。

ウェブサービスの素晴らしい点は、彼らが言語にとらわれないということです。 MetaDataタイプまたはクラスが定義されているように見えますが、それらのコレクションが入力パラメータとして送信されることを期待しています。最終的に変換されるのは、その配列を表すXMLです。配列の各項目は、文字列、数値、boolなどのコア部分に分解されます...理論的には、は正常に動作しますそれに応じて入力XMLを設計する限りです。

私は最後に.NET Webサービスを作成してからしばらくしていますが、期待されるXML構造(別名WSDL)を見る方法があると確信しています。それを見つけて、答えを得ました。次に、ColdFusionコードの定義に合ったXMLを作成するだけで、すべての設定が完了します。

+0

同じサーバー上で動作する必要がありますか? – Paul