2009-12-03 3 views
2

간단한 WinForms 응용 프로그램을 ASP.Net 웹 응용 프로그램으로 마이그레이션하려고합니다. WinForms 응용 프로그램은 기본적으로 복잡한 일반 C 응용 프로그램의 프레젠테이션 계층이며 COM interop을 통해 레거시 코드와 상호 작용합니다. ASP.Net, javascript, jQuery, WinForms 및 interop의 많은 경험이 겸손하므로 기본을 알고 있으므로 디자인 결정을 내려야합니다.레거시 코드 interop에 대한 웹 응용 프로그램

앱을 지금 보이는 방법은 이것이다 :이 기존의 C (심지어 C++) 변경 및 재 컴파일 할 수있는 코드의 무리이지만, 이식이 옵션을 선택하지 않습니다

  1. . 이것은 비즈니스 + 데이터 레이어입니다. 원하는 것을 호출하십시오. 나는 이것을 레거시 코드이라고 부를 것입니다.

  2. 레거시 코드를 시작하면 프레젠테이션 및 사용자 상호 작용에 사용되는 COM 서버가 인스턴스화됩니다. 프레젠테이션 데이터는 직렬화되어이 COM 개체 ("출력 할 사람을 보내고 있습니다.")로 전송되며 사용자 상호 작용은 주기적 폴링 ("나에게 입력이 있습니까?")을 통해 이루어집니다. 가장 좋은 해결책은 아니지만 지옥처럼 단순합니다.

  3. COM 개체는 실제로 COM으로 노출 된 .NET 2.0 WinForms 앱입니다. 이 응용 프로그램은 .NET Remoting을 통해 다른 .NET 응용 프로그램에 일부 기능을 노출하지만 이는 그리 중요하지 않습니다. 시스템이 다소 복잡하지만

, 윈폼 응용 프로그램은 정말에만 상호 작용을 위해 사용된다, 그래서 웹으로 전환하는 매우 간단합니다. 웹 서버를 수행하는 가장 좋은 방법은 무엇인지 확실하지 않습니다. < ---> 레거시 코드 상호 작용.

.NET Remoting이 이미 구현 된 이후로 가장 먼저 떠오르는 것은 로컬 .NET Remoting을 통해 웹 파트에 WinForms 기능을 노출하여 레거시 코드 간의 프록시처럼 작동하도록 만드는 것입니다 및 웹 응용 프로그램. 실제로 양식이없는 통신 부분 만 필요합니다. 이 경우 웹 응용 프로그램은 .NET Remoting (로컬)을 통해이 기능에 액세스해야합니다.

.NET Remoting을 사용하여 웹 응용 프로그램을 다른 응용 프로그램과 로컬로 통신하는 것이 현명한 방법입니까? 또한 응용 프로그램을 Windows 서비스로 변경할 수도 있지만 COM을 통해 레거시 코드로 해당 기능을 노출 할 수 있습니까?

이것을 달성하는 더 좋은 방법은 무엇입니까? 필요한 경우 레거시 코드를 일부 수정할 수도 있습니다.

답변

2

저는 여러분에게 중요한 한 가지 측면은 WinForms 앱의 단일 사용자 성과 웹의 다중 사용자 세션 성이라고 생각합니다.

10 년 전 저는 MTS에서 COM 객체 (VB6)로 비즈니스 로직을 실행 한 이후 몇 가지 웹 프로젝트에 관여했습니다. 이러한 COM 객체를 세션에 속하게하는 것은 '아니오'였습니다. 왜냐하면 사용자가 많이 떠났을 때 사용되지 않는 COM 객체에 묶여있는 많은 자원으로 끝날 수 있었기 때문입니다.

구성 요소 서비스에서 COM 개체를 실행하는 것이 좋습니다. 그것은 해결책이 아닐 수도 있지만 탐구 할 가치가 있습니다.

COM 개체를 구성 요소 서비스에 배치하면 COM을 통해 연결할 수있는 Windows 서비스를 작성할 수 있습니다. y는 모든 x에 대해 손댈 수 있습니다. x는 좋아하는 음식이고 y는 좋아하는 곳입니다.

.Net Remoting은 훌륭하지만 통신 장치로는 주로 흥미 롭습니다. 많은 서버에서이 문제를 해결할 지 모르겠다. 회사 내부 애플리케이션처럼 들린다. 나는 구체적인 세부 사항이 충분하지 않습니다.

+0

당신의 응답을 주셔서 감사합니다 :

정확히을하는 프레임 워크 내 즉시 제안을 참조하십시오. 구성 서비스에 대한 경험이 없으므로 먼저 확인하겠습니다. – Groo

1

단순한 WinForms 코드를 ASP.NET 인프라에서 다시 사용하기 위해 찾아야하는 것처럼 보입니다. 즉, UI 코드를 다시 작성하지 않고 웹을 통해 WinForms의 일부 에뮬레이트 인프라에서 그대로 사용하면됩니다. http://www.visualwebgui.com/landing/wow.aspx

난이 도움이되기를 바랍니다 ...

+0

감사합니다. 하지만 GUI는 웹에 이식하는 데 아무런 문제가 없습니다. 문제는 WinForms 응용 프로그램이 실제로 C 인스턴스를 생성하는 일반 C 응용 프로그램의 COM 서버처럼 작동한다는 것입니다. 이 활성화는 나를 괴롭히는 것입니다. – Groo

관련 문제