Mono는 엔터프라이즈 세계에 자리를 차지하고 있습니까?


22

엔터프라이즈 Windows 기반 솔루션의 경우 때때로 .NET이 최선의 선택입니다. Linux를 사용해야하는 기업 (또는 Linux를 선호하는 기업)은 Mono를 어떻게 생각합니까? 개발자가 문제가 아니며 .NET / Mono 및 Java와 같은 다른 가능한 경쟁자에 익숙하다고 가정합니다.

중소 기업이 Java와 같은 기술과 달리 서버에서 Mono를 실행합니까? 그런 회사를 알고 있습니까?

답변:


22

우리는 내가 일하는 대기업에서 사용했습니다. 우리는 프로젝트 시작부터 계획을 세우지 않았지만 그 방식으로 해결되었습니다.

우리는 .NET에서 개발 한 내부 프로젝트를 가졌습니다. UAT에 들어간 후 비즈니스 소유자는 내부 직원뿐만 아니라 일부 고객에게 앱을 열기를 원했습니다. 외부 (DMZ) 서버의 대부분은 Linux 기반이며 DMZ에있는 Windows 서버는 적합하지 않습니다 (용량에 너무 가깝습니다). 새로운 하드웨어를 구매하는 대신 누군가 Mono에서 앱을 실행하도록 제안했습니다. 우리는 며칠 동안 자체 테스트를 수행 한 다음 앱을 QA, UAT에 출시했습니다. 문제가 없었습니다.

프로젝트를 시작할 때 요구 사항을 받았다면 .NET으로 작성하도록 선택하지 않았을 수 있지만 이는 매우 늦은 요구 사항 변경에 대한 좋은 결과였습니다. 이제 다시 등장하면 Mono에 성공적으로 배포 할 수 있다고 확신합니다 (결국 코드를 ​​조정해야한다고 생각하지만 운이 좋았다고 생각합니다).


5
좋은 전쟁 이야기.

15

나는 상업적으로 모노를 사용하지 않았지만 Windows 회사에서 일하기 때문에 개인적으로 사용하지만 개인적으로 Linux 사용자이기 때문에 직장에서하는 일을 재사용 할 수 있습니다.

전반적으로, 나는 다음과 같이 말하는 Miguel de Icaza에 동의합니다.

  • .NET 응용 프로그램의 25 %가 모노로 즉시 작동
  • 다른 25 %는 하루 이내에 작동하도록 만들 수 있습니다
  • 일주일 이내에 25 % 더 일할 수 있습니다
  • 마지막 25 %는 응용 프로그램 (WinForms / COM)을 완전히 다시 작성해야합니다.

모노는 꽤 잘 작동하지만 몇 가지 문제가 있습니다.

  • .NET <= 2.0에 대해서만 VB.NET 지원
  • Windows 인증이 구현되지 않았습니다
  • WPF가 구현되지 않았습니다
  • 불완전한 WCF 지원
  • Entity Framework가 구현되지 않았으며 구현 계획이 없습니다.
  • "ASP.NET 웹 파트"가 구현되지 않았습니다
  • COM-interop 지원 안함
  • 버전 15.5 (최신)의 Sybase 연결이 작동하지 않습니다
  • C # 클래스 라이브러리의 버그 및 불완전 성 (예 : XML은 모노 <2.6에서 버그가 있음)
  • Linux 웹 브라우저 컨트롤에는 GTK #가 필요합니다

그런 다음 사소한 문제 :

  • Windows Forms는 작동하지만 항상 올바르게 렌더링되는 것은 아닙니다
  • MonoDevelop는 윈도우 폼을 디자인 할 수 없습니다
  • MonoDevelop 'step through'디버깅이 실제로 작동하지 않습니다
  • 5 시간 후 모노 서비스 충돌 ...

내가 말할 수있는 것을 형성하십시오 :

  • WebServices 기능이 우수합니다
  • WebApplication을 실행하면 WebParts를 사용하지 않는 경우 상당히 잘 작동합니다.
  • WindowsForms를 실행하면 항상 아주 멋지게 보일 수는 없습니다 (최소한).
  • Microsoft Reporting Service와 동등한 기능은 없습니다 (FYIreporting이 가장 유사하지만 1 년 이상 활동이 느리고 버그가 많으며 매우 불완전합니다)
  • Word 또는 Excel 문서를 만들어야하는 경우 문제가 발생합니다.

Linux에서 .NET을 개발하려는 경우

  • ASP.NET을 개발할 수 있습니다 (디버깅 및 단계별 작업이 매우 나쁩니다)
  • 실제로 Linux에서 WinForms를 개발할 수 없습니다
  • WinForms 대신 GTK #을 사용해야합니다

