직장에서 대형 프로젝트에 대한 설계 아이디어가 있습니다. 생각해 보았지만 생각에 대한 피드백을 많이 받고 싶습니다. 이행.컨트롤러 팩토리를 ASP MVC에 추가하기
기본 아이디어는 간단합니다. 코드를 다시 컴파일하지 않고도 추가 컨트롤러와 뷰를 사용하여 향후 확장 할 수있는 ASP MVC 응용 프로그램을 만들고 싶습니다. 하나의 MVC 응용 프로그램에 매우 기본적인 기능 집합을 포함시키고 해당 응용 프로그램에 특정한 컨트롤러, 데이터 및 비즈니스 논리가 포함 된 다른 'Application.dll'을 추가하여 기능을 확장하는 것이 아이디어입니다.
문제는 MVC가 동일한 어셈블리 내의 유형에 대한 라우팅을 수행하므로 라우팅 정의를 데이터베이스로 이동해도 MvcHttpHandler가 라우트 할 수 없기 때문입니다. MVC 코드를 살펴보면 현재 어셈블리에서만 보이는 Activator.CreateInstance를 호출하는 컨트롤러를로드하는 것으로 나타났습니다.
내 솔루션 간단하지만 어쩌면 나는 뭔가를 놓치고있다. 나는 ControllerFactory를 직접 (확실하지 않은 방법으로) 대체하거나 파생 된 클래스에서 그 기능을 복제함으로써 MvcHttpHandler를 오버라이드 할 것이다. 새 코드는 요청을 읽고 현재 어셈블리에서 컨트롤러를로드 한 다음 확장 된 컨트롤러에서 컨트롤러를로드하려고 시도합니다. 일단 적절한 어셈블리가 발견되면 CreateInstance를 사용하여 그 어셈블리를 전달하여 원하는 컨트롤러를 얻습니다.
감사합니다. 그게 내가 찾고 있던거야. – Gil