저는 여러 가지 분야의 업무가있는 웹 응용 프로그램에서 작업하고 있습니다. 시간이 지남에 따라 개발 및 유지 관리하는 것이 문제가되었습니다. 공유 할 공통 파일 (Masterpages, Resources, Css 등)이있는 기본 루트 웹 프로젝트에 따라 웹 프로젝트를 여러 하위 프로젝트 또는 라이브러리로 나누고 싶습니다. 이상적으로 저는 일종의 주입으로 선택적으로 "구성 요소"를 게시하거나 사용자 정의 된 변형을 게시 할 수 있습니다.이 구성은 배포 DB 설치 후에 따라 달라집니다.asp.net webforms에서 여러 웹 프로젝트 구조 구현
나는 여러 프로젝트, 의존성 주입 및 복합 응용 프로그램과 관련된 모든 페이지를 읽은 후 '내 머리를 부드럽게 할 때까지 찾을 수 있지만 정말 유용한 것을 찾지 못했습니다. 이론적 인 접근법이나 단위 테스트 응용 프로그램의 주요 부분 (음, 원하는 응용 프로그램을 만들 수는 없지만 여전히 다른 단위 테스트 가능) VS2010.Net 4.0의 다른 접근 방식은 단순히 작동하지 않습니다.
누군가가 완벽한 해결책이나 예를 나에게 알릴 수 있습니까? 아니면 간단히 논의하도록하십시오.
우리는이 솔루션이 이미 디렉토리로 분리 모듈의 내용으로, 다음과 같은 구조를 가지고 말 :
솔루션
L_ Datalayer library project
L_ Bussiness logic /common utils library project
L_ Web project
L_ Controls
L_ Images
L_ Css....
L_ Warehouse
L_ Sales
Masterpages
...
창고 및 판매는 "모듈"
감사 관련된 페이지를 포함 ,
내 진행 상황 게시 주제에.
스티븐의 제안에 따라 나는 MEF를 사용하여 더 많은 것을 실험했다. 문서의 부족으로 인해, 특히 webform의 경우, 그게 고통 스러웠습니다. 지금까지 나는 내 솔루션에서 MEF를 구현하고 성공적으로 메인 프로젝트에서 볼 수있는 플러그인 프로젝트를 삽입했다.
그런 다음 플러그인 이름, 기본 페이지 URL 및 주문을 가진 인터페이스를 통해 사용 가능한 플러그인을로드하고이 모든 데이터를 선택하고 메뉴 탭을 렌더링합니다. 그 부분은 쉽습니다. 드디어에 리소스로 내장 된 aspx 페이지를 가지고
(다른 수출 인터페이스) 포함 된 그 페이지에 대한 여러 가지 메뉴를 렌더링 플러그인의 기본 페이지로 리디렉션해야합니다 메뉴 요소를 클릭
플러그인 프로젝트. 내가 현재 붙어있는 곳.
¿ MEF를 사용하여 라이브러리에 리사이져로 포함 된 페이지를 렌더링하는 방법이 있습니까? 아니면 VirtualPathProvider도 사용해야합니다. 해당 페이지로 리디렉션 할 문장을 구체적으로 표시 하시겠습니까? 몇 가지 방법을 시도했지만 아무도 작동하지 않습니다. (MEF 및 VirtualPathProvider)
나는 그것에 대해 이야기하는 수많은 기사를 보았지만 모두 제어 렌더링을 수행했지만 페이지는 끝내지 않았습니다. 너무 초조해.
더 나은 관심사 분리를 원한다는 것을 이해합니다. 이는 유지 관리 가능성을 높여주기 때문입니다. 하지만 정말로 플러그인 아키텍처가 필요합니까? 플러그 인을 사용하여 일반 LOB 응용 프로그램에 새로운 기능을 추가하는 것은 정말 어렵습니다. 이러한 변경으로 인해 일반적으로 완벽한 응용 프로그램을 테스트해야하며 가장 중요한 문제를 생산에 적용하기 쉽고 유지 보수 성은 무엇보다 중요합니다. – Steven
@Steven 이제 애플리케이션을 실제로 테스트해야합니다. 고객이 절차를 더 잘 수행하기 위해 이익을 얻고 개발하면서 사용하려고합니다. 나는 그것으로 모든 문제를 알고 있지만, 그것을 다른 방법으로 만들고 싶지 않습니다. 온라인으로 분리 된 구성 요소를 배치하는 데 어려움을 겪으면 모든 사무실에 작업을 중단하고 관련 부품 만 말하도록 피할 수 있습니다. – Sergio
@Steven 위의 매우 불행한 답변. Bussiness 구성 요소의 웹 인터페이스를 분리하여 더 나은 디버깅을하고 컴파일하지 않도록합니다. 동시에 나는 그것들을 교환하고 다른 세트의 배치를 만들기 위해 더 가벼운 버전의 "구성 요소"를 가질 수있는 능력을 원합니다. 더 가볍거나 더 표준. 고객이 내가 알고있는 것을 구현하려고한다고 표시됩니다. – Sergio