2010-06-30 9 views
20

मैं आईफोन और आईपैड के लिए एक आंतरिक ऐप बनाने जा रहा हूं जो उन उद्धरणों के लिए बिक्री कॉल, संबंधित उद्धरण, फोटो और चित्रों का ट्रैक रखेगा। मैं अभी भी अवधारणा डिजाइन चरण में हूं और मैं अपने ऐप और webservice के बीच संवाद करने के विभिन्न तरीकों पर पढ़ने की कोशिश कर रहा हूं। जाहिर है क्योंकि इसका उपयोग ज्यादातर 3 जी से अधिक होगा या नहीं ... एज मैं एक कुशल प्रोटोकॉल चाहता हूं, इसलिए मेरी आंत प्रतिक्रिया एक्सएमएल-आरपीसी, या एसओएपी जैसे एक्सएमएल आधारित चीजों से दूर रहना है। मैं सर्वर पर PHP और MySQL का उपयोग करना चाहता हूं और आईओएस पर कोर डेटा का उपयोग करने की योजना बनाना चाहता हूं।आईओएस के साथ किस तरह का webservice सबसे अच्छा काम करता है?

तो मैं एक जोड़े को विशिष्ट प्रश्न हैं:

  1. क्या योजना मैं प्रदर्शन के लिए इस्तेमाल करना चाहिए?
  2. सर्वर पर काम करने में आसानी के लिए मुझे किस योजना का उपयोग करना चाहिए?
  3. आईओएस पर काम करने में आसानी के लिए मुझे किस योजना का उपयोग करना चाहिए?
  4. पूरी तरह से परियोजना पर विचार करने के लिए मुझे किस योजना का उपयोग करना चाहिए?
  5. नेटवर्क ओवरहेड के बावजूद एक एक्सएमएल आधारित योजना का बेहतर उपयोग कर रहा है? क्यूं कर?
+0

मैं इस चर्चा के परिणाम के रूप में रुचि है, मैं नहीं बल्कि जल्द ही एक ही स्थिति का सामना करना पड़ जाएगा। – Webnet

+2

