2012-01-06 9 views
46

यह सवाल विशेष रूप से एक की सिफारिश की वास्तुकला से संबंधित है और लोगों के पार मंच WP7 के लिए पिछले अनुभवों, IOS, Android एप्लिकेशन विकसित के साथ अनुभव है क्रमशः सी #, मोनोटच और मोनोड्रॉइड का उपयोग कर। मैंने पिछले प्रश्न here, here और here पर शोध किए हैं। वे अच्छे उत्तर प्रदान करते हैं लेकिन काफी कुछ नहीं जो मैं ढूंढ रहा हूं। मुझे this excellent question भी मिला है जो लागत लाभ में जाता है इसलिए कुछ ओवरलैप होता है।किसी को भी पार मंच WP7 के एंड्रॉयड iOS मोबाइल विकास के लिए वास्तुकला (monotouch, monodroid, सी #)

मैं एक स्वास्थ्य & फिटनेस कंपनी है, जो अपनी वेबसाइट के साथ एकजुट हो के लिए एक पार मंच iPhone/iPad, WP7 और Android एप्लिकेशन विकसित करने के लिए एक आवश्यकता है। ऐप को ऑफ़लाइन मोड के लिए स्थानीय डेटा संग्रहण की एक छोटी राशि और नेटवर्क उपलब्ध होने पर वेबसाइट के साथ सिंक्रनाइज़ेशन की आवश्यकता होती है। मैं विंडोज़ (सी #/सी ++) डेवलपर हूं और वास्तव में तीन उद्देश्य सी, जावा और सी # ऐप्स के मार्ग को नीचे नहीं जाना चाहता हूं, हालांकि मुझे ऐसा करना होगा। मैं तकनीकी परियोजना के रूप में भी काम कर रहा हूं और इस परियोजना पर एक टीम को कुछ काम कर रहा हूं।

मैं जानना चाहता हूं कि यहां किसी को भी मोनोटouch, मोनोड्रॉइड और WP7 का उपयोग करके क्रॉस-प्लेटफॉर्म विकास का अनुभव है और जितना संभव हो उतना कोड पुनः उपयोग करने के लिए एप्लिकेशन आर्किटेक्चर पर अपना अनुभव साझा करना है।

  • किसी को भी यहाँ कुछ इस तरह की कोशिश की है:

    Proposed architecture for Wp7, Monotouch, Monodroid app

    मेरा प्रश्न इस प्रकार है: वास्तुकला मैं विचार कर रहा हूँ इस प्रकार है?

  • इन चौखटे (Monotouch, monodroid) काम की इस तरह के लिए अपने नमक लायक हैं?
  • मैं सेटअप Monotouch, Monodroid और WP7 लक्ष्य के लिए अलग परियोजनाओं (DLLs/exe) के साथ दृश्य स्टूडियो 2010 में पूरी परियोजना (लेकिन साझा कोड का उपयोग कर 'लिंक के रूप में') कर सकते हैं?
  • कोड-पुन: उपयोग किस तरह मैं वास्तविक (या समान) इस के साथ उम्मीद कर सकते हैं वास्तुकला? यानी स्थानीय डेटा एक्सेस, वेबसाइसेस और व्यावसायिक तर्क का पुन: उपयोग करने के लिए मैं किस रणनीति/पैटर्न का उपयोग कर सकता हूं?

सादर,

+44

मैं आपके क्लाउड ड्राइंग –

+0

धन्यवाद, अपने ट्रेडमार्क डॉन 'की तरह है: http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding

अधिक पूरी तरह से विशेष रुप से नमूने में से एक एक सम्मेलन एप्लिकेशन है:

वहाँ SlideShare पर उस पर एक परिचयात्मक प्रस्तुति है टी आप जानते हैं ;-) क्लाउड जो ड्रॉइंग नहीं है –

+1

