2010-12-30 4 views
6

LoadBalancer과 같은 싱글 톤 클래스가 있고 ASP.NET 응용 프로그램 당 하나의 인스턴스가 필요한 경우이 인스턴스를 저장할 위치는 무엇입니까?ASP.NET 응용 프로그램에서 싱글 톤 인스턴스를 저장하는 최상의 방법

현재 에서 Global.asaxApplication.Add("LoadBalancer", LoadBalancer.Instance)을 사용하고 있습니다.

또한 Application 개체는 ASP.NET으로 생성되며 작업 부하에 따라 응용 프로그램 당 인스턴스가 여러 개 있습니다. 또한 static 인스턴스가 LoadBalancer 인 것을 Global.asax에 선언 할 수 있습니다.

어느 것이 좋습니까? 더 좋은 생각이야?

+0

, 이것은 심각한 결함이 디자인처럼 들린다. 정확히 LoadBalancer 객체는 무엇입니까? 트래픽이 사이트의로드 균형을 조정하려고 시도하는 경우 솔직히 말해서 완전히 잘못된 방식으로이 문제를 해결했습니다. – NotMe

+0

팜의 여러 웹 서버에서 "하나의 개체를 모두 제어 할 수있는 개체"로 유지하려는 경우 데이터베이스에 저장하고 필요할 때마다 검색해야 할 것입니다. 물론 동시성 규칙. – Greg

+0

여기서'LoadBalancer'는 서버 팜의로드 밸런서가 아닙니다. 그것은 내 물건입니다. – Xaqron

답변

3

싱글 톤 인 경우 왜 응용 프로그램 항목에 저장 하시겠습니까? 응용 프로그램에서 LoadBalancer.Instance를 사용할 때 동일한 인스턴스를 반환하지 않아야합니까?

사이트가로드 균형 조정을 사용 중이거나 웹 팜에있는 경우 각 서버의 인스턴스는 Application 개체 및 LoadBalancer.Instance입니다.

+0

@Aliostad : 내가 무엇을 놓치거나 잘못 이해했는지 알려 주실 수 있습니까? – Chandu

+0

죄송합니다 ... – Aliostad

2

Application 개체에 싱글 톤 개체를 저장하지 않아도됩니다. Singleton 객체의 표준 구현은 훌륭하게 유지됩니다. http://msdn.microsoft.com/en-us/library/ff650316.aspx

웹 팜을 다른 이야기로 사용하는 경우에는 다른 서비스에서 별도로 호스팅되는 Singleton 개체가 있어야하며 모든 서버는 Remoting 또는 WCF를 사용하여 해당 서비스에서 개체를 요청해야합니다.