2009-02-07 4 views
16

OK, 이것은 지뢰밭이지만, 다른 툴킷에 비해 교차 플랫폼 개발을 위해 .NET (또는 이와 동등한 Mono)을 선택하는 이유를 이해하려고 시도하는 것이 어렵습니다..NET 또는 Mono vs Qt (크로스 플랫폼 개발 용)

두 가지를 모두 사용했을 수있는 프로그래머에게있어 놓치거나 원하는 기능은 무엇입니까? 반대로 패러다임이나 다른 측면에서 사용자가 다른 사용자에게 누락 된 부분은 무엇입니까? 어느 쪽의 툴킷에 대해서도 언급해야 할 것이 많지만, 두 툴킷을 사용하는 누군가의 코멘트는 가치가있을 것입니다. 여기

이 주제에 대한 몇 가지 관련 질문입니다

편집 :겠습니까 만 가능한 오 수 모노를 사용하여 Windows가 대상 플랫폼 중 하나 였다면?

+0

예를 들어, 사용자가 Mono를 설치해야하지만, .NET Framework가 최신 버전의 Windows에 설치되는 반면, 해당 경로를 선택하기 만하면 Mono를 대상으로 할 수 있습니다. –

답변

7

Java 또는 Python을 선택하는 것과 같은 이유로 크로스 플랫폼 개발을 위해 Mono (및 아마도 C#)를 선택하게됩니다. 이러한 언어는 가상 컴퓨터에서 실행되며 라이브러리를 신중하게 선택하고 코드를 설계하면 크로스 플랫폼 (다시 컴파일하지 않음)에서 작동합니다. C, C++ 등의 기본 언어에는 여러 플랫폼에서 언어가 동일하므로 사용하는 컴파일러 설정과 라이브러리가 플랫폼 간 (예 : 프로세스, 네트워킹 등)이 아닐 수 있습니다.

크로스 플랫폼 프레임 워크의 친숙 함으로 인해 기술적 인 문제 외에도 시간이 절약됩니다. 예 : GUI 라이브러리를 배우는 데 몇 주에서 몇 달이 걸릴 수 있습니다. API가 모든 타겟에서 동일하다면 분명히 시간을 절약 할 수 있습니다.

Qt4는 잘 설계되었으며 잘 문서화되어 있으며 유용하고 견고한 도구가 제공됩니다. wxWidgets는 수십 개의 위젯으로 엄청나게 커지고 있으며 그 중 일부는 결코 사용하지 않을 것입니다. Qt는보다 융통성있는 위젯이 적습니다. 필자는 wx를 많이 사용했지만 LGPL 라이센스, 좋은 문서, 디자이너, PyQt, 새로운 IDE 및 증가하는 사용자 기반 덕분에 Qt로 변환되었습니다.

Qt 및 wxWidgets에는 Python 바인딩 (예 : PyQt 및 wxPython)이 있으므로이 라이브러리를 사용하여 크로스 플랫폼 GUI 코드를 작성할 수 있습니다. Mono에게는 더 까다 롭지 만 GTK #와 Qyoto가 있습니다. 나는이 중 하나를 시도하지 않았지만 사용하기에 충분히 성숙한 지점에있는 것처럼 보입니다 (예 : MonoDevelop 참조).

+1

Qt는 내가 열거하는 것을 걱정하는 것보다 많은 언어로 바인딩을 가지고 있습니다. – jrharshath

+0

그것은 오래되었지만,이 대답은 가장 유익한 것으로 보입니다. – casualcoder

+0

Qt 커뮤니티 에디션을 비즈니스 목적으로 상용 (독점적) 애플리케이션을 만들 수 있습니까? –

0

당신은 wxWidgets를 고려해 보았습니까? 또한 크로스 플랫폼, QT와 같은 C++ 및 QT와 달리 네이티브 컨트롤을 사용하며 .NET과 같이 실행되는 프레임 워크가 필요하지 않습니다.

.NET 및 모노는 거의 동일합니다. 단순한 사용자 기반 응용 프로그램을 많이 쓰지 않는 시스템 또는 네트워크 프로그래밍을 작성하는 경우 .NET이 가장 좋습니다.

성능이 애플리케이션의 중요한 측면이라면 많은 사람들이 QT, wxWidgets와 같은 C++ 라이브러리를 사용합니다.

+0

이 답변이 도움이됩니까? http://stackoverflow.com/questions/464463/qt-being-now-released-under-lgpl-would-you-recommend-it-over-wxwidgets/464689#464689 – casualcoder

+0

how 상용 응용 프로그램에서 LGPL QT를 사용할 수 있습니까 ??? 나는 오랜 연구 끝에 내가 선택한 wxWidgets 만 가지고 간다. 빠르고, 네이티브 컨트롤, C++, 멀티 플랫폼. http://stackoverflow.com/questions/464463/qt-being-now-released-under-lgpl-would-you-recommend-it-over-wxwidgets/465803#465803 –

+0

LGPL Qt 라이브러리를 동적으로 링크하십시오. 이것은 LGPL의 요구 사항을 충족시킵니다. 물론 다른 라이브러리를 사용하기 위해 코드의 기존 코퍼스를 다시 작성하는 것은 가치가 없을 수도 있습니다. 때로는 그렇습니다. – casualcoder

-2

.NET은 크로스 플랫폼 용이 아닙니다. MONO 및 .NET에서 코드를 작성하고 효과적으로 작동시키는 것은 매우 어렵습니다. 개인이 TCL/Tk 또는 Qt 또는 Java Swing보다 .NET을 사용하는 이유는 신속한 응용 프로그램 개발 때문입니다.

RAD는 사실상 존재하는 다른 프레임 워크로는 불가능합니다. RAD는 단순한 경우에 가능하지만 간단한 유스 케이스가있는 비즈니스 기반 응용 프로그램을 마지막으로 작성한시기는 언제입니까?

GUI 툴킷은 일반적으로 기본 사항을 이해해야하기 때문에 작업하기가 어렵습니다. 기본 사항은 데이터 바인딩, 클리핑, 새로 고침, 레이아웃 관리자 및 이벤트 처리입니다. 이러한 모든 개념은 일반 개발자에게는 어렵습니다. 그 이유는 대부분의 툴킷이 현대의 툴킷으로 더 많이 추상화되고 있기 때문입니다. 예를 들어, Java Swing을 사용하면 클리핑이나 새로 고침에 대해 알 필요가 없습니다. 무언가가 마술처럼 생기지 않는 경우에는 상황이 사실상 불가능한 해결책을 제시합니다. 그런 다음 코드는 기하 급수적으로 더 복잡해집니다.

.NET은 일반적으로 많은 UI 개발자가이를 사용하기 때문에 매우 간단합니다. 컨트롤을 확장하기위한 확장 메서드를 만드는 것은 매우 쉽습니다. .NET 엔터티 프레임 워크를 사용하면 데이터를 바인딩하는 메서드를 만드는 것이 훨씬 간단 해집니다. 이 RAD 도구를 사용하는 데 비용이 들며 플랫폼에 독립적이지 않습니다.

+0

"고통 스럽다"고 자세히 설명해 주시겠습니까? – EricSchaefer

+0

@EricSchaefer : .NET과 Mono의 차이점이 그럴 것이라고 생각합니다. – casualcoder

+1

모르겠다. 논쟁의 여지가있다. Qt는 RAD입니다. – mxcl

5

크로스 플랫폼 (및 고유 플랫폼)의 경우 Mono 및 Windows보다 깨끗하기 때문에 Qt로 이동합니다.양식과 MVC 패턴을 사용하면 모든 응용 프로그램을보다 쉽게 ​​확장하고 수정할 수 있습니다.

+5

Qt는 어떻게 더 깨끗합니까? – EricSchaefer

+0

두 번째! 차이점에 대한 세부 정보 또는 확장은 환영합니다. – casualcoder

+3

++ 더 깨끗합니다. – jrharshath

1

아마도 대부분의 응용 프로그램을 휴대용 언어/프레임 워크로 작성하고 각 운영 체제에 대해 별도의 "그래픽 인터페이스 스킨"을 작성할 수 있습니다 지원? 물론이 전략은 어떤 ​​경우에는 잘 작동하지만 다른 많은 경우에는 무시할 수 있습니다.

+3

이 포함되어있어 "스킨"도 응용 프로그램과 함께 쓸 수 있습니다. 프레임 워크는 "스킨"이 기본 모양과 느낌을 갖도록합니다. – jrharshath

4

저는 크로스 플랫폼 개발에 Qt4를 사용하고 있으며 매우 만족합니다. 배포가 잘 작동합니다 (최소한 정적이 아닌 Qt를 정적으로 연결하는 경우). API는 입니다. 실제로는 멋지고 일관성이 있으며, Qt 디자이너는 GUI 부품을 빠르게 개발할 수 있으므로 실제 논리에 집중할 수 있습니다. 신호 및 슬롯 개념은 익숙해 진 후 내가 정말 좋아하는 것입니다.

내 경험으로 wxWidgets 배포를 배포하는 것이 어렵습니다. (제 경우에는 GTK에 대한 의존성 때문에 MacOS에 대한 특별한 생각이 들지 않았습니다.)

1

여기에 언급되지 않은 또 다른 옵션이 있습니다. 여기서는 언급하지 않았지만 Lazarus은 크로스 플랫폼이며 앞으로 나아갈수록 더 성숙 해지고 있습니다. 물론, Qt로 작성된 것과 같이 특정 플랫폼 용으로 컴파일해야합니다. 필자는 Mac OSX, Linux 및 Windows에서 실행되는 프로젝트에서 나사로를 성공적으로 사용했습니다. Lazarus는 훌륭한 RAD 도구이며 Object Pascal은 제가 작성한 대부분의 것들에 잘 작동합니다. 나사로는 응용 프로그램 속도에 좋은 옵션입니다. c/C++로 작성된 소프트웨어와 잘 비교됩니다. 나는 그것을 뒷받침하는 것을 괴롭히지 않을 것이며, 사례 연구가 있으며, 필요할 경우 자신의 테스트를 수행 할 수 있습니다.

C#에서 MonoDevelop를 사용하여 코딩하는 것에 대한 저의 인상은 라이브러리 와이즈, 특히 html 및 오디오에 다소 어려움이 있습니다. 나는 몇 달 동안 C#/MonoDevelop 만 가지고 놀았으므로, 전체 키트로 아직 상당히 새로운 것입니다. 나는 그것이 관리 코드이기 때문에 지불 할 약간의 스피드 가격이 있다고 생각한다. 다시 말하지만, 연구 결과에 따르면 컴파일 전용 코드는 C#/.NET 코드보다 속도면에서 이점이 많지 않은 것으로 나타났습니다.

물론 다른 옵션은 Java입니다. 필자는 그다지 많은 일을하지는 못했지만 확실하게 유비쿼터스이며 잘 작동한다. 자바 코드가 c/C++/Pascal과 같은 컴파일 된 코드보다 느릴 것으로 기대한다.

세 가지 기본 플랫폼 용 컴파일러가있는 다른 옵션 중 하나는 Eiffel입니다. 나는 요즘 많이하지 않았지만, 내가 그걸 가지고 놀았을 때 나는 그것을 좋아했다. ymmv

관련 문제