Stack Overflowの動作方法は、CodeProjectの記事とは2つの重要な点で異なります。
Stack Overflowは、スタンドアロンのASPXページではなく、ASP.NETMVCコントローラーアクションに対してAJAX要求を行っています。これは、ASP.NETAJAXページメソッドのMVCアナログと見なすことができます。どちらの場合も、ASPXメソッドはパフォーマンスの点で遅れをとっています。
Stack OverflowのAJAXリクエストは、任意のプレーンテキストやHTMLではなく、JSONでシリアル化された結果を返します。これにより、クライアント側での処理がより標準化され、一般的にクリーンになります。
例:私がこの質問に投票したとき、POSTデータの「voteTypeId」が2のXmlHttpRequestリクエストが/ questions / 171000/voteに対して行われました。
リクエストを処理したコントローラーは、私の投票をどこかのテーブルに追加し、次のJSONで応答しました。
{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2}
このJavaScriptは、その情報を使用して、クライアント側の表示を更新します。
var voteResult = function(jClicked, postId, data) {
if (data.Success) {
jClicked.parent().find("span.vote-count-post").text(data.NewScore);
if (data.Message)
showFadingNotification(jClicked, data.Message);
}
else {
showNotification(jClicked, data.Message);
reset(jClicked, jClicked);
if (data.LastVoteTypeId) {
selectPreviousVote(jClicked, data.LastVoteTypeId);
}
}
};
WebFormsを使用している場合、私のブログで見つけたページメソッドの呼び出しの例は間違いなく正しい球場にあります。
ただし、ページメソッドではなく、一元化された機能(この投票例など)のWebサービスを検討することをお勧めします。ページメソッドは少し書きやすいように見えますが、再利用の欠点もいくつかあり、実際には存在しないセキュリティが追加されているように見える傾向があります。
これはあなたが見つけたのと同じことをする例ですが、Webサービスを使っています(この投稿へのコメントは実際にあなたが見つけた投稿につながりました):
http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/