2009-11-28 33 views
19

Tôi đã sử dụng sau đống phát triển web cho một vài năm:Middleware cho MongoDB hoặc CouchDB với jQuery Ajax/JSON frontend

java/mùa xuân/hibernate/mysql/cầu cảng/wicket/jquery

Đối với các yêu cầu nhất định, tôi đang xem xét chuyển sang kho dữ liệu NoSQL với giao diện AJAX. Tôi có lẽ sẽ xây dựng giao diện người dùng với jQuery và giao tiếp với phần mềm trung gian ứng dụng web bằng cách sử dụng JSON. Tôi đang hướng về MongoDB vì khả năng truy vấn động hơn, nhưng tôi vẫn đang xem xét CouchDB.

Tôi không chắc chắn nên sử dụng gì ở giữa. Có lẽ một cái gì đó RESTful? Sở thích của tôi là gắn bó với Java (hoặc có thể là Scala hoặc Groovy) vì tôi đang sử dụng các công cụ như Drools cho các quy tắc và Shiro để bảo mật. Nhưng sau đó một lần nữa, tôi muốn chọn một cái gì đó nhanh chóng một cách dễ dàng để làm việc với, vì vậy tôi mở cửa cho các giải pháp khác.

Nếu bạn đang xây dựng giải pháp ajax/json/nosql, tôi muốn nghe chi tiết về những công cụ bạn đang sử dụng và bất kỳ ưu điểm/nhược điểm nào bạn đã tìm thấy để sử dụng chúng.

+0

Nhìn vào Jersey và Restlets, nhưng nghiêng về phía Jersey. – Tauren

+0

Tại sao bạn muốn chuyển đổi? "Những yêu cầu nhất định" là gì? Tôi tò mò. – Theo

+0

@Theo: thực sự, tôi thích ngăn xếp mà tôi đã sử dụng và có kế hoạch tiếp tục sử dụng nó cho một số khía cạnh. Nhưng nó không phải là tất cả những khả năng mở rộng, và tôi đang xem xét di chuyển về phía JSON/REST để giúp đỡ với điều này. Ngoài ra, bằng cách sử dụng wicket có nghĩa là truyền HTML qua dây và thậm chí với AJAX, điều này dẫn đến việc sử dụng băng thông nhiều hơn là chỉ cần chuyển JSON và cho phép trình duyệt tạo HTML. – Tauren

Trả lời

5
  1. Chọn phần mềm trung gian bạn cảm thấy thoải mái nhất.

  2. CouchApp hiện đang rất thử nghiệm. Vấn đề chính là có thể thêm tính bảo mật cho ứng dụng của bạn mà không có hộp bật lên HTTP chuẩn. Đây rõ ràng là một vấn đề lớn đối với các ứng dụng web chuẩn.

  3. Hãy thử và tránh phân tích cú pháp từng yêu cầu DB trong phần mềm trung gian và xây dựng lại truy vấn cho couchdb. Bạn có thể làm cho phần mềm trung gian của bạn hoạt động như một proxy để hầu hết các yêu cầu được chuyển tiếp mà không sửa đổi. Bạn cũng có thể thêm một lớp bảo mật trong middlelayer trên đầu trang của tất cả các yêu cầu cần xác thực.

  4. Chọn phần mềm trung gian/khung với khả năng định tuyến URL tốt. Ví dụ, bạn có thể định tuyến tất cả các yêu cầu đi đến mydomain.com/db/ đến couchdb.

+0

Điểm rất tốt, cảm ơn! Tôi hoàn toàn có ý định sử dụng đề xuất của bạn để có phần mềm trung gian hoạt động như một proxy. – Tauren

+0

Lý do cơ bản đằng sau # 3 là gì? -> "Hãy thử và tránh phân tích cú pháp mỗi yêu cầu DB trong phần mềm trung gian và xây dựng lại truy vấn cho couchdb. Bạn có thể làm cho phần mềm trung gian của bạn hoạt động như một proxy để hầu hết các yêu cầu được chuyển tiếp mà không sửa đổi. Bạn cũng có thể thêm lớp bảo mật vào middlelayer ở trên cùng của tất cả các yêu cầu cần xác thực ". – Geoff

3

