2012-03-15 4 views
3

私は何が間違っているのか分かりませんが、私は2つのサービスWCFともう1つはASMXサービスです。なぜWCFはASMXと同じように動作しませんか?

私はasmxバージョンで行ったのと同じ方法で二重配列を呼び出そうとしています。ここで

は、2つのサービスのイメージである:

enter image description here

私はそのメソッドを呼び出すことができることに修正を得たが、私はArrayOfDoubleが同じように表示されない理由を知りたいです私のserviceref2として私のserviceref1?

これは、WCFのバージョンです:

namespace WcfSum 
{ 
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. 
    [ServiceContract] 
    public interface SumListWCF 
    { 

     [OperationContract] 
     string CalculateSum(List<double> listDouble); 
    } 
} 

namespace WcfSum 
{ 
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together. 
    public class SumList : SumListWCF 
    { 
     public string CalculateSum(List<double> listDouble) 
     { 
      return listDouble.Sum().ToString(); 
     } 
    } 
} 

これはASMXバージョンである:

namespace CalculateWebServiceSum 
{ 
    /// <summary> 
    /// Summary description for Service1 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class SumList : System.Web.Services.WebService 
    { 
     [WebMethod] 
     public string CalculateSum(List<double> listDouble) 
     { 
      return listDouble.Sum().ToString(); 

      //return listDouble.Select(n => (double)n).ToString(); 
     } 
    } 
} 

前の投稿はここにあった:これは修正を提供するが、理由を説明しません

WCF array of doubles not called successfullyそれは同じように動作しません。それとも同じように行動する方法があれば。私は何かを根本的に欠いているように感じるのですか?

EDIT

P.sこれらは単なるローカルで実行されています。

+0

WCFサービスについての汚い小さな秘密があります。私が知っている現実世界の誰も選択肢がなければ、誰もそれを使用しないような痛みです。旧式のASMXを作成し、VS2010でサービス参照を追加するときは、「Web参照の追加」に進みます。 –

+2

WCFサービスはASMXサービスとは異なります。なぜあなたは彼らが違うのに驚いていますか? – Stilgar

+3

私が知っている人の多くは、「現実の世界」でWCFを使用していますが、私は大騒ぎが何であるか分かりません。私はWCFがマイクロソフトのサポートと改善を継続している可能性が最も高いので、WCFを支持します。 http://keithelder.net/2008/10/17/WCF-vs-ASMX-WebServices/ – Kekoa

答えて

4

List<double>のようなものをシリアル化する方法を指定するSOAPまたはWSDL標準はありません。 ASMXは、明らかにXMLスキーマ内にcomplexTypeを作成してdoubleの配列を表しています。

WCFはASMXよりはるかに優れています。 "Add Service Reference"を使うと、あなたの二倍の配列のような繰り返し要素をどのように扱うかを決めることができます。 List<T>などのように配列として扱うように選択することができます。

WCFを従来の技術であるASMXの制限に制限することには負の値があります。

0

genericリスト<>パラメータを使用しています。これは、汎用コレクションをサポートしていない言語との相互運用性のために、asmxおよびwcfではサポートされていません。 thesequestionsも参照してください。

このquestionには生成されたArrayOfIntが記述されているため、ArrayOf *型名はジェネリック型を扱う一般的な解決策である可能性があります。

関連する問題