2014-11-05 3 views
0

모든 테넌트에 대해 동일한 유형의 메시지를 (단계적으로) 처리 할 멀티 테넌트 ASP.NET 솔루션을위한 프로토 타입을 만들고 있습니다. 그러나 일부 임차인의 경우 약간의 단계를 약간 다르게 처리해야합니다.. 닷넷의 동적 파이프 라인 아키텍처

그래서 하나의 메시지 유형에 대해 10 단계가 있으며 100 명의 세입자가 있다고 가정 해 봅시다. 평균적으로 세입자에게는 두 가지 맞춤 단계가 있습니다. 이렇게하면 10 개의 표준 단계 구현과 20 개의 사용자 정의가 제공됩니다.

내가 달성하고자하는 모든 솔루션을 다시 시작하지 않고도 단계의 업데이트 된 구현 (새 DLL)을 사용하여 솔루션을 업데이트 할 수 있습니다. 그래서 질문은 - 이것을하기에 가장 좋은 아키텍처는 무엇입니까?

각 단계 구현을 별도의 AppDomain에서 실행하도록 생각했지만 메시지 유형, 테넌트 및 단계 수가 증가함에 따라 많은 메모리를 사용하게 될 AppDomains가 많이 생겼습니다. 아마도 최적의 성능을 내지 못할 것입니다.

이 방법이 최선입니까? 아니면 유일한 방법입니까? 아니면 내가 조사해야 할 다른 방법이 있습니까?

답변

0

MVC (또는 심지어 웹 양식)를 사용하는 경우 인라인 레이저 코드에 "단계"를 쓸 수 있습니다. 그 중 하나가 업데이트해야하는 경우 새 파일을 업로드하십시오. IIS는 사용자가 아무것도하지 않아도 자동으로 변경 사항을 적용합니다.

+0

나는 그것을 고려할 것이지만, 대부분의 단계는 일반적으로 Razor 코드에서하는 것이 아니며 데이터베이스 또는 복잡한 로직에 대한 쿼리를 포함 할 수 있습니다. 아마도 가능하다하더라도 그것은 내 마음 속에서 최적의 솔루션이 아닙니다. –

+0

Razor는 데이터베이스 또는 서버 측에서 필요할 수있는 기타 리소스에 대한 전체 액세스 권한을 가진 웹 서버에서 실행되며 컨트롤러 코드와 동일한 파이프 라인에서 실행됩니다. MVC (View와 Controller의 분리)는 단순히 관례입니다. 신청서의이 분야에 대한 국제 대회를 변경할 수는 없습니다. 세상은 무너지지 않을 것입니다. :)이 경우에는 MVC를 플러그인 아키텍처 (예 : MEF)로 생각할 수 있습니다. 이는 정확히 사용자가 필요로하는 것입니다. –

+0

나는 이것이 갈 길이라는 것에 동의한다 - 그것은 나와 함께 앉지 않는다.) 나는이 접근법을 살펴볼 것이다. 아마도 그것이 내가 생각하는 것보다 낫다. –