2012-08-29 24 views
7

Tôi có một ứng dụng mà tôi muốn tạo. Nhưng tôi không chắc chắn làm thế nào để đi về nó. Tôi đang sử dụng node.js và muốn sử dụng couchdb, nhưng nếu một cái gì đó như mongodb hoặc riak sẽ là một lựa chọn tốt hơn họ im sẵn sàng nghe ý tưởng. Nhưng, tôi có một trang web, nóiỨng dụng ngoại tuyến với Node.JS và CouchDB

cool.com

và trên đó là một trường hợp couchdb, cũng như một trang web để quản lý một cửa hàng. nói một giỏ mua hàng. db chứa tất cả các mục và dữ liệu của cửa hàng. Bản thân ứng dụng có phần phụ trợ quản trị để quản lý dữ liệu đó và có thể thay đổi các mục. Những gì tôi muốn để có thể làm, là có khả năng để có được người dùng bị ngắt kết nối từ internet, và vẫn có công việc quản trị phụ trợ. Tôi nhận ra điều này để làm việc tôi cần phải sử dụng một khuôn khổ phía khách hàng với các mô hình của tôi/tuyến đường/bộ điều khiển/bất cứ điều gì. Nhưng những gì tôi không chắc chắn, là làm thế nào để cho các chức năng trang web trong khi offline. couchdb nếu được cài đặt cục bộ có thể đồng bộ hóa dữ liệu từ cục bộ đến từ xa khi quay lại trực tuyến và nếu người dùng quản trị trên máy tính, tôi có thể yêu cầu họ cài đặt ghế dài. nhưng điều đó có thể lộn xộn.

Ngoài ra, điều gì sẽ xảy ra nếu người dùng quản trị viên đang sử dụng máy tính bảng hoặc điện thoại? Tôi có cần phải có ứng dụng di động thực tế và ứng dụng dành cho máy tính để bàn để thực hiện việc này không? là có một số cách tôi có thể thiết lập này để nó liền mạch người dùng cuối. Tôi cũng muốn điều này là ngoại tuyến cho người dùng cuối, nhưng đối tượng lớn hơn là quản trị viên.

Một trường hợp sử dụng khác, instore hệ thống POS. và sức mạnh biến mất. Tuy nhiên, hệ thống POS có thể được tải từ web vào một máy tính bảng và họ vẫn có thể thực hiện bán hàng dựa trên thẻ nếu wifi đã hết, vì ứng dụng có sẵn ngoại tuyến.

Im chỉ không chắc chắn cách thực hiện việc này. cho phép giả sử tôi cần một framrwork khách hàng có thể xử lý dữ liệu cũng như các phụ trợ. một cái gì đó giống như ember, hoặc góc cạnh. theres cũng tất cả trong một ngăn xếp như meteor và derby js, nhưng những arent hoàn toàn ẩn, nhưng là cho sự xuất hiện của thời gian thực. mặc dù sao băng có mini mongo vì vậy nó có thể là giá trị xem xét. Tôi đã hy vọng một người nào đó có thể giúp tôi tìm ra cách tôi sẽ thiết lập để làm việc, tốt nhất là với đi văng, nhưng nosql khác sẽ làm việc quá nếu tôi có thể có một cách để đồng bộ hóa dữ liệu.

+0

Bạn có ý nghĩa gì khi bán hàng dựa trên thẻ? Bạn có nghĩa là thanh toán bằng thẻ tín dụng? –

+0

Có. Vì vậy, một điểm trong cửa hàng của hệ thống bán hàng. Nó sẽ được dùng nhiều phương thức thanh toán. – skift

+0

Bạn đã kết thúc với điều gì? – bryanmac

Trả lời

3

