2011-08-22 20 views
2

나는 일종의 플러그인 시스템을 만들고 있습니다. 현재 및 Activator.CreateInstance을 사용하여 WinForms 응용 프로그램을 사용하여 어셈블리를로드했습니다. WinForms GUI는 현재로드 된 어셈블리 (플러그인)의 이름 만 표시합니다.서버 측에서 지속적인 사용자 정의 응용 프로그램 논리를 실행하십시오. 진입 지점?

라이브러리 PluginManager에 모든 IPlugin 구현 자 목록을 인스턴스화하고 보유하는 클래스가 있습니다.

그러나 지금은 Silverlight 응용 프로그램에서 플러그인 목록 (해당 이름 만)에 액세스 할 수 있기를 원합니다.

Visual Studio에서 만든 응용 프로그램이 Silverlight 4입니다.

두 개의 프로젝트를 추가 :

  • MyProject (SL 4 프로젝트)
  • MyProject.Web 내가입니다 무엇이 필요

합니다 (.XAP 파일을 실행하는 .ASPX 시작 페이지를 포함) PluginManager 및 인스턴스화 된 플러그인은 실버 라이트 페이지 요청 (aspx 페이지) 동안뿐만 아니라 사용자가 브라우저에서 실버 라이트 앱을 열지 않아도 항상로드됩니다. 그리고 .Web 프로젝트의 진입 점이 무엇인지 혼란 스럽습니다. (콘솔 응용 프로그램에서 코드를 Main 메서드, WinForms에서 Loaded 이벤트 처리기에 넣을 수 있지만이 .Web 프로젝트에서 내 "서비스"를 시작할 위치를 알 수 없습니다.

어떻게 작동합니까? 내 PluginManager은 어디서 인스턴스화해야하나요? HTTP 요청 중에 만 .Web 프로젝트의 수명이 짧습니까? 아니면 지속적으로 실행될 수 있습니까?

+0

웹 사이트 또는 웹 응용 프로그램? –

+0

이 프로젝트는 Silverlight 비즈니스 응용 프로그램 프로젝트 템플릿으로 만들어 졌으므로 VS는 두 프로젝트를 모두 생성했습니다. 그래서 응용 프로그램 같아요. 확실하지 않은, 그래도. 어떻게 확인할 수 있습니까? –

답변

0

MyProject.Web에 Global.asax를 추가하십시오. 그리고 Application_Start() 메소드에서 그렇게하십시오. 이 메서드는 응용 프로그램이 빌드 될 때 한 번만 호출합니다.

응용 프로그램을 빌드하기 전에 PluginManager를 실행해야하는 경우 설치 프로그램에서 실행되는 Windows 서비스를 만들어야합니다. 이 서비스는 PluginManager를 인스턴스화합니다.

+0

당신은 Windows 서비스에 대해 이야기하고 있습니다. 그렇다면 Global.asax에서 서비스에 대해 이야기하는 가장 좋은 방법은 무엇입니까? 나는 건축을 완전히 이해한다고 생각하지 않는다. –

+0

Application_Start()에 PluginManager를 만들 수 있습니다.하지만이 메소드는 웹 앱에 대한 첫 번째 요청시 한 번만 호출됩니다. PluginManager가 첫 번째 요청 전에 인스턴스화되어야하는 경우, 예를 들어 설치 애플리케이션 후에 한 번에 고유 한 Windows 서비스를 생성 할 수 있습니다. 하지만 Global.asax 솔루션은 귀하에게 충당 될 것이라고 생각합니다. –

+0

아니요, 실제로는 페이지에 대한 요청이없는 경우에도 앱이 실행되어야하기 때문에 실제로 서비스가 필요하다고 생각합니다. 이제 SL 응용 프로그램에서 내 Windows 서비스와 통신하는 올바른 방법을 찾아야합니다. –