2009-01-03 17 views
10

क्या कोको में कोई तरीका है जिसे वर्तमान में बहु-स्तरीय या क्लाइंट सर्वर एप्लिकेशन बनाने के लिए सबसे अच्छा अभ्यास माना जाता है?कोको क्लाइंट/सर्वर एप्लिकेशन

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

सबसे अच्छा मैं एक पायथन रीस्ट वेब सेवा लिखना और कोको ऐप के माध्यम से उससे जुड़ना चाहता हूं। हो सकता है कि मैं कोको ऐप को कोड करने के लिए पाइथन का भी उपयोग करूंगा।

कोको को देखते हुए, मुझे कोरडाटा जैसे कोको में वास्तव में महान तकनीकें दिखाई देती हैं लेकिन मुझे क्लाइंट सर्वर विकास के लिए कुछ भी नहीं मिला। मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि मुझे कुछ भी याद नहीं है।

आपको क्या लगता है?

असली दुनिया के उदाहरणों की बहुत सराहना की जाएगी।

अग्रिम धन्यवाद।

उत्तर

5

यदि आपके पास क्लाइंट और सर्वर दोनों का नियंत्रण है, और आप क्लाइंट को केवल ओएस एक्स तक सीमित कर सकते हैं, तो मैं दूसरा मार्क का जवाब देता हूं। कोको की वितरित वस्तुएं एक अद्भुत तकनीक हैं और आरपीसी-शैली क्लाइंट-सर्वर ऐप्स को बहुत आसान बनाती हैं।

उपरोक्त आवश्यकताओं को आप के लिए अत्यंत प्रतिबंधात्मक हैं, तो आप अभी भी कोको दुनिया में आप के लिए उपलब्ध कई विकल्प हैं:

  1. आप PyObjC का उपयोग कर पायथन में पूरे क्लाइंट ऐप कोड कर सकते हैं। इस दृष्टिकोण के साथ, आप मानक नेटवर्क कोड का उपयोग कर सकते हैं जिसे आप पाइथन मानक पुस्तकालय से परिचित हैं। Twisted भी कोको रन लूप (पीओओबीजेसी उदाहरण कोड में उदाहरण) के साथ अच्छी तरह से एकीकृत करता है और मुझे कोको ऐप में नेटवर्क संचार के लिए ट्विस्ट का उपयोग करके बहुत सफलता मिली है। यदि आप इस मार्ग पर जाना चुनते हैं, तो आप क्लाइंट ऐप को Objective-C में कोड करना चाहते हैं और पाइथन कोड को प्लगइन के रूप में लोड करना चाहते हैं (NSBundle का उपयोग करके)। PyObjC का py2app पाइथन कोड से लोड करने योग्य बंडलों को संकलित कर सकता है।

  2. आप HTTP-आधारित सर्वर पर उच्च-स्तरीय पहुंच के लिए NSURLConnection का उपयोग कर सकते हैं।

  3. अमूर्तता के स्तर को छोड़कर, आप अपने नेटवर्क प्रोटोकॉल को लागू करने के लिए कोको के एनएसएसटीम का उपयोग कर सकते हैं। क्लास प्रलेखन here है, उदाहरण कोड के लिंक HTTP और SOAP प्रोटोकॉल का प्रदर्शन करते हैं।

  4. आप एक और स्तर नीचे छोड़ सकते हैं और सीएफनेटवर्क कक्षाओं का उपयोग कर सकते हैं। एनएसएसटीम सीएफनेटवर्क पर आधारित है, लेकिन सीएफनेटवर्क का उपयोग कर लाइन पर आपके पास निम्न स्तर का नियंत्रण है।

अंत में, क्लाइंट-सर्वर आर्किटेक्चर के लिए ऐप्पल तकनीक WebObjects ढांचा है।

2

कोको में Portable Distributed Objects है, जो आपको शुद्ध उद्देश्य-सी और कोको में क्लाइंट/सर्वर एप्लिकेशन बनाने देता है जो प्रक्रियाओं या नेटवर्क पर संचार कर सकता है।

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

आपके अनुभव के आधार पर वेब सेवा का उपयोग करना आसान और तेज़ हो सकता है, लेकिन यह अभी भी देखने योग्य है कि आप पूरी परियोजना कोको में रखना चाहते हैं। यदि आप एक उदाहरण देखना चाहते हैं तो यहां एक tutorial है।

0

मैंने कोको में उपयोग के लिए एक सर्वर और क्लाइंट क्लास लिखा है। इन कक्षाओं का उपयोग करना सॉकेट के बारे में ज्ञान के बिना सर्वर या क्लाइंट एप्लिकेशन का उत्पादन करना बहुत आसान बनाता है और सी-स्टफ बस my website पर या sourceforge.net project site पर एक नज़र डालें।

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