0

私はWCFプログラミングに非常に慣れておらず、いくつかの問題を抱えています。

データを収集するクライアント アプリケーションがstudentあり、そのstudentデータは を介し​​て DB に保存されweb servicesます。

だから私はstudent classクライアント側にいて、新しい学生が来ると学生オブジェクトを作成し、収集された値を割り当てます。

このデータをサービスに渡す最も適切な方法は何ですか??

私が従うことができるオプションは次のとおりです。

オプション1

public void InsertStudent(string id, string name, string address)  
{  
} 

これは良くないと感じます。データを渡さなければならない場合、パラメーター リストが長くなるためです。

オプション 2

サービスのデータ コントラクトを定義する

public void InsertStudent(WcfStudent obj)  
{

}

これはいいと思います。しかし、パラメータ(WcfStudent)の送信方法に問題があります。WcfStudentクライアント側で このオブジェクトを作成し、オブジェクトを渡す必要がありますか?

WcfStudent obj=new WcfStudent()

obj.name=myStudent.name;

obj.id=myStudent.id;

client.InsertStudent(obj);

これはこれを行う正しい方法ですか??

私に助言してください。

4

3 に答える 3

2

もちろん、あなたが言ったように、2番目のオプションの方が優れています。WCF プロジェクトでは、DataContract WcfStudent を作成する必要があります。サービス参照を持つプロジェクト (これをクライアントと呼びます) では、メソッド (OperationContract) InsertStudent を実行するだけです。このオブジェクトを理論上どのように作成するかは問題ではありませんが、「クライアント」に StudentBO などの名前のオブジェクトを含め、WcfStudent と StudentBO の間のマッピングを作成するか、Automapper などのツールを使用することをお勧めします。

WCF にまったく慣れていない場合は、DataContract、DataMember についてお読みください。

幸運を!

アップデート

あなたのコメントについて話すと、次のようになります。

public WcfStudent(MyStudent myStudent)
{
    this.Id= myStudent.Id;
    this.Name= myStudent.Name;
}
于 2013-06-04T10:06:55.973 に答える
0

WCF サービスには WcfStudent クラスの定義が含まれ、そのクラスをデータ コントラクトとして定義します (別の DTO を使用していない場合)。

WSDL ファイルまたは Visual Studio インターフェイスを介して、クライアント プロジェクトで WCF サービスを参照すると、クライアント アプリケーションは、サービスのパブリック クラス、インターフェイス、およびその他の要素に関する可視性または知識を得ることができます。これには、WcfStudent クラスが含まれている必要があります。次に、次のような方法でコードでこれを利用することができます。

MyWcfService.WcfStudent student = new MyWcfService.WcfStudent();
//assign values, etc

必要に応じてアプリケーション内でその学生オブジェクトを操作し、永続化する準備ができたら Web サービスを呼び出します。

client.InsertStudent (student);
于 2013-06-04T10:11:44.297 に答える