2011-12-29 4 views
15

RavenDB를 HTML UI, WebService UI 및 데이터에 액세스 할 수있는 서버 유틸리티가있는 응용 프로그램의 데이터 저장소로 사용한다는 생각을 갖고 있습니다. RavenDB를 사용하는 한 가지 이유는 복제 및 샤딩을 통해 제공되는 수평 확장입니다. 그러나 Raven을 Windows 서비스로 실행하거나 IIS를 통해 실행하는 것과 관련하여 몇 가지 고려 사항이있는 것으로 보입니다.Windows 서비스 또는 IIS를 통해 RavenDB를 실행해야합니까?

  • 보안 - 레이븐 서비스 더 안전 또는 IIS 나에게 등 IP 주소, .NET 회원에 의해 제한 할 수 있도록 더 많은 유연성을 허용 사용합니다
  • 캐싱 - IIS는이 기능에 대한 더 나은 선택 인 것 같다
  • 아키텍처 - 타사에서 데이터 저장소에 액세스하는 것을 원하지 않으므로 IIS를 통해 Raven을 노출하는 것이 실제로 의미가 있습니다. 또한 Raven과 다양한 UI 및 유틸리티 사이에는 비즈니스 계층이 있으므로 IIS 관련 작업은 불필요한 것으로 보이며 불필요한 복잡성을 초래할 수 있습니다.
  • 성능 일 - IIS 파이프 라인은 아마도 Windows 서비스에 비해 각 요청에 대한 오버 헤드가
  • 스케일링 - IIS를 사용하여 단지 작은 배치 파일
  • 와 까마귀 서비스를 설치 반대로 여러 서버에 걸쳐 확장 할 아마도 더 복잡하다

편집을 할

난 당신이 모두가 하나의 웹 클라이언트입니다하지만 당신은 몇 가지 다른 클라이언트가있을 때, 까마귀의 API가 이리저리 단일 클라이언트를 방지하기 위해 독립적으로 노출해야하는 경우 레이븐의 임베디드 구성을 사용하여 이해할 수

m 데이터 파일 잠그기.

답변

16

Jedatu, 우리는 일반적으로 IIS 내부 RavenDB를 개최 , 그것은 특히, 몇 가지 쉽게, 서버의 관리가 용이하다 차이점이 있으며 IIS에는 세분화 된 관리를위한 더 나은 옵션이 있습니다.

+0

답변 해 주셔서 감사합니다. –

5

보안 - 레이븐 서비스 더 안전 또는 사용하여 IIS 나 더 많은 유연성이 별도의 프로세스가 더 안전 사용 등

IP 주소, .NET 회원에 의해 제한 할 수 있습니다.

캐싱 - IIS이 기능

DB 캐싱 (캐싱 엔티티 문서)에 대한 더 나은 선택 IIS 캐싱과 동일하지 않습니다처럼 보인다

(생성 된 페이지 또는 페이지의 일부를 캐시하는)

아키텍처 - 제 3자가 데이터 저장소에 액세스하는 것을 원하지 않기 때문에 IIS를 통해 Raven을 노출하는 것이 실제로 의미가 있습니다. 또한 Raven과 다양한 UI 및 유틸리티 사이에는 비즈니스 계층이 있으므로 IIS 관련 작업은 불필요한 것으로 보이며 불필요한 복잡성을 초래할 수 있습니다.

데이터 폴더에 액세스하는 모든 사용자는 까마귀로 열 수 있습니다. Windows 보안 기능을 사용하여 보호하지 않는 한 해당 위치는 중요하지 않습니다.

실적 - IIS 아마

당신이 콜드 스타트를 참조하는 Windows 서비스보다 더 많은 오버 헤드가? 포함 된 Raven을 사용하면 클라이언트와 서버 간의 HTTP 요청이 제거됩니다.

스케일링 - 사용 IIS는 단지 작은 배치 파일로

여러 서버를 레이븐 서비스를 설치에 반대하는 모든 IIS가 별도의 까마귀 인스턴스를 필요로 여러 서버에 걸쳐 확장 할 아마도 더 복잡하다 : 다른 사람들과 이야기 할 수 있습니다. IIS 우리는 의미있는 반환 한 보지 못했지만 등 모든 활성화의 를 돌보는 경우

+0

유용한 정보이지만이 시나리오에서 어떤 옵션을 권장하는지 알 수는 없습니까? – jedatu

+0

나는 당신의 고려가 실제로 유효하지 않다는 것을 말하고있다. 내가 할 수 있다면 나는 서비스를 갈 것입니다. 더 견고하고 비늘이 좋아 보인다. 자체 전용 메모리가 있으면 IIS 응용 프로그램 풀도 도움이되지 않습니다. – jgauffin

+0

Ayende는 항상 RavenDb와 관련하여 IIS 서버> Windows 서비스라고 말합니다. –

관련 문제