1

アプリケーション/ビジネスロジックにWCFを使用して、UIレイヤーのすべてのロジックを含むWindowsフォームアプリケーションを2層アプリケーションに変換しています。サービスのすべてのメソッドが1つのパラメーターを受け取り、1つの応答オブジェクトを返すというパターンに従っています。必要なデータはすべて、これらのオブジェクトにカプセル化されます。例えば:

public GetPersonResponse GetPerson(GetPersonRequest req){
    // do stuff
}

public class GetPersonRequest{
    String Name{get;set;}
    Date BirthDate{get;set;}
}

public class GetPersonResponse{
    Person Result {get;set;}
}

私の質問は、クライアント側のデータバインディングにあります。[データソース]と[データソースの表示]に移動すると、応答とそれらで使用されているエンティティが表示されますが、リクエストは表示されません。上記の例では、GetPersonResponseとPersonは表示されますが、GetPersonRequestは表示されません。リクエストオブジェクトをフォームにバインドし、1行のコードで操作全体を送信できると非常に便利です。

client.GetPerson((GetPersonRequest) getPersonRequestBindingSource.Current);

または少なくとも:

GetPersonRequest req = (GetPersonRequest) getPersonRequestBindingSource.Current;
Validate(req);
client.GetPerson(req);

別の例として、次のRequestクラスを持つCreatePersonメソッドを想像してください。

public class CreatePersonRequest{
    String Name {get;set;}
    String Address {get;set;}
    String Address2 {get;set;}
    String City {get;set;}
    String State {get;set;}
    String ZipCode {get;set;}
    Integer Age {get;set;}
    // more stuff here
}

次のようなコードは必要ありません。

CreatePersonRequest req = new CreatePersonRequest(){
    Name = NameTextBox.Text,
    Address = AddressTextBox.Text,
    Address2 = Address2TextBox.Text,
    City = CityTextBox.Text,
    State = StateComboBox.SelectedValue,
    ZipCode = ZipCodeTextBox.Text,
    Age = Integer.ParseInt(AgeTextBox.Text)
}
client.CreatePerson(req);

私はむしろ持っていると思います:

client.CreatePerson((CreatePersonRequest) createPersonRequestBindingSource.Current)

私見ですが、これははるかにクリーンで保守が容易です。フィールドがリクエストに追加された場合、UIのウィジェットを更新するだけで、コード自体を変更する必要はありません。

UIデータバインディング内のデータソースによって要求が認識されるようにする方法はありますか?

クライアントとサーバーの両方で.Net4.0。

(すべてのコードは手作業で書かれているので、実行できると期待しないでください:))

編集:明確にするために、リクエストオブジェクトはコントラクトに表示されています。コードビハインドで作成して手動で入力できます。生産性を向上させるデータバインディング機能を探しているだけです。

4

1 に答える 1

0

まあ、私はそれを理解したと思います。[新しいデータソースを追加]を選択して[オブジェクト]を選択すると、オブジェクトは引き続き表示されます。それらはサービスの名前空間にあります。

それでも、サービスオプションで必要なものがすべて提供されると便利ですが、残念ながら、プログラミングが簡単であれば、誰もがそれを実行できます。

于 2012-10-15T12:17:46.880 に答える