著者: Dflying Chen ( http://dflying.cnblogs.com/ )
完了までに時間がかかり、リアルタイム要件が高くない一部の複雑なサービスの場合、多くの場合、キャッシュを選択することが効率を向上させる効果的な方法です。 .NET の Web サービスの実装では、キャッシュの必要性が十分に考慮されています。キャッシュを有効にするために必要なのは、簡単な設定だけです。 Atlas の Web サービスの呼び出しでも、このキャッシュ メカニズムを使用して、サーバー側での不必要なオーバーヘッドを削減できます。
Web サービスのキャッシュを有効にするには、次の属性を WebMethod 宣言に追加するだけです:
[WebMethod(CacheDuration = 5)]
ここで、CacheDuration の値はキャッシュ時間を秒単位で表します。
ただし、この Cache メソッドは Web サービスによって提供されており、Atlas はそれについて何も認識せず、各呼び出しは引き続きサーバーに送信されます。したがって、このキャッシュでは、ユーザーに対するネットワーク遅延の影響を改善する方法はありません。
サンプルプログラムを通じてWebサービスのキャッシュについて学びましょう。
まず Web サービスを作成し、現在時刻を返し、CacheDuration を 5 秒に指定します:
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
パブリック クラス CachedWebService : System.Web.Services.WebService
{
[WebMethod(CacheDuration = 5)]
public DateTime GetGurrentTime()
{
DateTime.Now を返します。
}
}
次に、Atlas ページを作成し、ScriptManager を追加して、その中でこの Web サービスを参照します:
<サービス>
サービス>
いくつかの HTML タグを追加して、この Web サービスを呼び出し、結果を表示します。
最後は JavaScript 部分で、分析を容易にするためにページ上の各呼び出しの結果を表示します。
function btnInvoke_onclick() {
CachedWebService.GetGurrentTime(onCompleted);
}
関数 onCompleted(結果) {
$('result').innerHTML += 結果 + "
";
}
ブラウザでテストしてみましょう。ボタンを複数回クリックすると、キャッシュの役割が次のように表示されます。
同時に、Fiddler では、これらのリクエストが実際にサーバーに送信され、キャッシュは単なるサーバー側の実装であることがわかります。
この例のソース コードはここからダウンロードできます。