2009-11-27 5 views
0

ASP.NET 웹 사이트에서 외부 "웹 파트"를로드 할 수 있습니까? 주체 사이트에 포함시킬 사용자 정의 컨트롤 또는 페이지가 포함 된 독립 실행 형 DLL을 만들고 싶습니다. 웹 사이트 용 플러그인 아키텍처와 비슷합니다.ASP.NET에서 플러그인 아키텍처를 사용할 수 있습니까?

사용자 컨트롤을 주 프로젝트에 바인딩하는 유일한 예는 컨트롤에 "하드"참조가 있어야합니다.

플러그인에서 구현할 수있는 공유 인터페이스를 정의하고 웹 사이트를로드하고 표시 할 수 있습니다.

+0

사용자 컨트롤 집합이 포함 된 DLL을 사용할 수 있습니다. 그리고 사용자 컨트롤은 물론 원하는 인터페이스를 구현할 수 있습니다. 그러나 당신은 그 이상을 원하고있는 것처럼 보입니다. 그러나 나는 정확히 무엇이 확실하지 않습니다. – RickNZ

+0

사용자 정의 컨트롤은 플러그인처럼 "주문형"으로로드 할 수 없습니다. 호스트 웹 사이트에 참조를 포함시켜야합니다. 호스트 웹 사이트에서 변경하지 않고 내 인터페이스를 구현하는 .dll을로드 할 수 있기를 원합니다. –

답변

3

이 DLL을

ASP.NET UserControl class library

당신이 설명하는 것처럼 뭔가에 UserControl의 컴파일에 대해 여기에 토론이, 내가보기 엔 creating custom server controls를 추천 할 것입니다. 모든 플러그 인에 대한 추상 기본 클래스를 제공 할 수 있습니다.

public abstract class PluginBase : WebControl { 

} 

그런 다음 디렉토리에서 어셈블리를 검색하고 각 어셈블리에서 해당 유형에서 파생 된 항목이 있는지 검색 할 수 있습니다.

DirectoryInfo di = new DirectoryInfo(path); 
    FileInfo[] assemblies = di.GetFiles("*.dll"); 
    foreach (var assembly in assemblies) { 
     Assembly a = Assembly.LoadFrom(assembly.FullName); 
     foreach (Type type in a.GetTypes()) { 
      if (type.BaseType == typeof(PluginBase)) {      
       //load plugin 
      } 
     } 
    } 

당신은 또한 당신의 인터페이스를 구현할 수있는 예제와 here

+0

좋은 해결책 인 것 같습니다. 코드에서 WebControl을 완전히 빌드해야합니까, 아니면 템플릿 엔진을 사용할 수 있습니까? –

1

플러그인을 설정 섹션을 제공하여 Web.config의에서 플러그 인을 등록 할 수 있습니다. 인터페이스는 하나의 메소드를 정의 할 수 있습니다. 이 메소드는 플러그인의 컨텍스트에 필요한 일반 입력을 가져옵니다. 플러그인의 책임은 최종 출력 페이지에 배치 할 수있는 HTML 마크 업을 반환하는 것입니다. 이렇게하면 페이지를 더 넓게 할 수 있지만 페이지 라이프 사이클과 포스트 백 기능을 손상시킬 수 있습니다. 페이지에서 플러그인이 무엇을 반환하는지 모르기 때문입니다.

+0

Bob이 제안한 것처럼 인터페이스가 WebControl을 구현하는 경우 다시 게시 기능이 손실됩니까? –

+1

예, 다시 게시 기능이 손실됩니다. 그냥 당신에게 생각을주고 UserControls asp.net에 의해 제공 inbuilt 플러그인 메커니즘입니다. UserControl은 System.Web.UI.Page에서 파생되므로 다시 게시 할 수 있습니다. 필자는 휠 재발견보다는 자신 만의 UserControl 기본 클래스를 만들어 UserControls를 특수화하여 플러그인 개발자가 사용할 수 있도록해야한다고 권장합니다. 이는 매우 특수하여 응용 프로그램 아키텍처 및 핵심 비즈니스 논리에 결합 된 메서드와 소품을 노출 할 수 있습니다. –

1

난 당신이 분리 모듈을로드 할 수있는 인프라를 갖고 싶어 생각합니다. (제어의 반전, 또는 IOC의)

이 WCSF 웹 클라이언트 소프트웨어 공장 www.codeplex.com/websf에 대한 자세한 내용 당신은 모듈 방식 디자인 웹 응용 프로그램에 대한 좋은 샘플 코드를 다운로드하시기 바랍니다하려는 경우

Cuyahoga

구불 구불는 오픈 소스입니다 .NET 웹 사이트 프레임 워크. 이 내용 관리 기능을 제공하며, 모두가 ASP.NET 3.5 소셜 네트워킹 아주 좋은 책을 읽고 후 모듈 식 접근 방식을

있습니다.

ASP.NET 3.5 실용적인, 실제적인 방법으로 새로운 핵심 ASP.NET 주제를 알아보기 사용하여 완전한 기능을 갖춘 엔터프라이즈 급 소셜 네트워크 만들기 : LINQ, AJAX, C# 3.0, n 계층 아키텍처 및 MVC 친구 목록, 메시징 시스템, 사용자 프로필, 블로그, 메시지 보드, 그룹을 구축 , 그리고 더 많은 예제 코드, 명확한 설명, 흥미로운 예, 하고 실용적인 조언 리치 - 정말 손에 책 ASP.NET 개발자를위한

을 www.packtpub.com/expert-guide-for-social-networking-with-asp-.net-3.5/book 저자는 실제 웹 응용 프로그램에 디자인 패턴을 적용하는 방법을 보여줍니다. ns. 굵은 글씨로 강조 모든 모듈은 StructureMap

이 책은 또한 당신이 Packt 출판 웹 사이트에서 다운로드 할 수있는 아주 좋은 샘플 코드가의 사용과 IOC의 패턴으로 개발된다.

관련 문제