Bạn đã thử sử dụng MVC hoặc bất kỳ mẫu giao diện người dùng nào khác cho mã máy khách GWT. Cạm bẫy/lợi thế mà bạn đã gặp phải trong các cách tiếp cận khác nhau là gì?Bạn đã thử sử dụng MVC cho mã máy khách GWT chưa?
Trả lời
Tôi nghĩ rằng bạn cần xử lý GWT giống như bất kỳ khung giao diện người dùng nào khác, như Swing, Cocoa, v.v. Mọi thứ có ý nghĩa trong các khuôn khổ đó về MVC (hoặc các mô hình khác) ý nghĩa trong GWT. Tôi nghĩ đôi khi mọi người lấy điều MVC quá xa, và tôi thích cách nó hoạt động trong Cocoa hơn hầu hết các khung công tác. Bạn tạo một khung nhìn, bạn có một ViewController điều khiển tất cả các hành vi của khung nhìn, và sau đó bạn có các đối tượng mô hình với tất cả dữ liệu của bạn. Tôi không nghĩ rằng bạn cần phải được giáo điều về nơi mà tất cả các logic kinh doanh của bạn, nó chỉ cần được ở nơi nó có ý nghĩa.
Về mặt cạm bẫy, công cụ chính mà bạn sẽ gặp phải là GWT hoàn toàn là công nghệ giao diện người dùng, vì vậy về mặt kỹ thuật, mặt sau đang ngồi trên máy chủ ở đâu đó. Tôi không thấy điều này như là khác nhau để viết một ứng dụng máy chủ khách hàng swing, lưu trữ dữ liệu của nó trong đám mây ở đâu đó. Sự khác biệt là GWT được biên dịch thành javascript, và có tất cả các hạn chế của một ứng dụng web javascript, vì vậy sẽ có một số điều mà bạn chỉ đơn giản là không thể làm trên giao diện người dùng. Ví dụ: bạn muốn tạo một tệp PDF và hiển thị cho người dùng, bạn không thể làm điều đó trong GWT, bạn cần phải gọi đầu cuối để làm điều đó cho bạn. Trong một ứng dụng Swing, mặt khác, bạn có thể sử dụng nó và làm nó ở phía máy khách.
Mẫu MVC cho GWT được thảo luận trong số question này, cũng có liên kết đến chiều sâu blog post.
Điều duy nhất tôi muốn thêm là toàn bộ mã phía máy khách có thể được coi là "V" trong "MVC", có thể thay đổi cách bạn nhìn vào nó. Suy nghĩ về mã phía máy khách như thành phần MVC lồng nhau của nó, tốt, đó là Java, nó hướng đối tượng, vì vậy nó có thể được thiết kế giống như một ứng dụng Swing. Tôi nghĩ rằng đó là lợi thế của bạn để kéo nhiều mã điều khiển ra khỏi View càng tốt để xử lý các công cụ GWT RPC. Mô hình đôi khi có vấn đề hơn, bởi vì bạn có thể phải quyết định xem bạn có muốn nó trên máy chủ thay vì máy khách hay không. Hoặc tạo mô hình proxy, v.v.
Bạn đã thử GWTruts (http://sourceforge.net/projects/gwtruts/) chưa? Nó cũng là một khung công tác GWT MVC mã nguồn mở tách View và Controller trong GWT
http://code.google.com/p/gwt-mvc/ có thể giúp bạn.
Những lợi thế là:
- dễ đọc điều khiển quản lý
- Lịch sử Tokens
- Controller là testble với JMock (nhưng không GwtTestCase)
- Cấu trúc MVC
- thừa kế đơn giản để bắt đầu mã hóa chế độ xem, bộ điều khiển và mô hình của bạn.
Sử dụng một số loại mẫu MVC/MVP thực sự quan trọng khi ứng dụng GWT vượt quá dự án nhỏ nhất khác bạn chỉ mất kiểm soát những gì đang diễn ra.
Ngoài những gì đã được đề cập ở đó cũng là thực hiện MVC GXT của mà tôi đã xem xét ở đây: http://www.bristol-gtug.org/?p=45
nói chuyện này tại Google IO năm ngoái bắt đầu rất nhiều người dân ra khỏi suy nghĩ về MVC/MVP trên GWT: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html.
thời gian gần đây tôi nhận thấy rằng đó cũng là bây giờ là một hướng dẫn về kiến trúc MVP trong tài liệu GWT mà là một khởi đầu tốt đẹp: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html
Bạn có thể có một cái nhìn tại JetPad-Mappers, một khung MVC Minimalistic phát triển tại JetBrains và được sử dụng trong một số sản phẩm (hiện chưa được phát hành).
Disclaimer, tôi đang tham gia vào sự phát triển của khuôn khổ này.
- 1. Bạn sử dụng thông tin gì để kết nối máy khách với máy chủ với GWT?
- 2. Bạn đã thử Quy trình làm việc của Spring chưa?
- 3. Bạn đã bắt đầu sử dụng C++ 0x chưa?
- 4. Gọi lại phía máy khách trong GWT
- 5. Bạn đã sử dụng GPGPU thành công chưa?
- 6. Mã hóa JSON hoặc YAML trong GWT/Java trên cả máy khách và máy chủ
- 7. Bạn đã bao giờ sử dụng "biến thể hiện lớp" trong bất kỳ mã Ruby nào của bạn chưa?
- 8. Bạn đã sử dụng bộ đệm ẩn của Intersystems chưa? Kinh nghiệm của bạn là gì?
- 9. Có ai đã sử dụng "GWT Designer" không?
- 10. GWT và WebSocket/Đẩy dữ liệu từ máy chủ đến máy khách GWT
- 11. Tôi làm cách nào để chia sẻ lớp giữa mã máy khách GWT và mã máy chủ?
- 12. Tùy chọn AOP phía máy khách cho các ứng dụng GWT
- 13. pjax hoặc phía máy khách MVC?
- 14. Khuôn khổ MVC phía máy khách cho ClojureScript
- 15. Sử dụng Finagle cho máy khách Scala SOAP đơn giản
- 16. Bạn đã từng sử dụng trình ảo hóa mã hay vmprotect để bảo vệ khỏi kỹ thuật đảo ngược chưa?
- 17. Tôi làm cách nào để sử dụng JavaScript ở phía máy khách để phát hiện xem trang đã được mã hóa chưa?
- 18. Bạn đã sử dụng động từ kiểm soát backlacking Perl 5.10 trong regex chưa?
- 19. Lưu vào bộ nhớ đệm phía máy khách trong GWT
- 20. So sánh giữa GWT và Spring MVC
- 21. Bạn đã có một CascadingDropDown làm việc với ASP.NET MVC chưa?
- 22. redis cho asp.net mvc, tùy chọn của khách hàng?
- 23. Ứng dụng Facebook Sử dụng GWT
- 24. GWT: Gửi lỗi phía máy khách/ngăn xếp dấu vết tới máy chủ?
- 25. Có ai đã thử sử dụng ZooKeeper không?
- 26. Bảo mật khi sử dụng GWT RPC
- 27. Bạn đã từng sử dụng PhantomReference trong bất kỳ dự án nào chưa?
- 28. Bạn đã thay thế makefiles bằng tập lệnh ruby chưa?
- 29. Bỏ qua Danh sách - đã từng sử dụng chúng chưa?
- 30. Bạn sử dụng máy phát điện ở đâu trong mã python của bạn?