다른 말로:

  • Mono는 웹 응용 프로그램과 WebServices 및 MailServers를 실행하고 있습니다.
  • 그러나 WindowsForms 응용 프로그램을 실행할 수 없으므로 GTK #로 응용 프로그램을 작성해야합니다.
  • 보고 솔루션 및 MS 파일 형식 지원 (또는 작업 라이브러리)이 없습니다.



편집 (2015 업데이트) :
지금까지 '스텝 스루'디버깅이 훌륭하게 작동하고 있으며 MonoGet을 사용하여 nuGet 종속성이있는 경우에도 Linux에서 웹 응용 프로그램을 개발할 수 있습니다. Excel 및 Word 라이브러리의 문제도 사라졌으며 이제 엔티티 프레임 워크가 오픈 소스입니다. 나머지는 거의 "있는 그대로"(단일 서비스가 고정되어 있는지 모르겠지만 그렇게 희망합니다).
개선 된 점은 이제 배포판에 대한 현재 패키지를 가질 수 있다는 것입니다. 즉, 다음 버전의 릴리스까지 기다릴 필요가 없습니다. 데비안 / 우분투는 최신 모노 버전을 얻을 때까지 직접 컴파일 할 필요가 없습니다. ). 이것은 중요한 시간 낭비입니다.

또한 Roslyn의 출시로 VB.NET 지원은 가까운 시일 내에 훨씬 나아질 것입니다.


모노에서 Winforms 지원에 어려움이 없었습니다. 물론 결과는 정확히 아트웍이 아니지만 Windows에서 실행되지 않기 때문입니다.
Robert Harvey

3
참고 : 엔티티 프레임 워크는 이제 오픈 소스입니다. 모노 팀은 현재 개발 버전에 포함 시작
linquize

@Robert Harvey : Grantet은 기본 작업 (예 : 버튼, 트 리뷰, 텍스트 파일, 레이블, 심지어 데이터 그리드)의 대부분이지만, 스플리터를 추가하자마자 "구현되지 않은 예외"입니다.
Quandary

14

우리 회사는 주로 대부분의 .NET 데스크톱 응용 프로그램을 개발하고 Mono에서 실행되는 Linux 버전을 릴리스하므로 엔터프라이즈 Windows 기반 솔루션에 Mono를 사용할 수있는 곳이 있습니다.

우리는 사용자가 별도로 설치하지 않아도 응용 프로그램 설치와 함께 Mono를 패키지합니다 (이 방법으로도 버전을 제어합니다).


예, 사용할 모노 버전을 제어해야합니다. 하나는 리눅스 배포판과 함께 제공되며 일반적으로 꽤 오래되어 더 많은 버그가 있습니다. 우리는 버그를 줄이기 위해 git mono-2-10 브랜치에서 버그를 줄이고 우리의 프로그램이 겪을 수있는 버그를 알고 있습니다.
linquize 2016 년

3

많은 기업이 가질 수있는 주요 관심사는 Mono와 Microsoft 간의 라이센스 문제입니다. 내 이해는 Microsoft가 Mono가 핵심 .NET 기술을 사용할 수 있다는 데 공식적으로 동의했지만, 일반적으로 많이 사용되는 것들을 포함하여 외부에서는 Microsoft와 합법적 인 입장을 표명하지 않는 법적 영역이 더 많다는 것입니다. 다른.

그것은 분명히 라이센스 비용을 요구하거나 특허 위반을 고소 할 가능성을 열어 둡니다. 현재 행동 방식에서 발생할 가능성은 거의 없지만 대부분의 기업은 이러한 불확실성을 좋아하지 않습니다.


3
내 이해는 CLR / C # 사양이 독점적이지 않으며 Mono는 원래 .NET 소스에 많은 의존하지 않고 해당 사양을 구현한다는 것입니다.
Adam Lear

5
@Anna : 나는 이것에 대해 전문가가 아닐 수도 있지만, Mono가 원래 .NET 소스에 대한 의존도에 관계없이 Mono가 여전히 위험에 처해 있다고 확신합니다. 이는 Microsoft의 특허 때문입니다 (Microsoft 코드를 모노 복사하거나 사용하지 않고 시행 할 수 있음). 나는 FSF가 여기에 문제를 간결하게 요약했다고 생각한다 : fsf.org/news/2009-07-mscp-mono
Adam Paynter

3

모노에는 공간이 충분하지 않다고 생각합니다.