Nếu bạn đi với CouchDB, bạn có thể sử dụng CouchApp là tập hợp các tập lệnh để triển khai ứng dụng trực tiếp đến cơ sở dữ liệu CouchDB. Về bản chất, bạn bỏ qua phần mềm trung gian và sử dụng các khung nhìn, danh sách và các hàm hiển thị của CouchDB cùng với JavaScript khách hàng để triển khai toàn bộ ứng dụng. Nếu ứng dụng của bạn hoạt động trong kiến ​​trúc này, nó làm mới đáng ngạc nhiên, đơn giản và tuyệt vời.

+0

Thú vị, cảm ơn! Nhưng làm thế nào để bảo mật được xử lý bằng một giải pháp như thế này? Người dùng hệ thống của tôi phải đăng nhập để truy cập dữ liệu và sau đó họ chỉ có thể xem dữ liệu nhất định dựa trên quyền mà tài khoản của họ có. – Tauren

+0

CouchApp thật thú vị nhưng tôi sẽ nói nó chỉ dành cho giai đoạn đầu thử nghiệm và thử nghiệm. Bạn sẽ vượt qua nó; tuy nhiên nó có thể trở thành một phần của tổng số đơn đăng ký của bạn. – JasonSmith

+0

Vì vậy, những người khác đang sử dụng CouchApp làm gì khi họ phát triển vượt trội? Từ những gì tôi có thể nói, tôi sẽ phát triển nó ngay từ đầu. – Tauren

1

Tôi đã từng làm việc với một số ít. Cuối cùng, tôi muốn di chuyển lớp điều khiển của MVC sang giao diện jQuery/javascript và sử dụng JSON/REST thuần túy để nói chuyện với phần cuối. Mặc dù chương trình phụ trợ sẽ cần bảo mật mạnh mẽ và ứng dụng của tôi có khả năng thực hiện quy trình làm việc, truy vấn và quy tắc.

Bạn cũng có thể muốn xem:

1) Cankit, chạy trên Nội các Tokyo. Hỗ trợ JSONQuery và OAuth. Chạy trên Ruby/Rack có thể có đủ chức năng. Loks giống như một triển khai REST mạnh mẽ. 2) Persevere, dựa trên Java và được hỗ trợ mạnh mẽ trong Dojo. Đó là REST-ish nhưng cũng có một số cuộc gọi kiểu RPC. Có vẻ rất mạnh mẽ tổng thể, với kịch bản java phía máy chủ, v.v.

Tôi sẽ không quan tâm đến việc bạn sẽ đến như thế nào.

Chúc mừng, Alex

+0

Cảm ơn! Tôi chưa xem xét về cloudkit hay persevere, vì vậy tôi sẽ dành thời gian với họ. Yêu cầu của bạn tương tự, cần bảo mật, quy trình công việc, quy tắc, v.v. Tôi cũng cần tùy chỉnh i18n và L10n và mức người dùng (chủ đề/bố cục/v.v.). Chủ đề có thể được xử lý phía máy khách, nhưng tôi không muốn làm i18n trên máy khách. Vì chồng hiện tại của tôi đã thực hiện được nhiều điều này, tôi đang đùa giỡn với việc cho phép nó phân phối mã html i18n'ed bao gồm mã jquery. Sau đó, jquery sẽ hoạt động độc lập bằng cách sử dụng các truy vấn JSON/REST thông qua Jersey. Việc di chuyển từ triển khai hiện tại của tôi có thể đơn giản hơn theo cách này. – Tauren

2

Ngoài ra nếu bạn thích ý tưởng về JSON/REST và gắn bó với khách hàng hoạt Javascript để máy chủ, thế hệ mới hơn của lõi kiên trì của, pintura là tinh khiết khuôn khổ/REST JS JSON được thiết kế đặc biệt để làm việc tốt với NoSQL DBs.

+0

Cảm ơn Kris, tôi sẽ kiểm tra Pintura. – Tauren

0

Tôi đã viết một viên đá quý được gọi là Rack::JSON cho mục đích chính xác này, nó hoạt động như một giao diện REST cơ bản cho một db MongoDB. Nó được lấy cảm hứng từ Cloudkit và hỗ trợ JSONQuery và cũng chạy trên Ruby/Rack. Nó cho phép bạn lưu trữ và sau đó truy cập/truy vấn tài liệu JSON.

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