2009-01-05 15 views

Trả lời

7

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.

5

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.

1

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.
0

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

0

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.

Các vấn đề liên quan