2012-02-26 41 views
25

Tôi đang làm việc trên một dự án liên quan đến khách hàng trên thiết bị di động và web với AppEngine PAAS của Google. Tôi muốn sử dụng các dịch vụ web RESTFul với ứng dụng AppEngine của mình.Khung dịch vụ RESTFul cho AppEngine

Tôi đã xem qua Stackoverflow để tham chiếu đến khung dịch vụ RESTFul có thể được sử dụng với AppEngine cho cả khách hàng web (GWT) và thiết bị di động (Android). Mặc dù Restlet dường như cung cấp các phiên bản cho AppEngine, GWT và Android, cho đến thời điểm này tôi đã giảm xuống còn RestEasy chủ yếu là do question này.

Đã có câu hỏi trước đây là discuss RESTFul frameworks nhưng tôi không nghĩ rằng việc so sánh áp dụng tốt cho trường hợp này, hiện tại khá phổ biến. Sẽ rất hữu ích khi nghe các quan điểm của các nhà phát triển có kinh nghiệm về các khung công tác sẵn có cho tập hợp các nền tảng và thành tích này so với các nhược điểm của từng nền tảng.

+0

Tôi đã hạnh phúc bằng RestEasy trên AppEngine cho hầu hết các năm . –

+0

Tôi đã sử dụng Restlet trên App Engine, GWT và Android trong khoảng 6 tháng. Xem câu trả lời của tôi ở đây (http://stackoverflow.com/questions/9348616/restful-webservices-on-google-app-engine/9352079#9352079) để biết một số chi tiết. –

+0

Ngoài ra, các nhân viên Restlet gần đây đã xuất bản lộ trình cho các hoạt động trong tương lai của họ, điều này có thể ảnh hưởng đến đánh giá của bạn. Xem http://blog.restlet.com/2012/02/25/the-road-ahead-from-noelios-to-restlet/ –

Trả lời

36

Bạn có thể muốn xem xét sử dụng Google Cloud Endpoints, được công bố là tính năng thử nghiệm đáng tin cậy cho App Engine tại Google I/O và hiện khả dụng với mọi người. Với Endpoints, bạn chú thích các lớp và các phương thức Java (hoặc Python) đơn giản để mô tả API của bạn.Ví dụ, đây là một lớp đơn giản để có được và lấy một danh sách các điểm cao từ một Toe trò chơi Tic Tac:

@Api(name = "tictactoe") 
public class ScoreEndpoint { 
    @ApiMethod(name = "scores.get") 
    public Score get(@Named("id") String id) { 
    PersistenceManager pm = getPersistenceManager(); 
    Score score = pm.getObjectById(Score.class, id); 
    pm.close(); 
    return score; 
    } 

    @ApiMethod(name = "scores.list") 
    public List<Score> list() { 
    PersistenceManager pm = getPersistenceManager(); 
    Query query = pm.newQuery(Score.class); 
    return (List<Score>) pm.newQuery(query).execute(); 
    } 
} 

Tính năng

  • Hỗ trợ cho Java và Python runtimes
  • Được xây dựng trên cơ sở hạ tầng API của Google - nó hoạt động với nhiều công cụ và thư viện tương tự được sử dụng cho các API của chính Google, chẳng hạn như APIs ExplorerAPIs Console
  • Tự động tạo ra, tĩnh đánh máy thư viện client cho Android và iOS - các thư viện đang sử dụng cùng Google giả JavaObjective-C thư viện bạn sẽ sử dụng để truy cập vào các API khác Google cung cấp như API Lịch
  • động-gõ JS client thư viện - một lần nữa, cùng một thư viện bạn sử dụng để truy cập vào API Google cung cấp khác trong JS
  • xây dựng trong hỗ trợ cho OAuth 2
  • Tích hợp với Plugin Google cho Eclipse - điều này cho phép bạn tự động tạo API dựa trên mô hình hoặc ứng dụng App Engine để sao lưu ứng dụng Android hiện có
  • Hỗ trợ phát triển cục bộ - bạn có thể xây dựng và kiểm tra API bằng môi trường phát triển App Engine, giống như App Engine tính năng

Learn More

Kiểm tra các documentation để biết thêm chi tiết về việc sử dụng thiết bị đầu cuối.

Bạn cũng có thể xem một vài cuộc đàm phán từ Google I/O:

+0

Đã đăng ký chương trình Trusted Tester và từ những gì tôi đã thấy, điều này chắc chắn có vẻ là cách để di chuyển về phía trước –

+0

Điều gì về việc kết nối từ các khách hàng khác, như .Net? –

+0

Bản phát hành ban đầu cho Điểm cuối chủ yếu tập trung vào các ứng dụng khách di động (JS, Android, iOS), nhưng .NET cũng hoạt động tốt, sử dụng https://code.google.com/p/google-api-dotnet-client/ –

0

Nếu bạn đang xem GAE, một lựa chọn bạn có thể xem xét là duyproject. Nó được biết cho thư viện mở của nó, nhưng nó cũng có một thư viện trọng lượng rất nhẹ cho các servlet REST. Và với GAE bạn muốn giữ tất cả các thư viện ánh sáng để bạn không vượt quá giới hạn byte.

2

Tôi tôn trọng quyết định của bạn không sử dụng Restlet, nhưng đối với các trình duyệt khác của chủ đề này, tôi đã có thể làm cho bài viết làm việc với Android/Restlet/GAE - và kiến ​​thức và kỹ năng lập trình của tôi đang khá hạn chế . Tôi đã có một số vấn đề nhận được Restlet Edition cho Javascript để hoạt động chính xác (nó vẫn còn trong giai đoạn phát triển ban đầu), nhưng Restlet cho Android không có vấn đề gì mà tôi có thể nhớ lại.

+1

Một chút không liên quan ... nhưng từ kinh nghiệm của tôi cho đến nay.Restlet đã trở thành nỗi đau để làm việc, không nhiều với GAE và Android nhưng ngay sau khi GWT đi vào hỗn hợp, nó bắt đầu đưa ra các vấn đề không thể giải thích –

+0

Tôi không phải là một fan hâm mộ lớn của API Restlet hoặc, một tiêu đề http ví dụ là đau đớn, nhưng đó là triết lý của Restlet, để trừu tượng từ Http! Dù sao, điểm đau khác là thời gian khởi động lạnh. Bạn có nghĩ rằng Cloud Endpoints sẽ hoạt động tốt hơn không? họ có thể làm cùng một chức năng quét jar do chú thích – ZiglioUK

1

Tôi cũng muốn khuyên Restlet, xem thêm bài khác ở đây

Restlet đều có phiên bản cho GAE, xem http://wiki.restlet.org/docs_2.0/13-restlet/275-restlet/252-restlet.html

Nhưng có cũng các thư viện khác đi kèm với phiên bản đặc biệt cho GAE, ví dụ: http://code.google.com/p/xydra/wiki/RestLess

+0

Tôi đã sử dụng Restlet trong ba năm qua, trên App Engine. – ZiglioUK

+0

Restlet có thời gian khởi động khá cao và nhu cầu của tôi khá cơ bản. Tôi tò mò về cách Cloud Endpoints sẽ so sánh với Restlet, nhanh hơn thế nào? sự khác biệt khác? – ZiglioUK

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