1

asp.net MVC 프로젝트는 한 고객에게만 작동하도록 맞춤화되어 있습니다.MVC 컨트롤러 VS 공장 방법

필요한만큼 많은 고객과 작업 할 수 있도록 프로젝트를 확장해야합니다.

또는 해제 일부 기능을 설정하는 경우 각 고객이 결정할 수 있습니다

내가 가장 좋은 방법이 무엇인지 궁금 (DB에 새 고객이 추가되어 처음으로 정의) :

을 1) 필요한 기본 기능을 포함하는 기본 컨트롤러를 사용하고 기본 컨트롤러를 확장하는 새 컨트롤러를 추가하십시오.

2) 컨트롤러 하나만 사용하고 팩토리 메소드 패턴으로 각 고객을 구성하십시오 (각 고객은 고유 한 구체적인 클래스를 가짐).

3) 모든 기능을 보유하고 또는 DB에 따라 해제 기능을 켜 단 하나의 컨트롤러 스위치를 사용 (DB에 새 고객이 추가되어 처음으로) 정의

감사

+0

그것은, 좋은 것) 전체 컨트롤러 또는 특정 작업에 액세스 할 수있는 권한을 의미합니까? 고객 페이지 또는 고객 편집 기능에 액세스 할 수있는 특권이 있습니다. 또는 고객 설정에 따라보기에 더 많거나 적은 데이터를 표시합니까? 고객을 위해 x 및 y 열을 표시하고 다른 열을 모두 표시하는 것과 같습니다 –

답변

4

모든 이러한 접근법 중 일부는 너무 제한적이어서 일정한 신규 고객을 확보 한 후에는 장소 전체에서 코드를 복사하거나 한 고객에게는 필요하지 않지만 다른 고객에게는 필요하지 않은 코드를 작업하게됩니다.

각 고객의 특정 요구 사항을 일반적이고 재사용 가능한 옵션으로 구현하는 것이 좋습니다. 예를 들어 한 고객에게 대금 청구 섹션이있는 경우 결제 섹션이있는 ThatCustomerController를 만들지 말고 대금 청구 역할을 추가하고 대금 청구 컨트롤러를 추가 한 다음 해당 역할별로 컨트롤러에 대한 액세스를 제한하십시오.

지금은 인 것처럼 느껴질 수도 있지만, 1 년 내에 유연성에 대해 감사 할 것입니다.

매우 거친 의사 코드 예제 : 1 : 어쩌면 예로, 온/오프하는 기능의 유형에 대한 세부 정보를 추가 할 수 있습니다 경우 기능을 말할 때

public class GeneralController : Controller 
{ 
    public ActionResult Index() 
    { 
     // Everyone can come here 
    } 
} 

[Authorize(Roles = "Billing")] 
public class BillingController : Controller 
{ 
    public ActionResult Index() 
    { 
     // Only those with the 'billing' role can come here 
    } 
} 
+0

hello steve, 답장을 보내 주셔서 감사합니다. 나는 권한 부여를위한 역할을 만들 필요가 없다. 내가 만든 모든 고객은 고유 한 UI에서 어떤 기능을 노출 할 것인지를 결정해야합니다. – oren

+0

그런 다음 동일한 접근법을 사용할 수 있지만 옵션 화면을 통해 자신의 '역할'을 할당 할 수 있습니다. 누가 지금 할당했는지는 중요하지 않지만 나중에 표시 될 수 있습니다. 표시/숨김에 대한 설정으로 역할을 사용하는 것은 프레젠테이션을 설정에서 분리하는 매우 유연한 방법입니다. 특히 나중에 "설정"역할을 가진 사용자 만 설정을 변경할 수있게하려는 클라이언트를 얻는 경우. 나중에 일부 사용자 만이 결제에 액세스하기를 원하는 고객이있는 경우 기존 고객에게 영향을 미치지 않고 해당 사용자를 잠그는 프레임 워크를 이미 갖추게됩니다. –