[전환] ASP.NET 알림 기능
3691 단어 asp.net
그렇다면 웹과 같은 무상태 환경에서 어떻게 같은 기능을 모의할 것인가를 생각해 보자.우선 우리는 우리가 필요로 하는 효과를 촉발할 수 있는 사건이 필요하다.그러면 다음과 같은 몇 가지 시나리오를 선택할 수 있습니다.
1、한 페이지가 요청되었을 때
2. 애플리케이션의 시작과 끝
3. 하나의 세션의 시작, 끝 또는 시간 초과
4. 캐시 만료
3종은 기본적으로 사용할 수 없고 구체적인 원인은 설명이 많지 않기 때문에 4종만 사용할 수 있다.사실 주요 원리는 Cache류의 방법을 이용하는 거예요.
public void Insert ( System.String key , System.Object value ,
System.Web.Caching.CacheDependency dependencies ,
System.DateTime absoluteExpiration ,
System.TimeSpan slidingExpiration ,
System.Web.Caching.CacheItemPriority priority ,
System.Web.Caching.CacheItemRemovedCallback onRemoveCallback )
마지막 매개 변수입니다. 그는delegate입니다.
다음은 구체적인 실현이다.
먼저 응용 프로그램이 시작될 때 응용 프로그램에 아날로그 Cache를 주입해야 합니다.
private const string DummyCacheItemKey = "GagaGuguGigi";
protected void Application_Start(Object sender, EventArgs e)
{
RegisterCacheEntry();
}
private bool RegisterCacheEntry()
{
if( null != HttpContext.Current.Cache[ DummyCacheItemKey ] ) return false;
HttpContext.Current.Cache.Add( DummyCacheItemKey, "Test", null,
DateTime.MaxValue, TimeSpan.FromMinutes(1),
CacheItemPriority.Normal,
new CacheItemRemovedCallback( CacheItemRemovedCallback ) );
return true;
}
여기서 주의해야 할 것은 기한이 2분 이상으로만 설정될 수 있다는 것이다.만약 당신이 입력한 시간이 2분보다 적다면, 여전히 2분으로 계산됩니다.(.NET 자체 문제일 수 있음)
이렇게 하면 CacheItem Removed Callback 이벤트가 트리거됩니다. CacheItem Removed Callback 이벤트의 원형은 다음과 같습니다.
public void CacheItemRemovedCallback( string key,
object value, CacheItemRemovedReason reason)
{
}
이 중에서 우리는 우리가 해야 할 일의 코드를 추가할 수 있다.
------------------------------------분할--------------------------------
잠깐만, 이게 끝이라고 생각하지 마. 이건 네가 처음으로 이 사건을 촉발한 거야.이 사건이 끝난 후, Cache는 기한이 지난 것으로 인정되었다. 왜냐하면 우리는 새로운 Cache를 다시 넣을 방법을 생각해야 하기 때문이다.
우리의 방법은 페이지 요청을 시뮬레이션한 다음 이 요청에 Cache를 추가하는 것입니다.
위의 Callback 이벤트에 추가
public void CacheItemRemovedCallback( string key,
object value, CacheItemRemovedReason reason)
{
Debug.WriteLine("Cache item callback: " + DateTime.Now.ToString() );
HitPage();
// Do the service works
DoWork();
}
DoWork () 는 당신이 해야 할 일을 표시합니다.
HitPage는 다음과 같이 정의합니다.
private const string DummyPageUrl =
http://localhost/Reminder/WebForm1.aspx;
private void HitPage()
{
WebClient client = new WebClient();
client.DownloadData(DummyPageUrl);
}
아날로그 페이지가 실행될 때 Application을 통해BeginRequest 이 이벤트는 Cache를 추가합니다.
protected void Application_BeginRequest(Object sender, EventArgs e)
{
// If the dummy page is hit, then it means we want to add another item
// in cache
if( HttpContext.Current.Request.Url.ToString() == DummyPageUrl )
{
// Add the item in cache and when succesful, do the work.
RegisterCacheEntry();
}
}
다음으로 이동:http://archive.cnblogs.com/a/280299/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.