-1

こんにちは私はいくつかの講義ノートを読んでいて、なぜこの方法が理解できないのですか?

[OperationContract]
Student PostStudent (Student student);

いいね。

そして、この方法は悪いです:

[OperationContract]
void PostStudent (string firstname, string lastname etc..);

しかし、私の実装バージョンは次のとおりです。

[OperationContract]
void PostStudent(Student student);

だから私は私の実装バージョンが悪いかどうかわからない、私はまた私の講師がどのように得たのかわからない

Student PostStudent (Student student);//?

4

4 に答える 4

3

Web サービスは、メッセージを使用して構築されます。WCF のメッセージは、クラスを記述し、Student(オプションで) 属性でマークすることによって定義されDataContractます。これにより、そのクラスのプロパティのバージョン管理とさまざまなプロパティの設定が可能になります(ただし、後者の効果はMessageParameter属性を使用して達成することもできます)。

そうPostStudent (string firstname, string lastname etc..)です、悪いです。

そのメソッドから何かを返すかどうかは、あなた次第です。voidたとえば SOAP を使用すると、ユーザーを作成できなかった理由を示す Fault を返すことができるため、まったく問題ありません。エラーは、作成が正常に行われたことを意味します。

作成された生徒を調べたい場合は、クラス (または ) を定義して、プロパティ (または ) と を含むクラスを返すこともできます。PostStudentResult最初PostResult<T>のクラスにStudentT Result作成Statusされた生徒が含まれ、後者は作成されたかどうかを示します。成功しました。

于 2012-05-03T11:40:34.457 に答える
0

WCFの場合は、アクションを指定することもVoidメソッドを使用することをお勧めします。

于 2012-05-03T11:24:56.420 に答える
0

一般に、Web サービスの戻り値は悪い習慣ではありません。それで、それはパラメータについてです。一緒に属するデータは、オブジェクトにラップする必要があります。

さらに、Post メソッドは戻り値をまったく取得してはなりません。あなたはそれを投稿し、エラーの場合は例外を受け取ります。

学生を受け取る必要がある場合は、次のようなメソッドを作成する必要があります。

Student GetStudentByName(string name);
于 2012-05-03T11:20:20.493 に答える
0

他の人が言ったように、メソッドパラメータが多すぎるのは悪い習慣です。いずれにせよ、あなたの署名とあなたが言及した優れた署名の違いは 1 つしかわかりません。学生オブジェクトをリターンとして持つと、たとえば、データベースに追加した後に学生の ID を持つことができます。オブジェクトの他の計算されたプロパティにも同じことが当てはまります。void メソッドを使用すると、オブジェクトを再度ロードする必要があります。これは、オブジェクトを投稿した後に直接使用したい場合に備えて、サーバーへの追加のトリップを意味します。オブジェクトを返すことが余分な帯域幅にすぎない場合、void WCF メソッドを使用する方法は悪くありません。

于 2012-05-03T12:00:32.657 に答える