2009-09-15 7 views
7

Gần đây tôi đã ngồi xuống cổng một ứng dụng Rails đơn giản, tôi phải JSF (sử dụng Seam) để có được một cảm giác mà tôi sẽ làm việc hiệu quả hơn. Ứng dụng Rails là RESTful, mà tôi thích. Khi bắt đầu vào JSF, tôi đã rất ngạc nhiên khi biết, có lẽ không chính xác, rằng JSF chỉ hỗ trợ POST, mà làm cho nó vốn không phải là RESTful.Có phải JSF RESTful có thể không?

Tôi đã tìm kiếm xung quanh một chút nhưng không thể tìm thấy câu trả lời thỏa đáng. JSF/Seam dường như rất phổ biến, nhưng nó không có ý nghĩa với tôi rằng nó sẽ cấm tất cả các phương thức HTTP nhưng POST. Có đúng là JSF vốn không cho phép một kiến ​​trúc RESTful, hay tôi sai và RESTful JSF là có thể (vốn có hoặc thông qua một trình cắm thêm)?

Trả lời

4

Dưới đây là blog post that works through this question, mặc dù nó không đạt được bất kỳ kết luận vững chắc nào.

Theo kinh nghiệm cá nhân của tôi, JSF/Seam không thực sự rất phổ biến, phần lớn là do các vấn đề này. Có vẻ như cố gắng hết sức để trừu tượng ra khỏi bản chất cơ bản của web, và sau đó phá vỡ những thứ như GET. Việc sửa chữa (cho bất kỳ vấn đề bạn đang gặp phải) luôn luôn là "đến trong phiên bản tiếp theo" hoặc "không thực sự là một vấn đề nếu bạn có công cụ tốt." YMMV, nhưng tôi có thể nhìn vào một ngăn xếp khác nhau.

Tôi đã nghe những điều tốt đẹp về Restlet và tôi thấy rằng Struts 2 có một số REST plugin. Với Spring 3, Spring MVC có added support for REST. Tôi đã làm việc với Grails, và nó đã làm những việc RESTful khá đơn giản. Nó có thêm tiền thưởng mà nó phải rất quen thuộc với bạn, kể từ khi bạn có kinh nghiệm với Rails.

+0

Cảm ơn. Liên kết của bạn có một nhận xét về Seam hỗ trợ REST vì vậy tôi cũng sẽ xem xét điều đó. Rails cho đến nay xuất hiện thanh lịch nhất nhưng tôi muốn chắc chắn rằng tôi có một cái nhìn khác contenders chính (bao gồm cả Grails). – SingleShot

+4

Bài viết đó không hoàn toàn chính xác về Seam và REST. Ông so sánh Bộ điều khiển RoR với sự hỗ trợ của Seam cho JAX-RS. Những thứ khác. So sánh chính xác hơn là Bộ điều khiển RoR đối với hành động trang đường may. – Damo

3

JSF với đường may có thể thực hiện NHẬN tiền phạt. Nó chỉ phụ thuộc vào những gì bạn muốn làm với nó. JSF thường sử dụng bài đăng để lấy dữ liệu trường của bạn đến phần cuối. Rất nhiều công cụ JSF hoạt động với bài đăng. Nhưng bạn chắc chắn có thể sử dụng GET bằng cách sử dụng các tham số Trang Seam hoặc thậm chí chỉ nhận được đối tượng HTTPRequest cơ bản.

Bây giờ, công cụ RESTful lớn hơn, có, không hoạt động tốt với JSF. Tuy nhiên, hãy sử dụng JSF cho giao diện người dùng của bạn và JAX-RS cho RESTful API của bạn. Cả hai đều có thể sống hạnh phúc bên cạnh nhau.

2

Tùy thuộc vào yêu cầu chính xác của bạn (REST dưới dạng API hoặc nhiều hơn như một phương tiện để nhận URL có thể đánh dấu trang), Seam nằm xa hơn dẫn đầu. Một bài báo từ các nhà phát triển Seam là http://relation.to/Bloggers/RESTSupportInLatestSeam21, nơi nó thể hiện các tính năng REST mới. Trong số những người khác làm thế nào bạn có thể tiếp cận đầy đủ quyền truy cập vào một thực thể thông qua một API RESTful chỉ với bốn dòng XML.

Nếu bạn chỉ cần đánh dấu trang, bạn vẫn phải thiết kế cẩn thận cách bạn liên kết mọi thứ (cùng nhau) trong các trang JSF và luồng của bạn, mặc dù Seam 2.2 đã thêm một số tính năng để làm việc này dễ dàng hơn.