2013-06-26 7 views
6

लघु संस्करण:बंडलिंग अजगर "वापस अंत" एक phonegap अनुप्रयोग में कोड

वहाँ एक phonegap क्लाइंट अनुप्रयोग के साथ में "बैक-एंड सर्वर" प्रकार कोड अजगर बंडल करने के लिए एक मानक तरीका है?

लांग संस्करण:

मैं अनुप्रयोगों है कि मैं phonegap को पोर्टिंग पर विचार कर रहा हूँ की एक संख्या है। सामान्य रूप से, ऐप्स पायथन में लिखे जाते हैं। उनमें से कुछ वेब फ्रंट-एंड हैं, उनमें से कुछ स्टैंडअलोन पाइथन ऐप हैं जो wxpython पर आधारित इंटरफेस के साथ हैं।

इसलिए प्रत्येक एप्लिकेशन में कुछ क्लाइंट-साइड सामान हैं, जो पहले से ही HTML + जावास्क्रिप्ट + सीएसएस में है, या जिसे मैं HTML + जावास्क्रिप्ट + सीएसएस में अनुवाद करने में प्रसन्न हूं।

सर्वर पक्ष के लिए, कुछ अनुप्रयोगों के लिए सर्वर पर सर्वर कोड छोड़ना ठीक है। लेकिन कुछ/अधिकतर के लिए, मैं फोन-एप लॉजिक के साथ सर्वर-साइड लॉजिक को पैकेज करना चाहता हूं, इसलिए यह एक स्टैंडअलोन ऐप हो सकता है। यह आवश्यकता दो जरूरतों से आती है। एक यह है कि इनमें से कई ऐप्स आपातकालीन प्रतिक्रिया के लिए उपयोग किए जाते हैं, और सेल टावर और अन्य नेटवर्क आधारभूत संरचना उपलब्ध होने पर भी काम करने की आवश्यकता है। दूसरा यह है कि कुछ ऐप्स काफी सरल हैं, और क्लाइंट/सर्वर आर्किटेक्चर की गारंटी नहीं देते हैं - वे सिर्फ पाइथन में लिखे गए "बैक एंड लॉजिक" टाइप कोड के बहुत सारे होते हैं।

अब, मुझे पता है कि मैं बस उस बैक-एंड पायथन तर्क को जावास्क्रिप्ट पर बंद कर सकता हूं, लेकिन मैं एक ऐसा समाधान ढूंढने की उम्मीद कर रहा था जहां यह बड़ा कोड बेस पायथन में रह सके।

मेरा विचार यह है कि मैं एक फोनगैप प्लगइन लिख सकता हूं जिसमें वास्तव में पूर्ण पायथन दुभाषिया होता है (कम से कम मेरे कोड बेस में अधिकांश सामग्री को संभालने के लिए पर्याप्त पूर्ण)। (यानी, आईओएस और एंड्रॉइड दोनों देशी सी कोड की अनुमति देते हैं, इसलिए मुझे पाइथन को संकलित करने में सक्षम होना चाहिए - या कम से कम इसमें से - स्रोत से, या सिर्फ आईओएस और एंड्रॉइड पायथन पुस्तकालयों से लिंक करें जो दूसरों ने बनाया है।)

तो जावास्क्रिप्ट कोड में, मैं क्लाइंट को "InvokeBackEndMethod()" जैसे कुछ फ़ंक्शन को कॉल कर सकता था। यह एक अजाक्स कॉल की तरह काम करेगा, लेकिन नेटवर्क पर कॉल करने के बजाय, यह पाइथन प्लगइन पर क्वेरी/यूआरएल/संदेश भेज देगा। मेरी समझ यह है कि फोनगैप प्लगइन्स लगातार स्थिति बनाए रख सकते हैं (उदाहरण के लिए, एक डेटाबेस प्लगइन आपको डेटाबेस खोलने और बाद में कॉल को पढ़ने और इसे बंद करने के लिए एक कॉल करने देता है)। तो पाइथन "सर्वर" कोड अपने राज्य को वास्तविक सर्वर पर जैसे ही बनाए रख सकता है। वास्तव में पाइथन कोड एक वेब फ्रेमवर्क जैसे चेरपी चला रहा है, इसलिए यह वास्तव में एक ही मोबाइल ऐप में क्लाइंट और सर्वर दोनों को चलाने जैसा होगा।

