2008-08-27 41 views
16

Tôi muốn tạo một cơ sở dữ liệu được hỗ trợ AJAX webapp tương tác trong đó có một tùy chỉnh (cụ thể loại sự kiện, chỉnh sửa) hệ thống lịch. Điều này sẽ liên quan đến khá nhiều JavaScript và AJAX, và tôi nghĩ về Google Web Toolkit cho giao diện và Ruby on Rails cho phía máy chủ.Tôi có nên sử dụng Google Web Toolkit cho ứng dụng web mới của mình không?

Bộ công cụ web của Google có đáng tin cậy và tốt không? Những rủi ro tiềm ẩn nào có thể xảy ra nếu tôi chọn Google Web Toolkit? Có thể dễ dàng kết hợp nó với Ruby on Rails ở phía máy chủ không? Hoặc tôi nên cố gắng sử dụng trực tiếp một thư viện JavaScript như jQuery?

Tôi không có kinh nghiệm về phát triển web ngoại trừ một số HTML, nhưng tôi là một lập trình viên có kinh nghiệm (C++, java, C#) và tôi chỉ muốn sử dụng các công cụ miễn phí cho dự án này.

Trả lời

12

RoR thực sự là một trong những điều mà GWT được tạo ra để hoạt động tốt, miễn là bạn đang sử dụng REST đúng cách. Nó nằm trong cuốn sách Ứng dụng Google Web Toolkit và bạn có thể xem bản trình diễn từ cuốn sách bằng cách sử dụng loại ý tưởng này here. Đó không phải là để nói rằng bạn sẽ không có bất kỳ vấn đề, nhưng tôi nghĩ rằng sự hỗ trợ chắc chắn ra khỏi đó cho nó.

Có một dự án gọn gàng để làm cho RoR/GWT dễ dàng mà bạn có thể tìm thấy here (giấy phép MIT). Tôi đã không có cơ hội để thử nó ra, nhưng có vẻ như một số lượng tốt của tư tưởng đã được đưa vào nó. Một trong những bắt là có vẻ như nó đã không được thử nghiệm đầy đủ với 2.1 Rails được nêu ra, chỉ 2.0, vì vậy bạn có thể chạy vào một vài (có thể là nhỏ và fixable) lỗi.

1

Bạn có thể mã hóa mọi thứ trong Java bằng GWT và bạn có thể tích hợp các thư viện javascript bên thứ ba hiện có với nó. Nó rất tốt. Tôi đã không bao giờ sử dụng RoR nhiều, mặc dù vậy, không thể nói bất cứ điều gì về điều đó.

1

Nếu bạn có kinh nghiệm trong Java nhưng không phải trong Javascript/CSS, thì GWT sẽ là một phao cứu sinh (trừ khi bạn muốn học chúng, tất nhiên). CSS có rất nhiều chi tiết khó sử dụng. Nó không phải là không phổ biến để chi tiêu một nửa ngày sửa chữa một sai lệch 2 pixel mà chỉ xảy ra trong IE6.

Tôi không chắc chắn về việc sử dụng ROR dễ dàng như thế nào cho phần cuối ... Có thể, tôi chắc chắn, vì truyền thông GWT ajax chỉ là servlet. Nhưng chúng cung cấp một số chức năng thực sự tốt đẹp để truyền các đối tượng Java qua lại mà bạn sẽ không thể sử dụng nếu máy chủ của bạn cũng không sử dụng Java.

0

Bạn cũng có thể xem xét Grails ("Groovy on Rails") cung cấp cho bạn những lợi ích của khung Rails và việc sử dụng máy ảo Java.

2

Nếu bạn biết JAVA, và có nơi nào đó bạn có thể lưu trữ nó (như một thùng chứa tomcat hoặc thủy tinh), tôi khuyên bạn nên sử dụng nhiều hơn Ruby cho phần cuối. Lý do chính là sau đó bạn có thể chia sẻ tất cả các đối tượng của bạn và sử dụng cơ chế RPC được xây dựng. Tôi đã làm điều này cho khá nhiều dự án của chúng tôi và đó là một lần tiết kiệm rất lớn, chưa kể rằng mã ít bị lỗi, bởi vì bạn không chuyển đổi các đối tượng java của bạn thành bất kỳ thứ gì và sau đó quay lại.

Tôi đã liên kết GWT với Rails trước đây, sử dụng hàm to_json trong Rails và sau đó đọc JSON trong GWT. Đó là tất cả các hỗ trợ, nhưng nó là khó chịu hơn nhiều so với chỉ làm việc kết thúc trở lại trong JAVA.

Tất nhiên nếu bạn có lưu trữ giá rẻ, thì các thùng chứa Java là khá nhiều trong số các câu hỏi, trong trường hợp này tôi sẽ nghĩ Rails sẽ là điều tốt nhất tiếp theo.

2

GWT có chất lượng rất cao với một cộng đồng tuyệt vời. Tuy nhiên bạn cần phải biết CSS nếu bạn muốn điều chỉnh giao diện của mọi thứ (bạn sẽ) - CSS có thể thực hiện rất nhiều cách bố trí, giống như trang web thông thường nếu bạn muốn.Các thư viện như GWT-ext hoặc ExtGWT có thể giúp một chút khi chúng có vẻ ngoài "tuyệt vời" nhưng có giá (kích thước thêm cho ứng dụng của bạn).

4

Nếu bạn đang tìm cách tích hợp GWT với các chương trình phụ trợ không phải Java như ROR, PHP, v.v., bạn nên nhớ rằng GWT 1.5 hiện hỗ trợ các loại Lớp phủ JavaScript. Tính năng này cho phép bạn viết các lớp có thể được ánh xạ trên đầu các đối tượng JavaScript gốc để dễ dàng cung cấp các phương thức truy cập cho các thuộc tính của các đối tượng đó và các chức năng mở rộng khác.

Xem liên kết này để biết thêm chi tiết: JavaScript Overlay Types

Vì vậy, bạn có thể trả lại dữ liệu JSON mã hóa từ backend của bạn thông qua các cuộc gọi AJAX, phân tích nó thành một đối tượng JavaScript và sau đó truy cập dữ liệu thông qua mã GWT Java của bạn bằng cách sử dụng lớp phủ các lớp bạn đã tạo. Hoặc khi bạn kết xuất trang của mình, bạn có thể hiển thị dữ liệu cấu hình tĩnh dưới dạng JavaScript Objects và đọc nó qua cơ chế này, thay vì phải thực hiện cuộc gọi AJAX để lấy dữ liệu.

1

Gần đây, tôi đã viết khoảng một số the disadvantages of GWT. Chủ yếu, nhược điểm là: chu kỳ triển khai dài để thay đổi một số phần của ứng dụng và một đường cong học tập khá dốc. Là một lập trình viên Java dày dạn, thứ hai nên ít vấn đề hơn và nếu bạn sử dụng một chương trình phụ trợ riêng biệt, đầu tiên cũng được giảm nhẹ (như một redeploy hoàn chỉnh chủ yếu được yêu cầu khi bạn thay đổi phần 'máy chủ' của ứng dụng).

1

GWT là một khung công tác tuyệt vời với nhiều tiềm năng. Hãy nhớ rằng nó vẫn còn khá mới, mặc dù. Có một số lỗi chưa được giải quyết có thể thực sự làm phiền bạn, và chúng thường yêu cầu các cách giải quyết xấu để vượt qua. Cộng đồng thật tuyệt vời nhưng có thể bạn sẽ sớm gặp phải một số vấn đề mà Google chưa thể trả lời.

Nhưng này, tôi nói đi. Tiềm năng cho GWT thật tuyệt vời và tôi đặt cược tương lai của nó sẽ sáng sủa.

1

Bạn chắc chắn nên sử dụng GWT cho một dự án mới (nó cũng khá dễ sử dụng trong một dự án cũ).

Trải nghiệm của tôi rất nhanh để tìm hiểu và sử dụng. Mã javascript được biên dịch tốt hơn bất cứ thứ gì bạn có thể viết bằng tay và nó cũng hoạt động nhanh.

Một lợi ích khác là khả năng gỡ lỗi mã bạn đang (đó là địa ngục với một mình javascript)

1

Blog này có đầu vào từ nhiều người dùng kinh nghiệm của GWT và có một số điểm thảo luận tuyệt vời. Cá nhân tôi có kinh nghiệm rất lớn với các khung UI khác nhau. Tôi sẽ cộng thêm hai xu. Cho phép xem xét cơ bản ưu điểm và nhược điểm của GWT

Advantage cơ bản

GWT mất việc lập trình lớp web để JAVA. Vì vậy, những lợi thế rõ ràng của Java bắt đầu đi vào chơi. Nó sẽ cung cấp lập trình hướng đối tượng. Nó cũng sẽ cung cấp sửa lỗi và biên dịch thời gian tuyệt vời. Kể từ khi nó tạo ra HTML và Javascript, nó cũng sẽ có khả năng ẩn một số phức tạp trong máy phát điện của nó.

Nhược điểm cơ bản

Những bất lợi bắt đầu từ báo cáo kết quả tương tự. GWT đưa lập trình lớp web lên JAVA. Nếu bạn biết JAVA, có lẽ bạn sẽ không bao giờ tìm ra một ngôn ngữ thay thế để viết logic kinh doanh của bạn. Nó đủ tự tin và tuyệt vời.Nhưng khi nói đến việc viết cấu hình cho một ứng dụng JAVA. Chúng tôi sử dụng các tệp thuộc tính, cơ sở dữ liệu, XML, vv Chúng tôi không bao giờ lưu trữ các cấu hình trong một tệp lớp JAVA. Hãy suy nghĩ kỹ, tại sao vậy?

Điều này là do cấu hình là dữ liệu tĩnh. Nó thường yêu cầu phân cấp. Nó được cho là có thể đọc được. Nó không bao giờ yêu cầu biên dịch. Nó không đòi hỏi kiến ​​thức về ngôn ngữ lập trình JAVA. Trong ngắn hạn, nó là một trò chơi bóng khác nhau. Bây giờ câu hỏi là, nó liên quan đến thảo luận của chúng ta như thế nào?

Bây giờ, hãy suy nghĩ về một trang web. Bạn có nghĩ rằng khi chúng ta viết một trang web, chúng ta viết một logic nghiệp vụ? Tuyệt đối không. Trang web chỉ là một cấu hình. Nó là một cấu hình của các thùng chứa và các trường phân cấp. Chúng ta cần viết logic nghiệp vụ cho dữ liệu sẽ được ghi lại và hiển thị trên trang web và không phải để tạo trang web.

Đoạn trước tạo ra một tuyên bố rất mạnh mẽ. Điều này sẽ giải thích tại sao các trang web dựa trên HTML và XML vẫn là những trang phổ biến nhất. XML là tốt nhất trong kinh doanh để viết cấu hình. Một khuôn khổ phải cho phép tách biệt rõ ràng trang web khỏi logic nghiệp vụ (mục tiêu của khung MVC). Bằng cách này, một nhà thiết kế web sẽ có thể áp dụng các kỹ năng trực quan và nghệ thuật của mình để tạo ra các trang web tuyệt vời chỉ bằng cách định cấu hình XML và không bị làm phiền về sự phức tạp của ngôn ngữ lập trình. Các nhà phát triển sẽ có thể sử dụng tốt nhất của họ trong kinh doanh JAVA để viết logic kinh doanh.

Cuối cùng, hãy nói về hậu quả theo nghĩa trực tiếp. GWT phá vỡ hiệu trưởng này để nó bị ràng buộc thất bại. Chi phí cho việc phát triển ứng dụng GWT sẽ rất cao bởi vì bạn sẽ cần các lập trình viên multiskill để viết các trang web. Cái nhìn và cảm giác được yêu cầu sẽ rất khó đạt được. Lần lượt sửa đổi trang web sẽ rất cao vì biên dịch không cần thiết. Và cuối cùng, kể từ khi bạn đang viết các trang web trong JAVA nó rất dễ dàng để tham nhũng với logic kinh doanh. Vô tình bạn sẽ giới thiệu những phức tạp mà phải tránh.

+4

Đây không phải là nơi để che giấu công nghệ của bạn bằng tiếng Anh bị hỏng – Yarin

+0

Có sử dụng GWT trong một dự án lớn, thiết lập kinh doanh, trong 6 tháng tôi đồng ý mạnh mẽ. GWT là FAIL. – rapadura

0

Nhóm của chúng tôi gần đây đã hỏi cùng một câu hỏi và chúng tôi chọn sử dụng GWT, đặc biệt vì plugin của nhà thiết kế đã làm việc với GWT dễ tiếp cận hơn đối với các chuyên gia không phải java trong nhóm. Bất cứ ai làm cho sự lựa chọn này, chỉ cần cẩn thận bạn KHÔNG sử dụng plugin GWT Designer !! Nó chưa được cập nhật (trong ít nhất một năm, rõ ràng) để tạo ra một ứng dụng GWT tương thích với IE8.

Nhóm của chúng tôi gần như đã hoàn tất bố cục ứng dụng của chúng tôi, những ứng dụng này hoạt động hoàn hảo trong Chrome, FF và Safari. Sau đó, họ đã nổ tung trong IE. IE 7 sẽ tải các trang một phần (nhưng không bao gồm tổng hợp), và IE8 thậm chí không thể tải lên ứng dụng. Nó chỉ treo.

Plugin thiết kế có các nút cho phép người dùng thêm tiện ích CellTable không tương thích với IE (CellTable, DeckPanel, Bảng ngang, Bảng dọc, trong số những thứ khác). Những điều này sẽ gây ra cơn đau dữ dội khi bố cục phải được thực hiện lại trong java mà không cần sự trợ giúp của nhà thiết kế.

Người dùng GWT có kinh nghiệm thích nó, nhưng plugin thiết kế sẽ giết bạn.

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