2009-04-11 4 views
8

사이트를 만들고 플러그인을 개발할 수있는 최상의 방법은 무엇입니까?플러그 형 ASP.Net 웹 사이트를 만드는 방법은 무엇입니까?

블로그 모듈을 만들고 싶거나 사용자 또는 공동 개발자가 플러그인을 추가하여이 모듈 기능을 확장하기를 원합니다.

업데이트 : 초고속 답변을 보내 주셔서 감사합니다.하지만이 문제는 저를 위해 끝났습니다. 더 간단한 해결책이없는 것 같은데, 나는 blogengine plugin 생성 시스템을 본 것처럼 [Extension]으로 클래스 플러그인을 꾸미기 만하면된다.

저는 중급 핵심 개발자입니다. 그래서 기본 클래스, 상속, 인터페이스를 생각하고 있었는데, 어떻게 생각하십니까?

+0

플러그인 아키텍처가 간단하지 않습니다. 단순한 것이라면 모든 소프트웨어 스택 및 프로그래밍 언어에 디자인에 포함됩니다. 각 플러그인은 정의 된 방식으로 핵심 프로그램과 통신해야합니다 (그렇지 않으면 별도의 프로그램 일 것입니다). – Aron

답변

12

나는 완전히 내 대답은 귀하의 질문에 편집에 따라 재 작성

편집.

최소 단계만으로 플러그인 아키텍처를 구현하는 것이 얼마나 쉬운 지 보여 드리겠습니다.

1 단계 : 플러그인에서 구현할 인터페이스를 정의하십시오.

namespace PluginInterface 
{ 
    public interface IPlugin 
    { 
     string Name { get; } 
     string Run(string input); 
    } 
} 

2 단계 : IPlugin를 구현하는 플러그인을 작성합니다.

namespace PluginX 
{ 
    using PluginInterface; 

    public class Plugin : IPlugin 
    { 
     public string Name 
     { 
      get { return "Plugin X"; } 
     } 

     public string Run(string input) 
     { 
      return input; 
     } 
    } 
} 

3 단계 : 플러그인을 실행합니다.

namespace PluginTest 
{ 
    using System; 
    using System.IO; 
    using System.Runtime.Remoting; 
    using PluginInterface; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      string pluginFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PluginX.dll"); 
      ObjectHandle handle = Activator.CreateInstanceFrom(pluginFile, "PluginX.Plugin"); 

      IPlugin plugin = handle.Unwrap() as IPlugin; 

      string pluginName = plugin.Name; 
      string pluginResult = plugin.Run("test string");   

     } 
    } 
} 

이 그냥 플러그인 architechure의 기본, 가장 간단한 예이다 명심하십시오. 당신은 또한

  • 같은 일들이 어느 인터페이스, 추상 클래스를 선택 그 자체 AppDomain
  • 의 내부 플러그인을 실행하는 플러그인 호스트를 생성 할 또는
  • 사용 반사와 플러그인을 장식하는 속성 수, 인터페이스 , 지연 바인딩 작업을 수행하기 위해 IL에서 방출 한 썽크 또는 대표자

디자인에 따라 결정됩니다.

+1

감사합니다 남자, 이것은 정확히 내가 뭘 찾고 있었는지 :) – DevMania

1

Microsoft에서 제공하는 Managed Extensibility Framework의 작업처럼 들립니다. 현재 프리뷰 버전에 있지만,이를 위해 자체 프레임 워크를 롤링하는 것보다 나은 방법이 될 것입니다. 거기에 사이트에서 이것을 사용하는 방법에 대한 안내 링크가 있습니다.

2

은 기술 및 architecturas 관점을 분리하는 가치입니다 : (확장 성 프레임 워크 관리) 코드 레벨 MEF에서

  • 은 좋은 시작이다. Here은 간단한 예입니다.
  • 다른 DI (의존성 주입 프레임 워크) (. 즉, 유니티)

에 잘 작동 할 수 있으며 건축 수준에서이 문제를보고하는 것이 좋다 :

  • Web Client Software Factory 페이지 & 페이지에서. 여기에는 "복합 웹 응용 프로그램을 만드는 방법"에 대한 기술적 인 정보뿐만 아니라 유용한 정보도 있습니다. examples.을 참조하십시오. 모듈화 경계 패키지가 있습니다.
  • Spring Framework.

& 프레임 워크 중 일부를 사용해 본다면 빠르고 효율적이라고 생각합니다. 그리고 intcoress 뭔가 찾을 경우 ofcoz 소스를 읽습니다.

편집

당신이 다음 Blog Engine 첫 번째 시도 확장 블로그 엔진을 검색하는 경우. ASP.NET 커뮤니티에서 왔습니다.

1

이 아키텍처를 암시하는 실제 오픈 소스 응용 프로그램을 보려면 DotNetNuke을 살펴보십시오.

관련 문제