2012-05-18 11 views
5

एंड्रॉइड प्रोजेक्ट्स के लिए मोनो टच और मोनो के बीच बिजनेस लॉजिक सी # कोड साझा करने का सबसे अच्छा अभ्यास क्या होगा?मोनो टच और मोनोफोर एंड्रॉइड के बीच कोड साझाकरण

संपादित: प्रारंभ में, मेरे सवाल का भौतिक फ़ाइल साझा के बारे में था:

  1. क्या आप का उपयोग करने का प्रस्ताव करते हैं: नेटवर्क फ़ाइल साझा या कुछ कोड संस्करण नियंत्रण (Git, SVN)? मेरे मामले में मैं दो वर्कस्टेशन का उपयोग कर रहा हूं - मैक (मोनो टच के साथ मोनो डेवेल) और पीसी ( मोनोड्रॉइड के साथ विजुअल स्टूडियो)।
  2. समाधान/परियोजना फ़ोल्डर संरचना के बारे में क्या? में "ब्लॉग पोस्ट: Xamarin Mobile World Congress 2012 Unofficial Conference App Released!" उदाहरण संरचना काफी उलझन में है: एक फ़ोल्डर में कई समाधान और फिर विभिन्न फ़ोल्डर और परियोजना नामों के साथ एक उपफोल्डर में विभिन्न प्लेटफ़ॉर्म प्रोजेक्ट। इसे आईडीई के साथ को पूरा नहीं किया जा सकता है। क्या वे आईडीई पर्यावरण के बाहर समाधान फ़ाइलों और फ़ोल्डर नाम मैनुअल की सामग्री संपादित कर रहे हैं?
  3. और सामान्य कोड की परियोजनाओं के लिए पर किस तरह का प्रोफ़ाइल (टेम्पलेट) उपयोग करें? मोनोटच में कई हैं: खाली परियोजना, मोनो टच लाइब्रेरी प्रोजेक्ट और मोनो टच बाइंडिंग प्रोजेक्ट्स? एंड्रॉइड में मुझे लगता है - एंड्रॉइड क्लास लाइब्रेरी?
+0

क्या आप विस्तार कर सकते हैं? "व्यापार तर्क" से आपका क्या मतलब है? प्लेटफार्म विशिष्ट यूआई को छोड़कर – Stuart

+0

सभी सी # कोड। – Arvis

उत्तर

12

यह एक बहुत ही सामान्य सवाल है, लेकिन यहाँ कुछ संसाधन सहायता कर सकते है कि आप आरंभ करने के लिए कर रहे हैं:

  1. वीडियो: Cross-platform Mobile Development
  2. ब्लॉग पोस्ट: Shared Libraries For Windows Phone 7, MonoDroid and Beyond
  3. पुस्तक: Mobile Development with C#
  4. ब्लॉग पोस्ट: Xamarin Mobile World Congress 2012 Unofficial Conference App Released!
(अपने नए सवालों का जवाब देना) 0

संपादित

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

  2. मैं बिल्कुल नहीं कह सकता कि उन्होंने अपनी फ़ोल्डर संरचना कैसे बनाई है, लेकिन मुझे पता है कि ऐसे कई मामले हैं जहां मैं फ़ोल्डर संरचना को मैन्युअल रूप से संपादित करने के लिए प्रोजेक्ट या समाधान फ़ाइलों को संपादित करूँगा, क्योंकि वहां कोई रास्ता नहीं था मैं आईडीई के माध्यम से जो चाहता था उसे प्राप्त करें। यह वास्तव में व्यक्तिगत वरीयताओं को उबालता है कि आप अपने फ़ोल्डरों को कैसे संरचित करना चाहते हैं।

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

+0

यदि आपने कुछ अन्य पुस्तकों का भी उल्लेख किया है तो मैंने आपको +1 दिया होगा :) – Stuart

+1

ईक - यह मेरे इरादे से अलग लगता है! वैसे भी +1। मैं शुक्रवार को दोष देता हूँ! क्षमा करें :) – Stuart

+0

क्या आपके पास मेरे प्रश्न परिशिष्ट के लिए कोई सुझाव है? – Arvis

8

अस्वीकरण: मैं एक particular Mvvm methodology कि मैं बहु मंच परियोजनाओं भर में कोड साझा करने के लिए उपयोग करें ...

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

इसके साथ ही कहा, उपकरण आपको मोनो विकास दृष्टिकोण के भीतर का उपयोग कर सकते हैं:

  • वास्तव में प्लेटफार्मों के बीच एक ही कोड साझा करने के लिए Portable Class Libraries का उपयोग कर
  • के बीच कोड साझा करने के लिए मंच विशिष्ट वर्ग पुस्तकालय का उपयोग कर प्लेटफॉर्म, माइक्रोसॉफ्ट
  • से परियोजनाओं के मंच विशिष्ट कार्यान्वयन प्रदान करने के लिए #define कोड का उपयोग करके Project Linker tool का उपयोग करके इन्हें जोड़ने (मैं व्यक्तिगत रूप से इस दृष्टिकोण से बचने की कोशिश करता हूं, लेकिन यह अक्सर बाजार के लिए सबसे तेज़ मार्ग प्रदान करता है)
  • उन अवसरों के लिए घटकों को प्रदान करने के लिए डीआई/आईओसी तकनीकों का उपयोग करते समय प्लेटफार्म विशिष्ट कार्यान्वयन की आवश्यकता होती है।
  • आईओसी प्रदान करने के लिए एक असेंबली का उपयोग कर - उदाहरण के लिए यह Xamarin MobileAPI
  • वास्तविक साझा कार्यक्षमता के लिए सर्वर-आधारित तर्क का उपयोग कर रहा है - उदा। यूआई के लिए MVC (MonoCross) या MVVM (MonoMobile.Views या MvvmCross) "- बाकी या सोप-एक्सएमएल सेवाओं का उपयोग तर्क
  • बंटवारे परीक्षण (जैसे NUnit) प्लेटफॉर्म के बीच लागू करने के लिए अपने तर्क
  • साझा कोड तकनीक का उपयोग की गुणवत्ता को आश्वस्त करने के नियंत्रक "तर्क; MonoTouch.Dialog और MonoDroid.Dialog "दृश्य-स्तर" abstractions के लिए; UI "ड्राइंग" के लिए CrossGraphics; डेटाबेस के लिए SQLite.Net; इत्यादि

मुझे मोनो टच, मोनोडायड और माइक्रोसॉफ्ट टूल्स मिल रहे हैं क्रॉस प्लेटफार्म कोड विकसित करने में वास्तविक और संकेतक लाभ प्रदान करते हैं - लेकिन आपको इसे हासिल करने और इसे प्राप्त करने के लिए सोचना होगा।

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