यदि आप एक्सएमएल से बचने का इरादा रखते हैं, तो आप [JSON] (http://en.wikipedia.org/wiki/JSON) की जांच करना चाहेंगे। उद्देश्य-सी में जेएसओएन को संभालने के लिए [पुस्तकालय] (http://code.google.com/p/json-framework/) हैं। – JoeGaggler

+0

मैं एक्सएमएल से बचने का इरादा नहीं रखता हूं, असल में पढ़ने से मैंने पहले से ही आरपीसी-एक्सएमएल पसंद किया है, हालांकि मुझे पता है कि यह बैंडविड्थ पर खर्च करेगा। तो मुझे यह देखने में दिलचस्पी है कि लागत एक्सएमएल का उपयोग करने के लायक है और साथ ही किस प्रकार की योजना सबसे अच्छी और आसान होगी। – jamone

उत्तर

39

जिस तरह से आपने कई प्रश्न पूछे हैं, आपको शायद यह पता चले कि आपके द्वारा उपयोग किए जाने वाले अंतिम समाधान प्रतिस्पर्धी लक्ष्यों के बीच एक संतुलित कार्य होगा।

1: आपको "प्रदर्शन" को बेहतर परिभाषित करने की आवश्यकता है। मुझे लगता है कि आप नेटवर्क ट्रांसमिशन समय का जिक्र कर रहे हैं जिसका मतलब है कि सर्वर विलंबता कम रखना और बाइट्स की संख्या कम प्रेषित है। परम संभवतः एक कस्टम द्विआधारी तार प्रोटोकॉल है जिसे संपीड़न और संपीड़न के लिए भी लागू किया गया है जहां उपयुक्त हो (जैसे दोहराया तार या अनुक्रम)। ऐसे प्रोटोकॉल का नकारात्मक पक्ष यह है कि सर्वर & क्लाइंट दोनों पर कोड करना अधिक कठिन होगा क्योंकि आप मानकीकृत एन्कोडिंग के लिए एसडीके समर्थन का उपयोग नहीं कर पाएंगे, और जब तक विचारशील रूप से डिज़ाइन किए गए बाइनरी प्रोटोकॉल भविष्य में परिवर्तनों का समर्थन करने के लिए भंगुर नहीं होते और आपके आवेदन के लिए एक्सटेंशन।

इसके अलावा, आप पर विचार करना चाहिए कि कैसे आप अगर अपने प्रोटोकॉल एक एकल राउंड ट्रिप आप अभी भी धीमी गति से हो जाएगा बनाम कई दौर यात्राएं की आवश्यकता है यहां तक ​​कि एक कुशल एन्कोडिंग के साथ अपने प्रोटोकॉल के लेन-देन को परिभाषित करते हैं,।

अन्त में डेटा आप भेज रहे हैं के आकार के आधार पर एक एन्कोडिंग की भूमि के ऊपर सारहीन डेटा के आकार की तुलना में किया जा सकता है। XML या JSON:

मैं एक मानकीकृत एन्कोडिंग प्रारूप है जो पुस्तकालय समर्थन के साथ पार्स किया जा सकता है, जो दो प्रमुख व्याकरण छांट लेती साथ चिपके हुए सलाह देते हैं।

2: एक्सएमएल और जेएसओएन दोनों सर्वर ढांचे में अच्छी तरह से समर्थित हैं। एक्सएमएल सेवाओं का उपयोग करते समय मैं एक आरईएसटी स्टाइल पैटर्न की अनुशंसा करता हूं क्योंकि वे आमतौर पर निर्माण करना आसान होते हैं और आपको किसी और की शैली में अपना आवेदन अनुरूप नहीं करना पड़ता है।

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

3: आईओएस निर्मित एक SAX शैली XML पार्सर का समर्थन करता है, और वहाँ वर्ग उपलब्ध है कि समर्थन में स्मृति DOM क्रियान्वयन विभिन्न सुविधाओं और गति के स्तर के साथ पुस्तकालयों की एक किस्म। अपनी जरूरतों के लिए सबसे अच्छा उठाओ।मैं व्यक्तिगत रूप से टीबीएक्सएमएल पसंद करता हूं जो तेजी से, काफी हल्का और प्रोग्राम करने में आसान है, लेकिन क्योंकि यह स्कीमा को मान्य नहीं करता है और यह एक मेमोरी पेड़ है, यह कुछ स्थितियों में उपयुक्त नहीं है। आईओएस एक्सएमएल लाइब्रेरी प्रदर्शन के Here is a shootout

यदि आप Google के आसपास हैं तो आईओएस के लिए कई JSON लाइब्रेरी उपलब्ध हैं। या look in this answer

SOAP अच्छी तरह से समर्थित नहीं है और सीमित लाइब्रेरी विकल्प हैं। आप सर्वर द्वारा जेनरेट किए गए एसओएपी प्रतिक्रियाओं को हमेशा पार्स कर सकते हैं लेकिन यह सर्वर-साइड परिवर्तनों के लिए भंगुर है जो कानूनी SOAP (उदा। अलग नामस्थान उपसर्ग) हैं जो एक हार्डकोडेड एक्सएमएल पार्सर तोड़ सकता है।

4: अपने प्रोजेक्ट के विवरण के बारे में और जानने के बिना जवाब देने में मुश्किल है, लेकिन मैं एक JSON या साधारण XML- आधारित एन्कोडिंग की तरफ झुकता हूं क्योंकि: क्लाइंट और सर्वर पर प्रोग्राम करना आमतौर पर आसान होता है, दोनों के साथ किया जा सकता है तार पर उचित दक्षता, और भविष्य के ऐप पुनरावृत्तियों के लिए एक्स्टेंसिबल होने की संभावना है।

जेएसओएन के पास पार्स के लिए थोड़ा आसान होने के फायदे हैं, कम शब्दशः हो सकते हैं, और अन्य उद्देश्यों के लिए पुनः कार्य करना भी आसान हो सकता है, जैसे आपकी सेवाओं के शीर्ष पर एक अजाक्स वेब क्लाइंट बनाना।

5: एक्सएमएल बनाम जेएसओएन बनाम अन्य एन्कोडिंग? मुझे लगता है कि यह एक व्यक्तिगत वरीयता है। एक्सएमएल जेएसओएन की तुलना में अधिक आत्म-वर्णन कर सकता है लेकिन पार्स करने के लिए और अधिक काम होने की संभावना है। जेएसओएन कच्चे बाइट्स में कम ओवरहेड हो सकता है और पार्स करना आसान है। फिर से एन्कोडिंग ओवरहेड महत्वपूर्ण हो सकता है या आपकी सामग्री के आकार के आधार पर नगण्य हो सकता है। इसके अलावा आप किसी भी मामले में बाहरी संपीड़न लागू कर सकते हैं।

+1

बहुत पूरा जवाब। – rpetrich

+0

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

+2

थोड़ा प्रयोग करने के बाद मैंने JSON फर्मवेयर का उपयोग 'JS: // code.google.com/p/json-framework /' से JSON फर्मवेयर का उपयोग करके JSON के साथ जाने का निर्णय लिया, यह क्लाइंट और सर्वर दोनों पक्षों का उपयोग करना इतना आसान है। – jamone

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