Có một dự án thú vị được gọi là AppJs (http://appjs.com/), gói Node.JS và Chrominium làm môi trường máy tính để bàn. Nó hiện đang rất tươi (tài liệu rất ít), nhưng nó dường như được thẳng về phía trước đủ (bạn sẽ sử dụng các công cụ tương tự như bạn sẽ cho ứng dụng trực tuyến của bạn).

Để đồng bộ hóa môi trường ngoại tuyến và trực tuyến. Tôi nghi ngờ bạn có thể dựa vào CouchDB theo cách mà bạn dự tính. Hỗ trợ di động CouchDB không toàn diện như một số tài liệu gợi ý. Vì vậy, theo nghĩa này, sẽ không khác gì khi sử dụng SQL/Mongo/Punchcards.

Bạn có thể có nhiều may mắn hơn khi thiết kế sơ đồ tuần tự phù hợp dựa trên XML hoặc JSON (hoặc chỉ văn bản thuần túy) và truyền tệp giữa cài đặt trực tuyến và ngoại tuyến.

Chỉnh sửa - Kể từ khi viết này, Node Webkit - http://nwjs.io/ - rõ ràng là sự thay thế rõ ràng nhất cho App.js. Nó có một API rất đơn giản, và một số tính năng tuyệt vời.

+0

hrmm, app.js có vẻ như nó rất phù hợp. bạn có biết liệu nó có khả năng đóng gói máy chủ không? Nếu tôi có thể có được nó để bó trường hợp chiếc ghế nó sẽ là hoàn hảo. – skift

+0

chỉ cần lưu ý, tôi sẽ sử dụng app.js cho phiên bản ứng dụng dành cho máy tính để bàn của mình. và một cái gì đó như phonegap cho điện thoại di động. Mặc dù tôi biết tôi có vấn đề khác để bettle cho một cơ sở dữ liệu địa phương. Nhưng trong thời gian kể từ khi nó sẽ chỉ được cài đặt trên một vài máy tính, tôi có thể chỉ cần tạo một kịch bản lệnh để cài đặt db theo cách thủ công, và sau đó tìm một giải pháp để đóng gói nó đúng cách. – skift

4

Nếu bạn muốn khách hàng hoạt động không giống như họ ngoại tuyến và trực tuyến (như POS với nguồn điện) thì Tôi khuyên bạn nên làm cho ứng dụng chủ yếu hoạt động với bộ nhớ cục bộ với xuất bản nền hoặc đồng bộ hóa với đám mây.

tùy chọn lưu trữ địa phương có thể được tất cả mọi thứ từ một cái gì đó ánh sáng như SQLite, SQLEXPRESS, Firebird để không có tùy chọn sql như Mông Cổ, couchdb vv ...

Nhưng đối với khách hàng hoặc thiết bị, hãy xem xét một cách dễ dàng cấu hình và trọng lượng của tùy chọn. Bạn cũng cần phải xem xét các loại khách hàng - bạn có nhiều nền tảng khác nhau từ các thiết bị đến máy tính? Bạn không muốn cái gì đó có một cấu hình nặng và thời gian chạy. Đó là tốt về phía dịch vụ.

Về mặt dịch vụ, hãy xem xét tính chất dữ liệu của bạn và liệu nó có được trang bị tốt hơn cho các hệ thống giao dịch/quan hệ (ngân hàng, vv ..) hoặc cuối cùng/không giao dịch (không có sql). Đừng quên lai như là một lựa chọn. Ngoài ra, hãy xem xét nền tảng dịch vụ - ví dụ, nút hoạt động tốt với mongodb (đối tượng json từ trước ra sau) ...

Tùy chọn lưu trữ thiết bị và dịch vụ có thể khác nhau (và có thể phải) tách biệt với giao diện dịch vụ (xà phòng, phần còn lại/http, ổ cắm, v.v ...).Thật khó để có một kích thước phù hợp với tất cả các giải pháp nhưng thường có trọng lượng nhẹ như sqlite trên thiết bị hoặc khách hàng giúp dễ cài đặt/cấu hình trong khi khả năng mở rộng ở phía dịch vụ với một cái gì đó như sqlserver/mysql hoặc couchdb/mongodb làm cho giác quan.

Một số liên kết để đọc:

bạn đang hỏi là khá rộng mở và không có một kích thước phù hợp với tất cả các giải pháp. Hy vọng rằng tôi đã cung cấp một số tùy chọn để suy nghĩ.

+0

Tôi cũng đã xem xét địa phương đầu tiên. về cơ bản tạo 2 ứng dụng. trang web và máy chủ. cả hai đều có thể sử dụng api rất giống nhau, điều này sẽ dễ dàng hơn. Trên thực tế, một phần của hệ thống sẽ là giao diện POS mà * * sẽ có sẵn trên máy tính bảng. nghĩ rằng tôi có thể buộc họ sử dụng phiên bản trực tuyến. máy tính để bàn cần có khả năng ngoại tuyến (một lần nữa, POS). Alhtough nếu tôi có thể nhận được offline cho điện thoại di động mà sẽ là tuyệt vời là tốt (phonegap?). Nếu tôi cần xây dựng một vài ứng dụng riêng biệt, tôi sẽ chỉ cần nó liền mạch nhất có thể. – skift

+0

Bạn có thể hợp nhất thiết bị/PC xung quanh sqlite (nó là đa nền tảng - chia sẻ mã sql) và phía dịch vụ xung quanh bất kỳ tùy chọn lưu trữ nào có ý nghĩa ở đó (mongo/couchdb). Tôi tìm thấy mongo để phù hợp với nút nhưng không chơi với couchdb nhiều. – bryanmac

+0

tôi đã suy nghĩ, chỉ cung cấp ứng dụng ngoại tuyến cho quản trị viên và vẫn yêu cầu thông tin đăng nhập để thiết lập đồng bộ hóa. sau đó trên trang web nó có thể kiểm tra cục bộ cho db và chờ cho nó để đồng bộ. khi nó thực hiện nó sử dụng một địa phương. nếu không có một bản sao cục bộ, nó sử dụng db trực tuyến. theo cách này, một ứng dụng của nó và tôi chỉ cung cấp một số loại gói cho db địa phương. nhưng điều này vẫn còn để đặt câu hỏi làm thế nào tôi sẽ giải quyết di động. buộc họ phải trực tuyến? hoặc tạo ứng dụng dành cho thiết bị di động. couch dường như có một khách hàng điện thoại di động trong các công trình cho đi văng, mà họ nói rằng họ đã làm việc, mà có thể là một câu trả lời là tốt. – skift

6

Tôi không chắc liệu nó có hiệu quả với bạn hay không, nhưng tôi đã nghĩ về một ứng dụng như vậy trong một thời gian dài và đang thực hiện một số nghiên cứu về những gì có thể. Giải pháp tốt nhất tôi có thể đưa ra là sử dụng một máy chủ với một couchdb và viết ứng dụng dựa trên clientside. Sau đó, cho việc sử dụng lưu trữ dữ liệu pouchdb và đồng bộ hóa pouchdb thường xuyên với couchdb serverside của bạn nếu ứng dụng đang trực tuyến. Tôi biết túi là trong giai đoạn đầu và không sản xuất đã sẵn sàng nhưng nếu bạn sẵn sàng để đưa một số công việc vào nó tôi muốn nói rằng nó có thể thực hiện được.

+0

pouchdb trông đầy hứa hẹn. Tôi thực sự thích điều này. nếu nó có thể được đóng gói với app.js mà @charlie đã đề cập, đó sẽ là một điểm cộng. – skift

+0

@ luckysmack bạn không thực sự cần AppJs cho PouchDB, nó chạy trên IndexedDB trong trình duyệt (hoặc Chromium Embedded hoặc bất cứ nơi nào bạn chạy nó), với sự hỗ trợ WebSQL và LocalStorage cũng được lên kế hoạch cho khả năng tương thích ngược. – dain

+0

có tài liệu nào để hoàn thành điều này không? điều gì xảy ra nếu cuối cùng tôi không sử dụng app.js và chỉ sử dụng một người dùng được xây dựng trong trình duyệt? hoặc cái gì khác? – skift