.net callbackメカニズム

4260 ワード

多くの人がcallbackを知っています.Netのコールバックメカニズムは、callbackテクノロジーを使用してユーザー体験を増やすことも知っています.server開発をしている人にとって、callbackを理解することはさらに必要です.しかし、初心者にとって、callbackメカニズムを自分のプログラムに理解し、よく使うのは難しい.私も初心者です.以前はaspを使っていましたが.Netはサイトを書いたことがありますが、当時も勉強しながらやっていましたが、callbackにはぼんやりしていたので、私の最初のサイトは何のcallbackも使っていませんでした.私がArcGISサーバーに接触してもわずか20日しか経っていません.勉強が進むにつれて、callbackを理解しなければならないことに気づいた.今日は一日かけてやっと理解しました.
夜、フォーラムで「CALLBACKについての質問を見てください(ソースコードが貼ってあります)」というスレッドを見て、クリックして見ました.スレ主と話した後、lzは私と同じように初心者で、callbackにはまだぼんやりしていることを知った.そこで私は自分の理解で彼に一度話した.私は1つの問題を発見して、ネット上でcallbackに対する説明は基本的にICallbackEventHandlerをこのように実現することだけを言って、クライアントのjsコードの中でいったいどのようにコールバックをトリガーして、関数の中の値はまたどのような1種の方式とフォーマットでサーバーの端に戻って、サーバーの端のコードはまたどのように処理して、言うのは少ないです.また、私の研究の過程で、esriコミュニティではこれに関する投稿も少ないことがわかりました.今、私が彼に説明した内容を以下に整理して、同じ初心者とcallbackがどのように使われているのかを説明してほしいです.
まず、callbackを実行するクラスは、ICallbackEventHandlerを実装します.このクラスには2つの関数があります.
public string GetCallbackResult()およびpublic void RaiseCallbackEvent(string eventArgument).
ここで、RaiseCallbackEvent(string eventArgument)のeventArgumentは、クライアントがサーバに送信する変数です.
まずクライアントのjsコードを見てみましょう.
 
?
1
2
3
4
5 function changelayer() {     var strcallback = " " ;         <%=usecallback%> }
 
これがコールバックを実行するjs関数であり,<%=%>これはプリコンパイル文である.つまり、この中のものはサーバー側で実行されます.
<%=usecallback%>ですが、私の中にはusecallbackがあります.これはサーバ側の宣言です.public string usecallbackです.
そしてPage_Loadイベント:
  usecallback = Page.ClientScript.GetCallbackEventReference(this, "strcallback", "showresult", null, true);
この言葉は必須です.この関数名はこの関数の意味を説明し、コールバックを登録すると理解できます. 
この関数のパラメータ「strcallback」はRaiseCallback Event(string eventArgument)関数のeventArgumentの値です!一方、strcallback、すなわちjsコードでコールバックをトリガーできるchangelayer()関数で宣言されたstrcallback変数です.このstrcallbackの値は、GetCallback EventReference(this,“strcallback”,“showresult”,null,true)関数によってRaiseCallback Event(string eventArgument)のeventArgumentに伝達されます.では,サーバ側はクライアントから送信された値,strcallback,すなわちeventArgumenを得た.コールバックも半分完了し、eventArgumenでサーバからどのようなパラメータが送られてきたのか、サーバ側でどのように処理するかを知ることができます.
あなたのjs関数に<%=usecallback%>があれば、実は書くこともできます.
  <%=ClientScript.GetCallbackEventReference(this,「strcallback」,「showresult」,null,true)%>,こう書くとPage_Load関数にはもう使う必要はありません.
このjs関数がコールバックを実行することを示します.
同様に、処理が終わったら、処理が終わった情報をクライアントに伝えましょう.public string GetCallbackResult()関数が役に立ちます.
操作の結果は
public string GetCallbackResult()
    {
return「あなたが操作した結果」;
    }
js側のshowresult関数に戻ります.
この関数を見てみましょう:GetCallbackEventReference(this,“strcallback”,“showresult”,null,true);
「strcallback」はコールバックを実行するjs関数で、showresultはサーバがコールバックを完了した後に
public string GetCallbackResult()
{
return「あなたが操作した結果」;
    }
のreturn「あなたが操作した結果」の「あなたが操作した結果」という文字列が返すjsの関数で、ここでshowresult()関数です.
次のように書くことができます.
function showresult(rValue)
{
window.alert(rValue);
}
するとブラウザでダイアログボックスが開き、「操作した結果」という内容になります.GetCallbackResult()関数が返すstringもshowresult()のrvalueにあることがわかります.
 
整理:
GetCallbackEventReference(this, "strcallback", "showresult", null, true );関数は全体のコールバックメカニズムの橋渡しで、中のパラメータの意味は私は言わないで、ネット上で多いのは.
さっきの簡単なコールバックを整理しましょう.
(1)クライアントfunction changelayer()はコールバックを開始するとともにstrcallbackの「コールバック」をサーバに渡す.
(2)サーバ側RaiseCallback Event(string eventArgument)関数はstrcallback値を得てeventArgumentに保存する.
(3)eventArgumentによる処理開始
(4)処理が完了したらpublic string GetCallbackResult()に渡し,処理結果をクライアントに返す.私たちは処理していないので、「あなたが操作した結果」という文字列を返しました.この文字列はクライアントに返されます.
(5)クライアント関数function showresult(rValue)のrValueがこの文字列を得たので、ブラウザでメッセージボックスをポップアップしました:あなたが操作した結果.
Okはプロセス全体が完了しましたが、実は非常に簡単で、理解さえすればいいので、クライアントとサーバの間でstringタイプの値だけが伝わっていることに注意してください.
下には私が作った簡単なcallbackのプログラムも添付されています.上の注釈は詳しくて、皆さんに役に立つことを望んでいます.callbackメカニズムを理解するとCallbackResultクラスの使用はすぐに上手になりますが、これはヘルプの例を見て理解できます.