コールバックの一般的な使用方法は、msdn のヘルプと例を直接参照するだけで十分です。ただし、コールバック メカニズムを実際に適切かつ正確に使用したい場合、またはコールバック メカニズムに基づいていくつかの WEB コンポーネントを開発したい場合は、まずコールバック実装メカニズムを深く理解する必要があります。この記事では、Teddy が協力してコールバックの呼び出しとフィードバックのメカニズム全体を分析します。これは、コールバックをより適切に使用するのに役立つと信じています。
コールバックとアトラス
まず、アトラスについて話しましょう。多くの友人は、すでに Callback があることに奇妙に思うかもしれません。なぜ Atlas を再度リリースする必要があるのでしょうか?この問題について、アトラスの作者がどのように説明しているのかは調べていません。しかし、コールバックとアトラスを使用した私の個人的な経験から、インターフェイスとしてのコールバックはポストバックに非常に似ており、ユーザーがポストバックと同じように使用できるようにする必要があると感じています。ただし、ポストバックのようなメカニズムは、他の AJAX フレームワークの実装と比較すると、特に使いやすくはなく、拡張も容易ではありません。したがって、Microsoft は、Prototype、Backbase、AJAX.NET などの多くの既存の AJAX 実装から学び、それを ASP.NET 2.0 のいくつかのユニークな機能と組み合わせて、他の利点を活用する AJAX フレームワークを作成しました。 Atlas に基づいて AJAX アプリケーションを開発することがどれほど優れているかを定量化することは困難ですが、他の AJAX フレームワークに加えて、Microsoft のバックエンドや live.com Promotion のような重量級サイトのアプリケーションよりも劣ることは間違いなく、その影響は確かに価値があります。楽しみにしています。
ただし、これはコールバックの実装が役に立たないという意味ではありません。プログラマは正しい姿勢を持ち、正しいユースケースで最も正しいテクノロジを使用する必要があります。どのような使用環境にも適した万能のフレームワークはありません。CMMi、RUP、XP、AGILE~~ のどれが最適なソフトウェア開発方法であるかを誰もが議論しているのと同じように、実際には最適なものはなく、最も適切なものが最適です。私たちが最もすべきことは、さまざまなソリューションの原理、利点、欠点を理解し、適切なツールを合理的に使用して実際の問題を解決できるようにすることです。
クライアント スクリプトから始める
すべての AJAX には、最下位レベルでは XMLHTTP と IFRAME という 2 つの実装メカニズムしかないことは誰もが知っています。実際、AJAX という言葉が広く注目される前に、これら 2 つの基礎となる実装に基づく機能フレームワーク、またはこれら 2 つのテクノロジに基づく非リフレッシュ効果実装がすでに広く使用されていました。もちろん、今日の開発では、インターフェイスの使用に関して、これらの基礎となるメカニズムの詳細はフレームワークによって隠蔽されていることが多く、ユーザーはこれらの単純なインターフェイスを呼び出すだけで済み、知る必要はなくなりました。具体的な効果を得る方法。
ただし、ここではコールバック実装メカニズムを分析するため、コールバック コール クライアント スクリプト呼び出しから始めて、Microsoft がこのコールバック メカニズムをどのように実装しているかを見てみましょう。
1. ClientScript.GetCallbackEventReference(...)
コールバックをトリガーするには、まず、クライアント スクリプトで呼び出しを発行する必要があります。一般的な呼び出し構文は次のとおりです。
<script language="javascript" type="text/javascript">
関数 any_script_function(arg, context)
{
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
}
</script>
ClientScript.GetCallbackEventReference(...) は、渡されたパラメータに従って実際のコールバック スクリプトを返します。この関数には複数のオーバーロードされたバージョンがあるため、これらのパラメーターの意味については MSDN を参照してください。上記のサンプル コードの特定のパラメーターを取得します。
- これは、コールバックを実行するサーバー コントロールが現在のページであることを意味します。これらには、文字列 GetCallbackResult() および void RaiseCallbackEvent(eventArgument) を含む ICallbackEventHandler インターフェイスが実装されている必要があります。 2 つのインターフェイス関数を使用する場合、このパラメータは WEB コントロールへの参照にすることもできます。もちろん、このスペースは ICallbackEventHandler インターフェイスも実装する必要があります。
「arg」は RaiseCallbackEvent に渡されるパラメータの値です。形式を定義する文字列
- 「ReceiveServerData」は、コールバックが成功した後に返されたコンテンツを処理するクライアント スクリプト関数の名前です。この関数はコールバックが実行されるページに存在する必要があり、この関数には 2 つのパラメーターを含めることができます。例:
<script type="text/javascript">
functionReceiveServerData(結果、コンテキスト)
{}
</script>
これら 2 つのパラメータはコールバックの戻りデータ結果であり、コールバックをトリガーしたときに変更されずに返されるコンテキスト パラメータです。 もちろん、これら 2 つのパラメータは文字列型です。
- 「コンテキスト」について説明する必要はありません。このパラメータは指定された戻りデータ処理関数にそのまま渡されることを覚えておいてください。 MSDN の公式ドキュメントには、コンテキストは通常、クライアントの戻りデータ処理関数で呼び出す必要があるスクリプト コードを渡すために使用できると記載されていますが、実際には、クライアントからのトリガー コールバックとして何でも渡すことができます。返されたデータを処理する受信セグメント間のパラメータ転送チャネルに送信されます。