2009-06-02 18 views
42

対私は[WebMethod]属性でマークされた方法では、.NET 3.5のaspx場所を持っています。 JSONを両方向に送信するjQueryを呼び出しています。これはすべて素晴らしいです。私の質問は、[ScriptMethod]がメソッドに適用されたときに何をするのですか?私はこれを試したと同じ結果をもたらすようです。 ScriptMethodWebMethodは同一で互換性がありますか、またはどちらか一方が提供していない機能性および/またはオーバーヘッドを提供していますか?一般に、私は自分自身がWebサービスを実装するために利用できるすべてのオプションと混同していると思います。それぞれの長所と短所が何であるかを知りたいと思います。WebMethod属性ScriptMethod

+2

大変ご質問ありがとうございます。 – JoshJordan

答えて

2

ScriptMethodAttribute属性はオプションです。ただし、クライアントスクリプトから呼び出せるメソッドには、System.Web.Services .. ::。WebMethodAttribute属性が適用されている必要があります。メソッドがScriptMethodAttributeでマークされていない場合、メソッドはHTTP POSTコマンドを使用して呼び出され、応答はJSONとしてシリアル化されます。スクリプトからこの設定を上書きすることはできません。

- http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

EDIT:WebMethod属性とScriptMethodは属性が競合していません。 ScriptMethodは上記のように付加的な注釈である可能性があります。

+0

WebMethod = HTTP POSTで呼び出す... ScriptMethodを追加するとさらに何が得られますか?どちらもクライアントから呼び出すことができます...私はそれを取得しません。 –

29

は、次の2つのシナリオでScriptMethod属性を使用します。

  1. jqueryまたは他のajaxリクエストメカニズムを使用していますが、要求はPOSTではなくGETにします。
  2. XML形式の応答をjavaScriptで受け取りたいとします。

あなたは、上記の要件のいずれかを持っていない場合。 ajaxリクエストを使用してJSONレスポンスが必要な場合は、WebMethodを使用するだけです。

あなたはScriptService属性を使用しないときもう一つの混乱の要素は、まだここにあるのでしょうか?これは、Microsoft Ajax Clientスクリプトフレームワークを使用している場合に使用されます。この属性は、通常のオブジェクトと同様に関数を呼び出すことができるように、クライアントにプロキシオブジェクトを生成するようサーバーに指示します。 var MyRemoteObject = new RemoteObject();MyRemoteObject.getMessage(....) ScriptService属性を使用する場合でも、上記のシナリオでのみScriptMethod属性を追加する必要はありません。

私はScriptServiceとScriptMethodだけでWebサービスのように一緒に動作し、Webメソッドの属性属性と思ったので、それは初めで私に混乱しました。