0

WindowsCommunicationFoundationの特定の機能を完全に把握するのに苦労しています。私はチュートリアルを次々と読み、本を次々と読みました。ですから、私が自信を持っているのは、概念的な性質全体です。

一部を除いて; これはほとんど魔法のような部分です。それは実際に学習を少し難しくしました。

Webで最も一般的な例を使用します。

から始めましょうDataContract

[DataContract]
public class Customer
{

    // Declerations:
    private Guid id;
    private string firstName;
    private string lastName;
    private string emailAddress;

    [DataMembers]
    public Guid Id
    {
       get { return id; }
       set { id = value; }
    }

    [DataMember]
    public string FirstName
    {
         get { return firstName; }
         set { firstName = value; }
    }

    [DataMember]
    public string LastName
    {
         get { return lastName; }
         set { lastName = value; }
    }

    [DataMember]
    public string EmailAddress
    {
         get { return emailAddress; }
         set { emailAddress = value; }
    }

}

これでオブジェクトを作成しました。クライアントに公開したいこと。

だから私は自分のを作成しますServiceContract

[ServiceContract]
public interface ICustomer
{

     [OperationContract]
     Customer AddCustomer(Customer info);

}

だから、これは私が自分自身を混乱させ続けるところです。クライアント側のアプリケーションがあるとしましょう。あなたはサービスを消費しました。別々のアセンブリ/名前空間に3つのテキストボックスがあります。クライアントは基準を設定します:

  • ファーストネーム
  • 苗字
  • 電子メールアドレス

これらのテキストボックスを日付に設定すると、それらはメタデータで転送されます。しかし、サーバー上では、その情報変数を引き出すにはどうすればよいですか?参照するだけprivate Guid and private string variablesですか?

データベースに追加する方法についてのチュートリアルを見ました。しかし、WCFが実際に何をしているのか完全には理解していません。これは私が欲しいものに似ています。クライアントインターフェイスの入力を取得して、データベースと別のログファイルに書き込みたいのですが。

チュートリアルに従うことができます。しかし、顧客オブジェクトデータとその変数がサーバーで使用するためにどのように組み立てられているかを知りたいです。

どんな援助も驚くべきものであり、いくつかの説明があります。

私の質問がばかげているならごめんなさい。私は議論を始めようとはしていません。これらの変数をプルしてサーバーで使用する方法を理解したいだけです。

前もって感謝します。質問を正しくフォーマットしなかった場合は、お知らせください。それが概念的に何をしているのかを本当に理解したいと思います。

更新: 私の本当の意図は、クライアントインターフェイスがそのオブジェクトをどのように参照するかを理解することです。したがって、呼び出しが行われると、サーバーにはnullではない有効なオブジェクトがあります。

テキストボックスのクライアントタイプ--->プロキシ送信--->逆シリアル化--->サービス--->シリアル化--->プロパティを使用可能にします。

4

2 に答える 2

2

クラスなどの実際のタイプCustomerは、実際にはネットワークを介して送信されません。ただし、これらのタイプ内の公開情報は、シリアル化と呼ばれるプロセスを介して送信されます。シリアル化により、タイプをネットワーク経由で送信できるように表現できます。これは多くの場合、SOAP、JSON、XMLなどの形式を使用して表現されます。WCFでは、オブジェクトのシリアル化方法を正確に制御することもでき、必要に応じて独自のフォーマッターを作成できます。基本的に、AddCustomerが呼び出されると、WCFはCustomerサーバー上にオブジェクトを構築し、それをシリアル化し、それらのビットをネットワーク経由で送信します。

Customerこれで、クライアントにはプロキシと呼ばれる一致するオブジェクトがあります。次のようになります。

public class Customer
{
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
}

基本的に、サーバーバージョンのデータメンバーのみを含み、コードやロジックを含まない縮小バージョン。クライアントでは、のシリアル化された表現Customerが逆シリアル化されてこのローカルプロキシクラスのインスタンスに戻され、ローカルUI要素へのバインドなど、さまざまなクライアントの目的に使用できます。

Webサービスは、 WSDL(Webサービスコントラクトを記述するためのXML形式)を使用してこのタイプ情報を公開できます。Visual Studio(wsdl.exeツールを使用)は、これらのプロキシクラスを自動的に作成できるため、すべてが魔法のように機能します。

于 2012-12-20T19:41:19.997 に答える
0

よくわかりませんが、これがデータ転送とシリアル化を探しているものかもしれません

特に、 DataContractSerializerを確認できます

この記事も確認できます:WindowsCommunicationFoundationでのシリアル化

于 2012-12-20T19:01:29.010 に答える