Java는 이미 커뮤니 케이 션과 오픈 소스의 방대한 엔터프라이즈 급 라이브러리 및 도구로 커뮤니티가 풍부하고 Linux에서 플랫폼으로 구축되었습니다. 특정 상황이 아닌 한 Linux (또는 Mac)를 대상으로 새 프로젝트를 시작할 때 Java보다 Mono를 선택해야 할 이유가 없습니다 (Walter 's answer 참조).


7
한 가지 이유는 C #이 Java보다 더 성숙하고 디자인이 잘된 언어이며 작업하기가 쉽고 쉬워 졌기 때문입니다. 그것은 나에게 매우 매력적인 이유 처럼 들린다 .
Konrad Rudolph

3
@ Konrad : 최근 C # 버전의 경우에도 마찬가지입니다 (그들은 거의 동일하게 시작했지만 Java보다 빠르게 진화합니다). 불행히도 내 경험에 따르면 기업은 그 장점에 따라 언어를 거의 선택하지 않습니다. 반면에 .NET과 JVM은 C #과 Java보다 더 나은 디자인의 대체 언어를 제공하므로 실제로는 다른 언어보다 선호하지 않습니다.
Mladen Jablanović

이전에 Mono를 사용할 수 있었으면 환경에 .Net / Mono를 고려했을 것입니다. 그러나 그렇지 않았으므로 이제 우리는 Java 길을갔습니다. .Net / Mono에서 일부 작업을 수행 할 수 있지만 기본 환경은 Java이며 꽤 오랫동안 그대로 유지 될 것으로 예상됩니다. 두 가지 모두에서 작동하는 사람이기 때문에 C # ers에서 Java bashing을 얻지 못합니다. 그들은 매우 비슷합니다. C # 언어는 약간 우수하지만 Java 라이브러리 및 추가 JVM 언어가 더 좋습니다. 전체적으로 플랫폼 으로서는 거의 동일합니다. 도서관 물건이 나에게 더 중요하므로 Java에 끄덕일 수도 있습니다.
Brian Knoblauch

1
Mono는 Linux에서 C #을 사용할 수 있습니다. C #에는 개발을 촉진하기 위해 너무 많은 구문 설탕이 있습니다.
linquize 2016 년

2015 : Java는 OS X (Mac)의 2 등 시민입니다. Mono는 OS X에서 아름답게 작동합니다 (WinForms는 여전히 느리고 추악합니다). 또한 OmniSharp를 사용하면 비 IDE 편집기 (Sublime, Atom, Vim, Emacs)에서 모든 종류의 IDE 품질 편집 도구를 사용할 수 있습니다.
Kent A.

1

모노를 사용하기 전에 프로그램에 직렬 포트에 대한 경로 문자열 (Path.Combine () 사용) 또는 "COM"접두사 (정수 대신 문자열 만 허용)에 대해 하드 코딩 된 '\'가 없어야합니다.

잘 작동하는 것 :

  • 콘솔 앱
  • 웹앱

발생한 문제 :

  • WinForms가 안정적이지 않습니다 : 임의로 충돌합니다.
  • 언어 지원 : 커뮤니티는 모든 언어, 특히 일부 국가 / 도시의 방언을 잘 알지 못할 수 있습니다. 해당 로케일 / 데이터 정렬이 누락 될 수 있습니다.
  • 드물게 사용되는 메서드는 .NET과 호환되지 않는 동작을 할 수 있습니다.
  • xsp는 HTTP 1.0 만 지원합니다. 현재 HTTP 1.1 지원이 부족합니다.
  • 브라우저 제어가 제대로 작동하지 않습니다.

내부적으로 모노 (예 : ERP 시스템)를 제어 된 환경으로 사용하는 것이 좋습니다.


0

크로스 플랫폼 환경에서 실행해야하는 .NET 코드가 이미있는 경우 Mono는 훌륭한 대안입니다. Mono는 비즈니스 세계에서 특히이 문제를 해결하기 위해 광범위하게 사용됩니다.

크로스 플랫폼이 필요하다는 것을 알고 .NET으로 프로젝트를 시작하는 데 대한 변명으로 Mono의 존재를 사용하는 것에 반대합니다. 그 이유는 .NET의 최신 기술과 Mono의 개발 속도 사이의 차이 때문입니다.

당신이 다른 한편, 만약 않는 미래의 프로젝트에 모노를 사용하려는 모노 이후 두 번째 대안은 크게 전체 .NET의 기능의 일부이기 때문에, 나는 모노 프레임 워크를 대상으로하고 .NET에서 실행하도록주의한다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.