2013-06-26 25 views
6

ngắn phiên bản:bó trăn "back-end" mã trong một ứng dụng PhoneGap

Có một cách tiêu chuẩn để gói Python "máy chủ back-end" loại mã với một ứng dụng PhoneGap khách hàng?

Long phiên bản:

Tôi có một số ứng dụng mà tôi đang xem xét porting để PhoneGap. Nói chung, các ứng dụng được viết bằng Python. Một số người trong số họ có web front-end, một số trong số đó là các ứng dụng Python độc lập với các giao diện dựa trên wxpython.

Vì vậy, mỗi ứng dụng có một số nội dung phía máy khách, đã có trong html + javascript + css hoặc tôi rất vui khi dịch sang html + javascript + css.

Đối với phía máy chủ, đối với một số ứng dụng, bạn có thể để lại mã máy chủ trên máy chủ. Nhưng đối với một số/hầu hết, tôi muốn đóng gói logic phía máy chủ bằng ứng dụng Phonegap, vì vậy nó có thể là một ứng dụng độc lập. Yêu cầu này xuất phát từ hai nhu cầu. Một là nhiều ứng dụng trong số này được sử dụng để phản hồi khẩn cấp và cần phải hoạt động ngay cả khi không có tháp di động và cơ sở hạ tầng mạng khác. Cách khác đơn giản là một số ứng dụng khá đơn giản và không đảm bảo kiến ​​trúc máy khách/máy chủ - chúng chỉ xảy ra có nhiều loại mã "back end logic" được viết bằng Python.

Bây giờ, tôi biết rằng tôi chỉ có thể chuyển tất cả logic Python back-end đó sang javascript, nhưng tôi đã hy vọng tìm được giải pháp nơi cơ sở mã khá lớn này có thể vẫn còn trong Python.

Ý tưởng của tôi là tôi có thể viết một plugin điện thoại thực sự chứa trình thông dịch Python đầy đủ (ít nhất là đủ để xử lý hầu hết nội dung trong mã cơ sở của tôi). (Tức là cả iOS và Android đều cho phép mã C gốc, vì vậy tôi có thể biên dịch Python - hoặc ít nhất là từ mã nguồn, hoặc chỉ liên kết tới thư viện iOS và Android Python mà những người khác đã xây dựng.)

Vì vậy, trong mã javascript, tôi có thể yêu cầu khách hàng gọi một số chức năng như "InvokeBackEndMethod()". Điều này sẽ hành động giống như một cuộc gọi ajax, nhưng thay vì gọi ra trên mạng, nó sẽ gửi truy vấn/url/tin nhắn tới plugin Python. Sự hiểu biết của tôi là plugin trên điện thoại có thể duy trì trạng thái liên tục (ví dụ: plugin cơ sở dữ liệu cho phép bạn thực hiện một cuộc gọi để mở cơ sở dữ liệu và các cuộc gọi tiếp theo để đọc từ đó và đóng nó). Vì vậy, mã "máy chủ" Python có thể duy trì trạng thái của nó giống như trên máy chủ thực. Trong thực tế, mã Python có thể đang chạy một khuôn khổ web như cherrpy, do đó, nó sẽ thực sự giống như chạy cả máy khách và máy chủ trong cùng một ứng dụng di động.

Câu hỏi của tôi là:

(1) Gói đó có hợp lý không?

(2) Có ai đó đã giải quyết được sự cố này không? Tôi đã hy vọng tìm được một dự án gọi là "máy chủ phonegap", và về cơ bản nó sẽ là một phần mở rộng PhoneGap "phổ quát", theo nghĩa là nó sẽ nhận các cuộc gọi tùy ý từ khách hàng, và sẽ gửi các cuộc gọi đó đến sự lựa chọn của bạn các cơ chế khác nhau: Python, Java, mono, v.v. (ví dụ, phần mở rộng điện thoại phổ thông này sẽ được "mở rộng" bằng nhiều ngôn ngữ "plugin" khác nhau và sau đó các plugin đó sẽ được "mở rộng" bằng bất kỳ logic nghiệp vụ nào mà người dùng thêm vào ngôn ngữ). Nó có thể là một dự án như vậy là không cần thiết bởi hầu hết mọi người bởi vì họ không có yêu cầu chạy bị ngắt kết nối và/hoặc họ không có một cơ sở mã lớn của logic "back end" mà họ muốn triển khai trong một ứng dụng độc lập nhưng để lại bằng ngôn ngữ gốc. Nhưng có vẻ như một số người phải cần điều đó, phải không?

+0

Không, ứng dụng PhoneGap được cho là mã phía máy khách. Nhưng bạn có thể viết logic trong mã Java/Python kết thúc mã PhoneGap của bạn. –

+0

@limelights: đúng, ý tưởng mở rộng của tôi về cơ bản là đặt mã Java/Python vào trình bao bọc (tức là phần của điện thoại nằm ngoài trình duyệt được nhúng). Câu hỏi của tôi là liệu ai đó đã thiết lập một khuôn khổ cho điều đó chưa. –

Trả lời

1

Hai sáng kiến ​​rất khác nhau bạn nên kiểm tra: http://omz-software.com/pythonista/ Cho phép xuất sang dự án Xcode.

http://code.google.com/p/brython/ Sử dụng Python thay vì Javascript để phát triển HTML5.

+0

Cảm ơn. pythonista là quá nhiều của một "gói" và chỉ dành cho iOS, nhưng brython trông khá thú vị. Tôi đang xem xét nó hoạt động tốt như thế nào ... –

+0

Vâng, tôi đã thử brython, và cũng pyjaco và py2js/pajamas. Trong mọi trường hợp, tôi thấy chúng "chưa sẵn sàng cho thời gian chính". Py2js khá phức tạp, nhưng nó vẫn không hỗ trợ tất cả cú pháp python được sử dụng trong mã của tôi (điều này là hoàn toàn khả thi vì tôi có thể sửa đổi mã chung để loại bỏ những gì họ không hỗ trợ). Nhưng kẻ giết người là với tất cả trong số họ rất khó để theo dõi lỗi của bạn. Họ đưa ra các báo cáo lỗi tối thiểu và khó thiết lập các điểm ngắt trong mã javascript đã biên dịch của bạn vì nó được chèn động (ít nhất tôi không biết cách đặt các điểm ngắt trong mã như vậy). –

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