2012-03-10 8 views
1

현재 C#에서 Windows GUI로 작동하는 응용 프로그램을 다시 작성하고 싶습니다. 문제는 Windows에서 제대로 작동하지만 Mono의 GUI 문제로 인해 Mac 및 Linux에 적합하지 않다는 것입니다.C# Windows GUI를 C# 웹 응용 프로그램으로 이식하는 방법 : Win, Mac 및 Linux에서 out-of-the-box로 작업하는 방법?

제 아이디어는 C#을 계속 사용하는 것입니다 (C#을 실행하고 포트 할 수없는 필수 하위 프로그램으로 인해 필요함) Windows, Mac 또는 Linux의 모든 사용자가 사용할 수있는 웹 응용 프로그램으로 다시 작성하려고 시도 할 수 있습니다. 쉽게 액세스하고 작동하게하십시오.

높은 액세스 가능성을 목표로하기 때문에 내 응용 프로그램이 "즉시 사용"하는 것이 중요합니다.

내가 좋아하는 솔루션을 검토 한 결과 :

  • KayakHTTP하지만 POST 데이터를 지원하지 않습니다! (웹 GUI에 필요)
  • Mono의 XSP2와 ASP.NET MVC 웹 응용 프로그램을 만들지 만, 웹 응용 프로그램과 함께 작동하여 out-of-the-box 응용 프로그램을 만들 수 있습니까?

또는 C# 웹 응용 프로그램을 최종 사용자가 사용할 수 있도록 다른 아이디어가 있습니까? 필요한 것은 Mac과 Linux에 Mono를 설치하는 것입니다.

도움 주셔서 감사합니다.

편집 1 : 모든 부분을 올바르게 설명하지 못했다는 것을 알고 있습니다. 사실, 내 프로젝트 2 응용 프로그램이 있습니다

  • Mac 및 Linux
  • 내 GUI를 실행하기위한 모노를 사용해야하므로 C#으로 작성 및 이식 또는 재 작성 너무 커서되고 핵심 응용 프로그램 또한 C#으로 작성하고

내 목표는 Windows가 Mac 및 리눅스 GUI의 번거 로움을 양식 더 이상 거기 있도록 웹 응용 프로그램의 응용 프로그램에 내 GUI 응용 프로그램을 변환하지하는 것입니다 CORE 응용 프로그램을 제어 윈도우 폼을 사용하여 응용 프로그램입니다.

+1

3 개의 guis를 만드는 것이 더 적은 작업 일 수 있습니다. 당신에게 단순함을 유지할 수있는 인센티브를 제공합니다 ... –

+0

나는 당신의 요점을 얻지 못합니다. 위에서 언급 한 세 가지 운영 체제에는 괜찮은 브라우저가 있습니다. 웹 응용 프로그램은 클라이언트 측에 아무 것도 설치하지 않아야합니다. (어쩌면 멋진 플래시 또는 실버 라이트 또는 자바 런타임을 제외하고). 그리고 서버 측 (클라이언트가 아닌 부분)은 대부분 시간 문제가 적습니다. – Sascha

+0

나는 실제로 수정할 수없는 CORE 응용 프로그램이 있으며, 어쨌든 변경하기에는 너무 크기 때문에 내 게시물을 편집했습니다. 이 코어 애플 리케이션은 모든 OS에서 실행해야하는 내 GUI 응용 프로그램에 의해 제어됩니다. – virrea

답변

1

핵심 응용 프로그램이 클라이언트에서 실행해야합니까?

그렇지 않은 경우 가장 좋은 방법은 모든 것을 Windows 서버에서 실행될 웹 (ASP.NET) 응용 프로그램으로 다시 작성하는 것입니다. 모든 대상 플랫폼의 사용자는 웹 브라우저를 통해이 앱에 액세스합니다.

그렇다면 웹 앱은 좋은 생각이 아닙니다. 고객에게 웹 서버를 필요로하지 않으려 고합니다.

  • 모노 사용할 수있는 GUI toolkits를 살펴보고 다른 전면 것을 방지하기 위해 모든 대상 플랫폼에서 사용할 수 있습니다 귀하의 플랫폼의 각 끝 하나를 선택 : 당신은 두 가지 가능성이있다.
  • 모든 플랫폼에서 최상의 사용자 환경을 보장하려면 각 플랫폼에 대한 고유 한 GUI 툴킷을 선택하고 핵심 프런트 엔드에 인터페이스를 가진 한 모노를 사용하거나 기본 개발 환경을 사용하여 다른 프런트 엔드를 작성해야합니다 (예 : 커맨드 라인 또는 유사한)에서 액세스 할 수 있습니다.
+0

답변 해 주셔서 감사합니다. GUI Toolkit에 대한 Mono 페이지를 읽은 후에 잘 이해하면 Mono Migration Analyzer와 같은 것을 사용하여 System.Windows.Forms를 계속 지원할 수 있습니까? 또한 개발 시간과 노력을 줄이기 위해 하나의 GUI 툴킷 만 사용하고 싶습니다. – virrea

+0

@virrea 정확히. 기본 호출에 따라 타사 컨트롤을 사용하지 않는 경우 WinForms UI가 Mono에서 작동 할 수있는 좋은 기회입니다. 그렇지 않은 경우 포팅하려면 약간의 노력과 변경이 필요할 수 있습니다. Mono에 WinForms 앱의 성공적인 포트가 하나 이상 있다는 것을 알고 있습니다. [여기] (http://www.mono-project.com/Winforms_Samples)는 Mono에서 작동하는 몇 가지 WinForms 앱이기도합니다. –

+0

감사합니다.이 샘플을 살펴보고 각 플랫폼에서 테스트 해 보겠습니다. – virrea

0

이 질문은 중복되는 내용이지만 중복 된 내용을 찾을 시간이 없습니다.

간략하게, 대답은 :하지 마십시오. 데스크톱 응용 프로그램을 웹 응용 프로그램으로 일대일로 변환 할 수 없습니다. 두 패러다임은 너무 다릅니다.

대신 현재 응용 프로그램을 리팩터링하여 GUI의 모든 종속성을 제거하는 것이 좋습니다. 그런 다음 완전히 새로운 웹 응용 프로그램을 작성하여 요구 사항을 충족시키고 웹 응용 프로그램에서 사용자가 데스크톱 응용 프로그램에서 리팩토링 한 코드를 호출하게하십시오.

두 플랫폼간에 크고 숨겨진 차이점에 유의하십시오. 웹 응용 프로그램은 서버에서 실행됩니다. 동시에 여러 사용자가 사용하고 여러 스레드가 동시에 사용합니다. 리팩터링하는 동안 차이에 민감한 코드를 적어 두십시오. 예를 들어 static 멤버 필드를 사용하는 코드는 한 번에 한 명의 사용자 만 있기 때문에 데스크톱 응용 프로그램에서 작동 할 수 있습니다. 웹 응용 프로그램에서는 static이 모든 사용자와 모든 스레드에서 공유됩니다.

이것은 사용자가 염두에 두지 않은 것일 수 있습니다.