यदि आप आर्किटेक्ट के रूप में कार्य कर रहे हैं, तो क्या यह ऐसी दृष्टिकोण लेने के लिए अधिक समझ में नहीं आता है जो आपकी तकनीकी विशेषज्ञता (सी #/सी ++) से बाधित नहीं है? जैसा कि आप संदर्भित करते हैं, एचटीएमएल/फोनगैप/जावास्क्रिप्ट इस मुद्दे को हल करने के लिए एक कोशिश की और परीक्षण दृष्टिकोण है। यह निश्चित रूप से नुकसान के बिना नहीं है और सवारी आसान नहीं है, लेकिन यह निश्चित रूप से कर सकता है और किया जा सकता है। मुझे उन उत्तरों में दिलचस्पी है जो आपको कम-से-कम नहीं मिल सकती हैं। – ColinE

उत्तर

25

आप MonoCross परियोजना जो आप एक से अधिक प्रस्तुति परतों के साथ सी # कोड का पुन: उपयोग में मदद करने के लिए बनाया गया है में देखना चाहते हो सकता है:

http://code.google.com/p/monocross/

MonoCross (आईटीआर गतिशीलता) के लेखकों से अधिक मोबाइल क्रॉस प्लेटफॉर्म बनाया है विभिन्न प्रकार के ग्राहकों के लिए समाधान और विषय पर दो पुस्तकें लिखी हैं "एंटरप्राइज़ में आईपैड" (http://amzn.to/zAhQK6) और आगामी "क्रॉस-प्लेटफार्म मोबाइल डेवलपमेंट सी #" (http://amzn.to/wM6RsF)।

इस दौरान, आप स्कॉट ओल्सन की प्रस्तुति है कि वह एकलस्पेस 2011 का वर्णन करता है कि एक बार व्यापार तर्क पुन: उपयोग में एकाधिक मोबाइल और डेस्कटॉप प्लेटफार्मों को लक्षित करने के MonoCross उपयोग करने के लिए कैसे में किया था देख सकते हैं:

http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise

वे उनके कोड में एक सख्त MVC विभाजन लागू:

MonoCross MVC Pattern http://tirania.org/s/0e187c1c.png

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

यह तकनीक है कि उनके आईपैड के कारोबार में एप्पल द्वारा प्रदर्शन किया है मेडट्रॉनिक नमूना एप्लिकेशन द्वारा सफलतापूर्वक इस्तेमाल किया गया था:

http://www.apple.com/ipad/business/profiles/medtronic/

मैं सुझाव है कि आप भी स्कॉट के ब्लॉग की जाँच जहां वह पार के साथ अपने अनुभवों के बारे में नियमित रूप से पोस्ट प्लेटफार्म वास्तुकला।

+0

ओह हाँ। ऐसा लगता है कि मेरी तरह की ढांचा (एमनेट पर पूर्ण)। साझा करने के लिए धन्यवाद, जानकारी की सराहना करते हैं। –

+0

असल में, आईएम ने एचटीएमएल 5 जवाब को अनवरोधित करने के लिए प्रेरित किया और इसे उत्तर के रूप में चिह्नित किया;) क्षमा करें कॉलिन। दोनों पर कुछ व्यवहार्यता करने जा रहे हैं लेकिन मैं एक पूर्ण .NET समाधान के विचार को प्राथमिकता देता हूं। मुझे बताएं कि एबवो विंडोज फोन पर भी काम करता है? (आप विंडोज यूआई का उल्लेख करते हैं कि मुझे लगता है कि विंडोज़ डेस्कटॉप)। हम एक ही ऐप के एक WP7, एंड्रॉइड, आईफोन, आईपैड के साथ ही एएसपी.नेट (वेबसाइट) संस्करण प्रकाशित करना चाहते हैं। –

+1

हां, उपरोक्त काम विंडोज फोन 7 के साथ काम करता है। हम आम सेवाओं के लिए एक क्रॉस-प्लेटफार्म एपीआई भी जोड़ रहे हैं: http://blog.xamarin.com/2011/11/22/introducing-the-xamarin- मोबाइल-api / –

9

अपनी टिप्पणी में अपनी आवश्यकताओं कि अपने मौजूदा सेवाओं के साथ एकीकृत जाएगा, लेकिन यह भी ऑफलाइन काम एक क्रॉस मोबाइल प्लेटफॉर्म के लिए कर रहे हैं के आधार पर। आप विशेष रूप से मोनो के माध्यम से सी # में रूचि रखते हैं, हालांकि आपने संकेत दिया है कि आप अन्य दृष्टिकोणों को छूट नहीं दे रहे हैं।

मुझे लगता है कि HTML/PhoneGap/जावास्क्रिप्ट एक मार्ग है कि आप कुछ विस्तार से पता लगाने चाहिए। इस ढांचे का WP7 संस्करण अभी जारी किया गया है, और इस दृष्टिकोण का उपयोग करके मुझे releasing an application to the marketplace का अनुभव मिला है।

PhoneGap WP7 के मामले इस स्थानीय भंडारण में लोड किया जाता में अपने HTML/जावास्क्रिप्ट कोड लपेटता,। यह एप्लिकेशन को पूरी तरह ऑफ़लाइन काम करने में सक्षम बनाता है। यह सभी संस्करणों (आईओएस, एंड्रॉयड आदि ...)

के लिए सच है शायद PhoneGap/एचटीएमएल 5 के साथ सबसे बड़ी समस्या ही समस्या हमारे पास जब ब्राउज़र के लिए जटिल वेब आधारित अनुप्रयोगों के विकास है। जावास्क्रिप्ट के लिए टूलिंग बहुत अच्छा नहीं है और ब्राउज़र अंतर एक स्थिर मुद्दा हैं। हालांकि, यह एक कोशिश की और परीक्षण समाधान है।

अंत में, प्रत्येक प्लेटफ़ॉर्म के लिए पूरी तरह से एक एप्लिकेशन UI बनाना संभव है।

enter image description here

WP7 के स्क्रीन को यह तुलना करें::

enter image description here

MVVM पैटर्न का उपयोग करके मैं एक पूरी तरह से अलग यूआई होने जबकि WP7 और iOS अनुप्रयोगों के बीच सब मेरी जावास्क्रिप्ट व्यापार तर्क साझा करने के लिए कामयाब रहे

नोट: मैं जल्द ही ऐपस्टोर में प्रॉपर्टी फाइंडर का आईओएस संस्करण रखने की योजना बना रहा हूं, मुझे बस फोनगैप बिल्ड का उपयोग करने के तरीके की आवश्यकता है!

+0

मैं इस धन्यवाद से वास्तव में प्रभावित हूं। क्या आप फोनगैप/एचटीएमएल 5 का उपयोग कर आईफोन/आईपैड/डब्ल्यूपी 7/एंड्रॉइड पर प्रदर्शन अनुभवों पर टिप्पणी कर सकते हैं? मैंने अंगूर पर सुना है कि HTML सामग्री को प्रस्तुत करते समय आईओएस कुत्ता धीमा है। –

+2

स्थिति काफी विपरीत है, आईओएस में इस्तेमाल किया जाने वाला वेबकिट ब्राउज़र बहुत अच्छा है (मोबाइल ब्राउज़र के लिए), अच्छे CSS3 समर्थन और हार्डवेयर त्वरण के साथ। कुछ समय पहले मैंने एक HTML5 कूद सूची नियंत्रण बनाया था। सस्ते आईपॉड टच पर प्रदर्शन मैंने लिखा है WP7 सिल्वरलाइट संस्करण से बेहतर था! http://www.codeproject.com/KB/scripting/SilverlightToHTML5.aspx – ColinE

+0

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

1

प्रश्न का उत्तर देना बहुत मुश्किल है, फिर भी मैं कुछ विचार साझा करना चाहता हूं।

मोबाइल विकास की स्थिति 9 0 के दशक के पहले भाग में विकास के समान ही है। कंप्यूटर के पास संसाधनों के सीमित संसाधन हैं, मोबाइल ओएस अपने बच्चे के कदम उठा रहे हैं, इसलिए पारिस्थितिक तंत्र अपेक्षाकृत छोटा है। उनके पास अपने दर्शन, उपकरण और यहां तक ​​कि भाषाएं भी हैं। और यह एक अच्छी बात है, लेकिन क्रॉस-प्लेटफार्म विकास के लिए सिरदर्द की ओर जाता है। नतीजतन, इसे थोड़ा सा साफ़ करने के कई प्रयास हैं। लोग ढांचे, रैपर आदि का निर्माण करते हैं जो एक प्रकार का अमूर्त और abstractions are leaky है। मोबाइल उपकरणों के लिए यह बेहद महत्वपूर्ण है न केवल सीपीयू चक्रों की संख्या के रूप में प्रदर्शन, बल्कि बैटरी का प्रदर्शन, जो उपयोगकर्ता के लिए कहीं अधिक महत्वपूर्ण है।

यदि मैं आप थे तो मैं मूल वातावरण में ऐप्स बनाउंगा, खासकर अगर आपके पास कुछ प्रदर्शन विचार हैं। सर्वोत्तम समर्थन, उपकरण, शैक्षणिक संसाधन इत्यादि डुप्लिकेट व्यवसाय तर्क के लिए भुगतान करते हैं। सब कुछ, यह एक ओएस या डेटाबेस प्रबंधन प्रणाली नहीं है, कोडबेस भारी नहीं होगा;)