मेरे प्रश्न हैं:

(1) कि योजना उचित ध्वनि करता है?

(2) क्या किसी ने इस समस्या को हल कर लिया है? मैं कह रहा था कि "फोनगैप सर्वर" कहलाए जाने वाले प्रोजेक्ट को ढूंढने की उम्मीद थी, और यह अनिवार्य रूप से एक "सार्वभौमिक" फोनगैप एक्सटेंशन होगा, इस अर्थ में कि यह क्लाइंट से मनमाने ढंग से कॉल करेगा, और उन कॉलों को आपकी पसंद के अनुसार प्रेषित करेगा विभिन्न तंत्र: पायथन, जावा, मोनो, इत्यादि। (यानी, इस सार्वभौमिक फोनगैप एक्सटेंशन को विभिन्न भाषा "प्लगइन्स" द्वारा "विस्तारित" किया जाएगा और फिर उन प्लगइन्स को बदले में जोड़े गए जो भी व्यवसाय तर्क द्वारा "विस्तारित" किया जाएगा भाषा)। ऐसा हो सकता है कि ज्यादातर लोगों द्वारा इस तरह की एक परियोजना की आवश्यकता नहीं है क्योंकि उन्हें डिस्कनेक्ट करने की आवश्यकता नहीं है और/या उनके पास "बैक एंड" तर्क का बड़ा कोड बेस नहीं है जिसे वे तैनाती करना चाहते हैं एक अकेले ऐप में लेकिन मूल भाषा में छोड़ दें। लेकिन ऐसा लगता है कि कुछ लोगों को इसकी आवश्यकता होनी चाहिए, नहीं?

+0

नहीं, फोनगैप ऐप केवल क्लाइंट साइड कोड होना चाहिए। लेकिन आप जावा/पायथन कोड के भीतर तर्क लिख सकते हैं जो आपके फोनगैप कोड को लपेटता है। –

+0

@limelights: ठीक है, मेरा विस्तार विचार अनिवार्य रूप से जावा/पायथन कोड को रैपर में डाल रहा है (यानी, एम्बेडेड ब्राउज़र के बाहर फोनगैप का हिस्सा)। मेरा सवाल यह है कि क्या किसी ने इसके लिए पहले से ही एक ढांचा स्थापित किया है। –

उत्तर

1

आपको दो बहुत ही अलग पहल की जांच करनी चाहिए: http://omz-software.com/pythonista/ निर्यात को एक्सकोड प्रोजेक्ट में अनुमति देता है।

और http://code.google.com/p/brython/ एचटीएमएल 5 विकास के लिए जावास्क्रिप्ट के बजाय पायथन का उपयोग करें।

+0

धन्यवाद। पायथनिस्टा "पैकेज" का बहुत अधिक है और सिर्फ आईओएस के लिए है, लेकिन ब्राइटन काफी रोचक दिखता है। मैं देख रहा हूं कि यह कितना अच्छा प्रदर्शन करता है ... –

+0

ठीक है, मैंने ब्रायन, और पिज्जाको और पाय 2js/पायजामा की कोशिश की। सभी मामलों में, मैंने उन्हें "प्राइम टाइम के लिए तैयार नहीं" पाया। Py2js काफी परिष्कृत है, लेकिन फिर भी यह मेरे कोड में उपयोग किए जाने वाले सभी पायथन वाक्यविन्यास का समर्थन नहीं करता है (यह काम करने योग्य है क्योंकि मैं कोड को सामान्य रूप से संशोधित करने के लिए कोड को संशोधित कर सकता हूं)। लेकिन हत्यारा यह है कि उन सभी के साथ आपकी बग को ट्रैक करना बहुत मुश्किल है। वे न्यूनतम त्रुटि रिपोर्ट देते हैं और आपके संकलित जावास्क्रिप्ट कोड में ब्रेकपॉइंट्स सेट करना मुश्किल है क्योंकि इसे गतिशील रूप से इंजेक्शन दिया जाता है (कम से कम मुझे नहीं पता कि इस तरह के कोड में ब्रेकपॉइंट कैसे सेट करें)। –

संबंधित मुद्दे