2010-12-09 3 views
2

개인 고객이 소셜 네트워크 또는 채팅룸과 같이 서로의 존재를 볼 수있는 웹 사이트를 상상해보십시오.여러 클라이언트의 여러 ASP.NET 요청이 정보를 공유하는 방법은 무엇입니까?

예 :
클라이언트 1이 내 웹 사이트에 연결합니다.
백 엔드 C# 코드는 Client1의 존재를 나타 내기 위해 정적 필드를 업데이트합니다.
Client2가 내 웹 사이트에 연결합니다.
두 번째 요청에 대한 백 엔드 C# 코드는 첫 번째 요청의 정적 필드에 저장된 정보를 볼 수 있습니까? 이러한 ASP 응용 프로그램의 개별 인스턴스가 정적 데이터를 공유하고 있음을 보장하기 위해해야 ​​할 일이 있습니까?

+1

이 데이터를 두 세션에 모두 저장할 수 있어야합니다. 캐시, 응용 프로그램 또는 DB에 저장하는 것이 좋습니다. – Zachary

답변

2

전적으로 어떤 정보를 공유 하느냐에 달려 있습니다. 다양한 옵션이 될 수 있습니다

  • 데이터베이스
  • 캐시
  • 응용 프로그램 변수

각 옵션은 특정 요구에 적합합니다. 당신은 당신의 요구를주의 깊게 확인한 다음 각각의 옵션 또는 그 조합을 분석하여 완벽한 솔루션을 찾아야합니다. 그냥 현재 상태 정보를 공유하고자하는 경우

, 여기이 게시물 How to tackle this session problem in ASP.NET,VB.NET?

+0

결국 데이터베이스가 최상의 옵션 일 것 같습니다. 안정성과 확장 성은 성능에 치명적인 영향을 미치고 메모리에서 응용 프로그램과 분리됩니다. – Giffyguy

1

편집중인 정적 필드 인 경우 다른 사용자간에 공유됩니다. 정적 객체가 다른 스레드간에 공유되지 않도록주의해야 할 유일한 시간은 다른 응용 프로그램 도메인이 될 것이므로로드 균형 조정 아키텍처와 같이 응용 프로그램을 호스팅하는 다른 웹 서버가있는 경우입니다.

2

Application 상태 또는 Cache 상태를 사용하여 모든 클라이언트에서 정보를 공유 할 수도 있습니다.

ASP.net 응용 프로그램에서 응용 프로그램/캐시는 응용 프로그램에서 정보를 공유하는 일반적인 방법 중 하나입니다.

그러나 특정 요구 사항에 맞는지 먼저 다음 사항을 고려해야합니다.

응용 프로그램 상태를 사용하는 경우, 당신은 여러 가지 고려 사항을 알고 있어야합니다

  1. 자원
  2. 변동성
  3. 확장 성
  4. 동시성

섹션 "응용 프로그램의 주 고려 사항"을 참조하십시오 위의 링크에서 귀하의 사이트를 결정하기 전에 고려해야 할 사항에 대해 자세히 알아보십시오. 선택.

1

내가 웹 응용 프로그램 (들) WCF를 통해를 통해 통신 할 수있는 Windows 서비스를 사용하는 것이 좋습니다 것입니다 볼 수 있습니다.

이렇게하면 유연성이 뛰어납니다. 프로세스 외부에서 데이터를 추가로 처리 할 수 ​​있습니다 (예 : "확장 된 네트워크의 50 명이 온라인 상태 임"과 같은 현재 상태 통계 집계). Windows 서비스는 프로세스 상태 메커니즘에있는 모든 제한 사항을 완전히 없애줍니다. 자유롭게 부하를 분산하고 여러 응용 프로그램에서 데이터를 소비하게 할 수 있습니다.

데이터가 소모성 인 경우 서비스에 상태를 저장하지 마십시오. 그렇지 않으면 일부/전체/주기적 데이터를 데이터베이스에 보관하십시오. 그러면 서비스 및/또는 웹 사이트가 다운 된 경우에도 복구 할 수 있습니다.

마지막으로 서비스에 종속 된 응용 프로그램을 빌드하면 은 잠재적 인 단일 실패 지점이됩니다.입니다. 최적의 설치는 데이터베이스 또는 동기화 메커니즘을 사용하여 프로세스 외부 서비스의 중복성을 보장합니다.

편집 : 원래 질문에 대한 자세한 정보를 얻기 위해 정적 구성원은 ASP.Net 사이트가 실행중인 응용 프로그램 도메인에 대한 모든 HTTP 요청에서 사용할 수 있습니다. 정적 변수는 다음과 같은 방법으로 지정할 수 있습니다. 속성)에 액세스 할 수 있습니다 (예 : ThreadStaticAttribute).

실제로 정적 변수는 값이 싼/약한 솔루션입니다. 수동으로 액세스를 동기화해야하며 만료를 거의 제어 할 수 없습니다. 추가 요구 사항없이 캐시 기반 솔루션을 구현하거나 앞에서 설명한 프로세스 외 방법론으로 이동하여 엔터프라이즈 요구 사항을 지원할 수 있습니다.

관련 문제