Tôi muốn phát triển một ứng dụng đa nền tảng vừa/nhỏ (bao gồm GUI).Python + QT, Windows Forms hoặc Swing cho một ứng dụng đa nền tảng?
Nền của tôi: hầu hết các ứng dụng web với kiến trúc MVC, cả Python (Pylons + SqlAlchemy) và Java (biết ngôn ngữ tốt, nhưng không thích nó nhiều). Tôi cũng biết một số C#. Cho đến nay, tôi không có kinh nghiệm lập trình GUI (không phải Windows Forms, Swing hay QT).
Tôi dự định sử dụng SQLite để lưu trữ dữ liệu: Có vẻ là một giải pháp đa nền tảng tốt đẹp và có một số tính năng mạnh mẽ (ví dụ: tìm kiếm văn bản đầy đủ, mà SQL Server Compact thiếu).
Tôi đã làm một số nghiên cứu và đây là những lựa chọn yêu thích của tôi:
1) QT, Python (pyQT hoặc PySide), và SQLAlchemy
ưu:
- Python ngôn ngữ
- nguồn mở mạnh mẽ trong thế giới Python (rất nhiều librar người dùng và người dùng)
- SQLAlchemy: Một cách tuyệt vời để tương tác với DB và tài liệu cực kỳ tốt!
khuyết điểm:
- biên soạn, phân phối và triển khai khó khăn hơn?
- không có kinh nghiệm QT
- QT thiết kế không đẹp như nhà thiết kế Studio Winforms trực quan
2) .NET/Mono, Windows Forms, C#, (Fluent) NHibernate, System. Data.SQLite
ưu:
- C# (tôi thích nó, đặc biệt ecially so với Java và muốn có được nhiều kinh nghiệm trong nó)
- Các nhà thiết kế Winforms GUI trong Visual Studio dường như thực sự trơn tru
- IntelliSense
- ClickOnce triển khai (?)
- Windows Forms xem và cảm nhận tốt trên Windows
khuyết điểm:
- (Fluent) NHibernate ít tài liệu hơn SQLAlchemy; cũng gây phiền nhiễu: Tài liệu lưu loát tham khảo tài liệu NHibernate đề cập đến Hibernate (aargh!). Nhưng đồng bằng NHibernate + XML không trông rất thoải mái.
- Biểu mẫu Windows sẽ không hiển thị + hoạt động gốc trên Linux/Mac OS (chính xác?)
- ít thư viện nguồn mở hơn.NET thế giới, ít người sử dụng phần mềm nguồn mở, ít tài liệu nói chung
- không WinForms và NHibernate kinh nghiệm
3) JVM, Java + Jython, Swing, SQLAlchemy
(tôi cảm xúc thiên vị chống lại thế này, nhưng được liệt kê cho đầy đủ vì lợi ích)
ưu:
- JVM/Swing công việc cũng như cơ sở nền tảng
- Jython
- SQLAlchemy
- rất nhiều thư viện nguồn mở
khuyết điểm:
- Swing có vẻ xấu xí và khó khăn để bố trí
- thiếu trình thiết kế giao diện người dùng tốt
- Đoán rằng tôi sẽ không thể oid Java cho UI thứ
- Không chắc thế nào ổn định sự hội nhập Jython/Java là
(Tùy chọn mà tôi đã loại trừ khả năng ... chỉ để tránh thảo luận về những):
- wxWidgets/wxPython (nay rằng QT được LGPLed)
- GTK/PyGTK
Giao diện của ứng dụng cuối cùng là rất quan trọng đối với tôi. Các ngăn xếp công nghệ ở trên rất khác nhau (PyQT, .NET WinForms, JVM Swing) và yêu cầu một thời gian để thành thạo, vì vậy:
Bạn sẽ đề xuất phương án thay thế nào và tại sao?
Về 3) Có một trình tạo GUI theo định hướng XML; http://swixml.org/index.html Nhưng hành vi năng động của giao diện người dùng, xác định các quy tắc kinh doanh của ứng dụng, phải được mã hóa bằng Java. – Houtman
@Martin S. Tôi có một câu hỏi tương tự ngay bây giờ. Bạn có thể bình luận về con đường bạn đã chọn và tại sao không? – ostrokach