2017-02-03 17 views
0

SilverlightでWCFサービスを作成して使用したいと考えています。サービスはこのようになりますWCFのSilverlightアプリケーションでオブジェクトをシリアル化/逆シリアル化する必要はありますか?

namespace SilverlightWithWCFService.Web 
{ 
    [DataContract] 
    public class Customer 
    { 
     [DataMember] 
     public string CustomerName { get; set; } 
     [DataMember] 
     public string CompanyName { get; set; } 
     [DataMember] 
     public string ContactName { get; set; } 
    } 
} 

::私は、データベースからこのモデルを返すサービスを作成している私のSilverlightアプリケーションで

namespace SilverlightWithWCFService.Web 
{ 
    [ServiceContract(Namespace = "")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class SampleService 
    { 

     [OperationContract] 
     public List<Customer> CustomerList() 
     { 
      var custList = new List<Customer>(); 

      // populate custList 

      return custList; 
      } 
     } 
    } 
} 

、私はサービス参照を追加しました。このメソッドは、サービス操作を呼び出します。

public Page() 
{ 
    InitializeComponent(); 
    SampleServiceClient client = new SampleServiceClient(); 
    client.CustomerListCompleted += new EventHandler<CustomerListCompletedEventArgs>(client_CustomerListCompleted); 
    client.CustomerListAsync(); 
} 

void client_CustomerListCompleted(object sender, CustomerListCompletedEventArgs e) 
{ 
    CustomerGrid.ItemsSource = e.Result; 
} 

私の質問は次のとおりです。SilverlightがWCFとどのように機能するのかわかりません。 WCF側で何かをシリアル化し、クライアント側で戻り値を逆シリアル化する必要がありますか?その場合、どのコードが欠落していますか? (どこ?)

UPDATE:

私はいくつかのオンラインquestionsに基づいて考えます。完了したイベントコードに返されたe.Resultを逆シリアル化する必要がありますか?

+0

_ "WCF側で何かをシリアル化して、クライアント側で戻り値をデシリアライズする必要がありますか?" _ "もしそうなら、どのコードが欠けていますか?(どこ?)" _ - あなたの質問では、問題文がありません。 – CodeCaster

+0

@CodeCaster、編集に感謝します。 – Bigeyes

+0

よろしくお願いいたします。あなたは今あなたが持っている実際の問題を追加してくださいできますか? – CodeCaster

答えて

1

WCF側で何かをシリアル化し、クライアント側で戻り値を逆シリアル化する必要がありますか?

いいえ、あなたがWebサービスを使用すると、基礎となるコードがすべてを行います。

Silverlightでハングアップしないでください。 Silverlightをコンソールアプリケーションと同じものと考えてください。 Webサービスを消費するためにコンソールアプリケーションで何をしなくても、Silverlightで行う必要があります。唯一の違いは、呼び出しを非同期で処理する必要があることですが、これは質問に関係するWebサービスの消費とは別です。


注コンパイル時にWebサービスのすべての更新を行うには競合技術がありました。それはRIAサービスと呼ばれ、それはすべて一緒に別の動物です。

WCF Webサービスを使用することをお勧めしますが、送信/受信バッファのサイズを変更すると、真のデータ転送でそれらを最大限に活用できます。

+0

しかし、それはWebアプリケーションです。データはワイヤを介して転送されます。 – Bigeyes

+1

@Bigeyes表示しているコードに問題がある場合は、問題を説明してください。 WCFを使用して手動でデシリアライズする必要はありません。それはWCFの力です。コンソールアプリケーション、Webアプリケーション、またはSilverligtでWCFを使用するかどうかはまったく問題ありません。 – CodeCaster

+0

クラスを更新しました。自分のクラスに '[DataContract]&[DataMember]'があるとします。つまり、DataContractSerializerを使用する必要がありますか? – Bigeyes

関連する問題