कहा जा रहा है। मोनोटच और मोनोड्रॉइड के बारे में मैं बहुत सावधान रहूंगा क्योंकि Apple blocks iPhone OS apps created by many third-party compilers और The King वास्तव में डेवलपर्स की परवाह नहीं करता है। मामला है कि मोनो को पेटेंट उल्लंघन या स्वामित्व सॉफ्टवेयर विक्रेताओं द्वारा टाइल किए जाने के लिए फ्लश किया जाएगा। यह मेरे लिए दुखद है क्योंकि सी # मेरी पसंदीदा भाषा है।

पीएस। मुझे विश्वास नहीं है कि HTML5 for mobile will take जल्द ही किसी भी समय।

+0

एक अच्छा सामान्य उत्तर, हालांकि मैं सिर्फ आपके कथन के साथ एक समस्या को इंगित करना चाहता हूं "ऐप्पल ब्लॉक कई आईफोन ओएस ऐप्स कई तृतीय पक्ष कंपाइलर्स द्वारा बनाए गए", यह आलेख पुराना है। पिछले साल ऐप्पल ने इस पर अपना रुख बदल दिया है। आप ऐप्पल ऐपस्टोर पर कई फोनगैप (एचटीएमएल 5) ऐप्स, टाइटेनियम (मालिकाना क्रॉस-प्लेटफार्म), ऐपमोबी और मोबाइल एयर (एडोब फ्लैश/फ्लेक्स) ऐप पा सकते हैं। टाइम्स एक बदल रहे हैं! – ColinE

+0

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

+0

@ लुकास नहीं जानते कि आपका प्रश्न किसने चिह्नित किया लेकिन मुझे व्यक्तिगत रूप से यह बहुत उपयोगी पाया। –

9

बस मिश्रण करने के लिए एक और विकल्प जोड़ने - mvvmcross

इस परियोजना के साथ monocross, mvvmlight, और OpenNETCF अनुभवों से बाहर विकसित किया गया था।

यह काफी राय वाला एमवीवीएम फ्रेमवर्क है (इसमें मेरी राय के साथ!), इसमें Droid और Touch के लिए डेटा बाध्यकारी समर्थन शामिल है, और यह वास्तव में प्लेटफ़ॉर्म के बीच कोड पुन: उपयोग को प्रोत्साहित करता है।

स्रोत https://github.com/slodge/MvvmCross से उपलब्ध है, इसका उपयोग कम से कम कुछ बड़ी परियोजनाओं में पहले से ही किया जा रहा है और यह अभी भी सक्रिय विकास में है।

sql bits app

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