2012-10-23 3 views
1

세 개의 별도 응용 프로그램 풀에서 실행되는 세 개의 응용 프로그램이 있습니다. 하나의 응용 프로그램은 소수의 사람들이 액세스 권한을 가진 관리 응용 프로그램입니다. 관리 응용 프로그램에서 허용하는 기능 중 하나는 작동 중지 알림을 작성하는 것입니다. 따라서 사용자가 관리 응용 프로그램에 들어가고 가동 중지 시간 알림을 생성하면 다른 두 응용 프로그램은 새로운 알림이 있음을 인식하고 로그인 페이지에 표시합니다.ASP.NET 캐시 관리

문제는 이러한 알림이 캐시되고 각 앱이 별도의 앱 풀에 있다는 점에서 관리 앱이 다른 두 애플리케이션의 가동 중지 알림 캐쉬를 지울 수있는 방법이 없습니다.

저는이 문제를 해결하기 위해 노력하고 있습니다. 내가 생각할 수있는 유일한 것은 캐시를 지울 필요가있는 DB에 레코드를 삽입하고 로그인 페이지를로드 할 때 다른 두 앱에서 DB를 검사하는 것입니다. 누구든지 조금 더 깨끗하게 작동 할 수있는 또 다른 접근법을 가지고 있습니까?

* 사이드 노트는 다운 타임에 대한 공지보다 광범위하게 사용되었지만 방금 예를 들어 설명했습니다. 응용 프로그램 풀을 다시 시작

편집

는이 거의 확실 킬 배경 스레드 가능하지 않습니다.

+0

관리 응용 프로그램에서 두 응용 프로그램에 대한 응용 프로그램 풀을 다시 시작 하시겠습니까? – Tariqulazam

+0

캐시 지우기에 대해 언급하고 있지만 우선 가동 중지 시간 알림이 다른 두 앱의 캐시에 어떻게 도달하는지 명확하지 않습니다. 다른 두 앱은 "새로운 알림이있을 때 어떻게 받아들입니까?" –

+0

Zaid는 캐시에 대한 호출을합니다. 아직 채워지지 않은 경우 DB에서 데이터를 가져 와서 캐시에 저장합니다. 그렇지 않으면 캐시에있는 데이터를 반환합니다. – Chris

답변

2

제대로 이해하면 기본적으로 관리 앱에서 다른 앱으로 메시지를 보내려고합니다. 아마도 이러한 응용 프로그램에서 관리 응용 프로그램에서 호출 할 수있는 WCF 서비스를 만드는 것을 고려해야합니다. 예를 들어 앱을 사용하고 싶지 않으면 다른 앱 간 통신을위한 표준 방법입니다. 이러한 데이터베이스를 공유하고 폴링 모델을 사용하도록 강요하지 않습니다.

+0

필자는이 경로를 시작했지만 각 응용 프로그램이 별도의 도메인 (http // www.a.com, http // www.b.com, http // www.c.com)이므로 크로스를 처리해야합니까? 도메인 웹 서비스를 사용하거나 웹에 접속하지 않고도 할 수 있습니까? – Chris

+0

동일한 IIS에서 응용 프로그램을 호스팅하는 경우 서비스를 인터넷에 노출하지 않고도 항상 localhost로 통신을 제한 할 수 있습니다. 다른 바인딩을 사용할 수도 있습니다 (예 : NetNamedPipeBinding http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx. – empi

0

캐싱중인 데이터베이스 정보 인 경우 설정시 SqlCacheDependency을 사용해보십시오.

그렇지 않으면 ASP.NET 캐시를 사용하지 말고 분산 된 캐싱 구성표를 사용하는 타사 솔루션을 찾아서 모든 응용 프로그램이 3 개의 개별 캐시 대신 하나의 캐시를 사용하는 것이 좋습니다.

1

이 방법을 살펴 보는 또 다른 방법은 기본적으로 응용 프로그램 메시징 문제이며, 이미 해결할 수있는 많은 라이브러리가 있습니다. RabbitMQ이이를 염두에 둡니다. C# 클라이언트가 모두 준비되어 있습니다. MSMQ은 또 다른 잠재적 기술이자 이미 Windows와 함께 제공되는 기술입니다. 설치하면됩니다.

+0

MSMQ도 작동하며 이미 Windows에 포함되어 있습니다 (선택적 설치). 설치하기 만하면됩니다. – Kevin

+0

@Kevin 그럴 것이다! 좋은 소리. 나는 대답에 그것을 추가 할 것이다. – tmesser

0

나는 이것이 최선의 대답인지 심지어 올바른 대답인지 말하는 것이 아닙니다.

중앙 백 오피스 웹 사이트 위치에서 카탈로그 데이터를 가져와 로컬로 캐시하는 데 의존하는 별도의 서버 및 데이터 센터에 일련의 전자 상거래 웹 사이트가 있습니다. 첫 번째 반복에서는 GET 요청을 사용하여 중앙 위치에서 해당 소비 웹 사이트를 핑 (ping)하여 자체 캐시 새로 고침 루틴을 시작할 수있었습니다. SSL을 사용하여 각 전자 상거래 서버에 이미 설정을 했으므로 백 오피스 웹 응용 프로그램에서 새로 고침을 안전하게 시작하기 위해 SSL GET을 통해 자격 증명을 보낼 수있었습니다.

나중에 각 소비 웹 사이트가 클라이언트가되고 데이터의 변경 사항을 수신하는 백 오피스에서 소켓을 사용하는 것이 더 효율적이라는 것을 알았습니다. 백 오피스 웹 사이트는 특정 계정이 변경되면 해당 웹 사이트와 통신 한 다음이를 매우 구체적으로 전달할 수 있습니다. 이 접근 방식은 훨씬 세분화 된 것으로 대규모 청크 업데이트와 달리 필요에 따라 작은 비트로 업데이트 할 수 있지만 첫 시도보다 훨씬 복잡합니다.