portaldacalheta.pt
  • Κύριος
  • Επενδυτές & Χρηματοδότηση
  • Σχεδιασμός Διεπαφής Χρήστη
  • Τεχνολογία
  • Διαχείριση Έργου
Κινητό

Δημιουργία εφαρμογών πολλαπλών πλατφορμών με το Xamarin: Προοπτική προγραμματιστή Android



Η συγγραφή κώδικα μία φορά και η χρήση του σε πολλές πλατφόρμες ήταν ένα όνειρο για πολλούς προγραμματιστές λογισμικού. Αν και αυτό ήταν δυνατό για λίγο τώρα, θέτει πάντα σε κίνδυνο τη συντήρηση, την ευκολία δοκιμών ή, χειρότερα, μια κακή εμπειρία χρήστη.

Η ανάπτυξη εφαρμογών για κινητά χρησιμοποιώντας το εγγενές SDK είναι πιθανώς η αφετηρία για πολλούς προγραμματιστές που έχουν τις ρίζες τους στον τομέα της ανάπτυξης εφαρμογών για επιτραπέζιους υπολογιστές. Οι γλώσσες προγραμματισμού θα αποτελούσαν εμπόδιο για ορισμένους: Εάν κάποιος είχε εμπειρία στην ανάπτυξη εφαρμογών επιτραπέζιου υπολογιστή ή εφαρμογών Java, η μετάβαση στο Android μπορεί να είναι ευκολότερη από την εκκίνηση του Objective-C από το μηδέν για iOS.



Είχα πάντα τις αμφιβολίες μου για την ανάπτυξη εφαρμογών μεταξύ πλατφορμών. ο πλαίσια βασισμένο σε JavaScript όπως Sencha, Cordova, Titanium κ.λπ. δεν ήταν ποτέ καλές επιλογές όταν έχει σημασία η απόδοση. Η έλλειψη API και μια συγκεκριμένη εμπειρία χρήστη ήταν βασική για αυτά πλαίσια .



Όμως, ανακάλυψα τον Xamarin.



Ανάπτυξη μεταξύ πλατφορμών με το Xamarin

Σε αυτό το άρθρο, θα μάθετε πώς μπορείτε να χρησιμοποιήσετε το Xamarin για κοινή χρήση κώδικα σε πολλές πλατφόρμες χωρίς να διακυβεύεται οποιαδήποτε άλλη πτυχή της ανάπτυξης εφαρμογών για κινητά. Το άρθρο θα επικεντρωθεί, ιδίως, σε Android και iOS, αλλά μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη από τις πλατφόρμες που υποστηρίζει το Xamarin.



Τι είναι το Xamarin;

Το Xamarin είναι μια πλατφόρμα ανάπτυξης που σας επιτρέπει να γράφετε πολλαπλές πλατφόρμες - αν και εγγενείς - εφαρμογές για iOS, Android και Windows Phone σε C # και .NET.

Ο Xamarin παρέχει δεσμεύσεις C # σε εγγενή API Android και iOS. Αυτό σας δίνει τη δυνατότητα να χρησιμοποιήσετε όλες τις εγγενείς διεπαφές χρήστη, ειδοποιήσεις, γραφικά, κινούμενα σχέδια και άλλες λειτουργίες τηλεφώνου - και όλοι χρησιμοποιούν C #.



Το Xamarin φτάνει σε κάθε νέα έκδοση Android και iOS, με μία έκδοση που περιλαμβάνει δεσμεύσεις για τα νέα API σας.

Η θύρα Xamarin .NET περιλαμβάνει δυνατότητες όπως τύπους δεδομένων, γενική συλλογή, συλλογή κάδων ανακύκλωσης, ερώτημα ολοκληρωμένης γλώσσας (LINQ), ασύγχρονο σχέδιο προγραμματισμού, ανάθεση και ένα υποσύνολο του Ίδρυμα επικοινωνίας των Windows (WCF). Η διαχείριση των βιβλιοθηκών γίνεται με ένα παραμένω να περιλαμβάνει μόνο τα αναφερόμενα στοιχεία.



Το Xamarin.Forms είναι ένα στρώμα που βρίσκεται πάνω από τα άλλα δεσμεύσεις UI και το Windows Phone API, το οποίο παρέχει μια πλήρως βιβλιοθήκη διεπαφής χρήστη μεταξύ πλατφορμών.

Το πεδίο εφαρμογής του Xamarin



Γράψτε εφαρμογές πολλαπλών πλατφορμών

Για να γράψουν εφαρμογές πολλαπλών πλατφορμών με το Xamarin, οι προγραμματιστές πρέπει να επιλέξουν έναν από τους δύο διαθέσιμους τύπους έργων:

εργαλεία δοκιμής μονάδας για δίχτυ
  • Φορητή βιβλιοθήκη τάξης (PCL)
  • Κοινό έργο

Το PCL σάς επιτρέπει να γράφετε κώδικα που μπορεί να μοιραστεί μεταξύ πολλών πλατφορμών αλλά με έναν περιορισμό. Δεδομένου ότι δεν είναι όλα τα API .NET διαθέσιμα σε όλες τις πλατφόρμες, με ένα έργο PLC, θα το περιορίζετε στην εκτέλεση μόνο σε πλατφόρμες για τις οποίες προορίζεται.



Συνδέσεις και περιορισμοί Xamarin

Ο παρακάτω πίνακας δείχνει ποια API είναι διαθέσιμα σε ποιες πλατφόρμες:

χαρακτηριστικό .Πλαίσιο δικτύου Εφαρμογές Windows Store Silverlight Windows Phone Χαμαρίν
Πυρήνας Υ Υ Υ Υ Υ
LINQ Υ Υ Υ Υ Υ
Ερώτημα Υ Υ Υ 7.5+ Υ
Σειριοποίηση Υ Υ Υ Υ Υ
Σχολιασμοί δεδομένων 4.0.3+ Υ Υ Υ Υ

Κατά τη διαδικασία κατασκευής, ένα PCL μεταγλωττίζεται σε διαφορετικά DLL και φορτώνεται από Μόνο κατά την εκτέλεση. Μια διαφορετική εφαρμογή αλλά της ίδιας διεπαφής μπορεί να παρέχεται κατά την εκτέλεση.

Από την άλλη πλευρά, τα κοινόχρηστα έργα σάς δίνουν περισσότερο έλεγχο, επειδή σας επιτρέπουν να γράφετε κώδικα για συγκεκριμένη πλατφόρμα για κάθε πλατφόρμα που θέλετε να υποστηρίξετε. Ο κωδικός σε ένα κοινόχρηστο έργο μπορεί να περιέχει οδηγίες μετατροπής δεδομένων που θα ενεργοποιούν ή θα απενεργοποιούν τμήματα του κώδικα, ανάλογα με το έργο εφαρμογής που χρησιμοποιεί τον κώδικα.

Σε αντίθεση με ένα PCL, ένα κοινό έργο δεν παράγει DLL. Ο κωδικός περιλαμβάνεται απευθείας στο τελικό έργο.

Δώστε δομή στον κώδικα πολλαπλών μορφών σας με το MvvmCross

Ο επαναχρησιμοποιήσιμος κώδικας μπορεί να βοηθήσει στην εξοικονόμηση χρημάτων και χρόνου στις ομάδες ανάπτυξης. Ωστόσο, ο καλά δομημένος κώδικας διευκολύνει τη ζωή των προγραμματιστών. Κανείς δεν εκτιμά τον καλογραμμένο κώδικα χωρίς σφάλματα ως προγραμματιστές.

Το Xamarin παρέχει μόνο έναν μηχανισμό που διευκολύνει τη σύνταξη επαναχρησιμοποιήσιμου κώδικα μεταξύ πλατφορμών.

Οι προγραμματιστές κινητής τηλεφωνίας είναι εξοικειωμένοι με σενάρια όπου πρέπει να γράψουν την ίδια λογική δύο φορές ή περισσότερο για να υποστηρίξουν iOS, Android και άλλες πλατφόρμες. Αλλά με τον Xamarin, όπως εξήγησα στο τελευταίο κεφάλαιο, είναι εύκολο να επαναχρησιμοποιήσετε κώδικα σε άλλες πλατφόρμες, ακόμα κι αν γράφτηκε για μια συγκεκριμένη πλατφόρμα.

Λοιπόν, σε ποιο σημείο μπαίνει το MvvmCross;

Το MvvmCross, όπως υποδηλώνει το όνομά του, καθιστά δυνατή τη χρήση του μοτίβου MVVM σε εφαρμογές Xamarin. Έρχεται με διάφορες βιβλιοθήκες, API και υπηρεσίες που είναι πολύ σημαντικές στην ανάπτυξη εφαρμογών μεταξύ πλατφορμών.

Το MvvmCross μπορεί να μειώσει σημαντικά την ποσότητα του κώδικα βραστήρα τι θα έχετε γράψει (μερικές φορές επανειλημμένα σε διαφορετικές γλώσσες) σε οποιαδήποτε άλλη προσέγγιση για την ανάπτυξη εφαρμογών.

Δομή μιας λύσης MvvmCross

Η κοινότητα MvvmCross συνιστά έναν πολύ απλό και αποτελεσματικό τρόπο για τη δομή μιας λύσης MvvmCross:

.Core .UI.Droid .UI.iOS

Η εργασία Πυρήνας σε μια λύση Το MvvmCross σχετίζεται με επαναχρησιμοποιήσιμο κώδικα. Το έργο Core είναι ένα έργο Xamarin PCL, όπου το κύριο επίκεντρο είναι η επαναχρησιμοποίηση.

Οποιοσδήποτε κωδικός γράφεται Πυρήνας Πρέπει να είναι, όπου είναι δυνατόν, πλατφόρμα αγνωστικική. Θα πρέπει να περιέχει μόνο λογική, η οποία μπορεί να επαναχρησιμοποιηθεί σε όλες τις πλατφόρμες. Η εργασία Πυρήνας Δεν πρέπει να χρησιμοποιείτε τα API Android ή iOS ή να εισάγετε κάτι συγκεκριμένο σε οποιαδήποτε πλατφόρμα.

Το επιχειρησιακό επίπεδο λογικής, το επίπεδο δεδομένων και η επικοινωνία back-end , είναι τέλειοι υποψήφιοι για να συμπεριληφθούν στο έργο Πυρήνας . Η πλοήγηση μέσω προβολής ιεραρχίας (δραστηριότητες, θραύσματα κ.λπ.) θα επιτευχθεί στον Πυρήνα.

Πριν συνεχίσετε, είναι απαραίτητο να κατανοήσετε ένα αρχιτεκτονικό σχέδιο, το οποίο είναι σημαντικό να κατανοήσετε περισσότερα για το MvvmCross και πώς λειτουργεί. Όπως φαίνεται από το όνομά του, το MvvmCross βασίζεται σε μεγάλο βαθμό στο μοτίβο MVVM.

Το MVVM είναι ένα αρχιτεκτονικό σχέδιο σχεδιασμού, το οποίο διευκολύνει το διαχωρισμό της γραφικής διεπαφής χρήστη από την επιχειρηματική λογική και το back-end των δεδομένων.

Πώς χρησιμοποιείται αυτό το μοτίβο στο MvvmCross;

Λοιπόν, επειδή θέλουμε να επιτύχουμε υψηλό επίπεδο επαναχρησιμοποίησης του κώδικα μας, θέλουμε να έχουμε όσο το δυνατόν περισσότερο στο δικό μας Πυρήνας , το οποίο είναι ένα έργο PLC. Δεδομένου ότι οι προβολές είναι το μόνο μέρος του κώδικα που διαφέρει από πλατφόρμα σε πλατφόρμα, δεν μπορούμε να τις επαναχρησιμοποιήσουμε σε όλες τις πλατφόρμες. Αυτό το μέρος εφαρμόζεται σε έργα που σχετίζονται με την πλατφόρμα.

Δομή MvvmCross

Το MvvmCross μας δίνει τη δυνατότητα να δημιουργήσουμε μια εφαρμογή πλοήγησης από Πυρήνας χρησιμοποιώντας ViewModels.

Με τα βασικά και τις τεχνικές λεπτομέρειες, ας ξεκινήσουμε με το Xamarin δημιουργώντας το δικό μας έργο Core MvvmCross:

Δημιουργήστε ένα Core MvvmCross Project

Ανοίξτε το Xamarin Studio και δημιουργήστε μια λύση που ονομάζεται ApeeScapeExampleSolution:

s corp ή c corp llc

Δημιουργία της λύσης

Δεδομένου ότι δημιουργούμε ένα έργο Πυρήνας , είναι καλή ιδέα να ακολουθήσετε τη σύμβαση ονομασίας. Βεβαιωθείτε ότι το επίθημα Core να προστεθεί στο όνομα του έργου.

Για να λάβετε υποστήριξη MvvmCross, απαιτείται να προσθέσετε βιβλιοθήκες MvvmCross στο έργο μας. Για να το προσθέσουμε αυτό μπορούμε να χρησιμοποιήσουμε την υποστήριξη που περιλαμβάνονται στο NuGet στο Xamarin Studio.

Για να προσθέσετε μια βιβλιοθήκη, κάντε δεξί κλικ στο φάκελο Πακέτα και ορίστε την επιλογή Προσθήκη πακέτων… .

Στο πεδίο αναζήτησης, μπορούμε να αναζητήσουμε το MvvmCross, το οποίο θα λειτουργεί ως φίλτρο και θα βρει αποτελέσματα που σχετίζονται με το MvvmCross όπως φαίνεται παρακάτω:

Φίλτρο αποτελεσμάτων

Κάνοντας κλικ στο κουμπί Προσθήκη πακέτου θα προστεθεί στο έργο.

Με το MvvmCross που προστίθεται στο έργο, είμαστε έτοιμοι να γράψουμε τον κωδικό μας Πυρήνας .

Ας ορίσουμε το πρώτο μας ViewModel . Για να δημιουργήσετε ένα, δημιουργήστε μια ιεραρχία φακέλων ως εξής:

Προτεινόμενη ιεραρχία φακέλων

Εδώ βλέπετε τι είναι κάθε φάκελος:

  • Μοντέλα: Μοντέλα τομέα που αντιπροσωπεύουν περιεχόμενο ακινήτων
  • Υπηρεσίες: Ένας φάκελος που μεταφέρει την υπηρεσία μας (επιχειρηματική λογική, βάση δεδομένων κ.λπ.)
  • ViewModel: Ο τρόπος που επικοινωνούμε με τα μοντέλα μας

Το πρώτο μας ViewModel ονομάζεται FirstViewModel.cs

public class FirstViewModel : MvxViewModel { private string _firstName; private string _lastName; private string _fullName; public string FirstName { get { return _firstName; } set { _lastName = value; RaisePropertyChanged(); } } public string LastName { get { return _lastName; } set { _lastName = value; RaisePropertyChanged(); } } public string FullName { get { return _fullName; } set { _fullName = value; RaisePropertyChanged(); } } public IMvxCommand ConcatNameCommand { get { return new MvxCommand(() => { FullName = $'{FirstName} {LastName}'; }); } public IMvxCommand NavigateToSecondViewModelCommand { get { return new MvxCommand(() => { ShowViewModel(); }); } } }

Τώρα που έχουμε το πρώτο μας ViewModel , μπορούμε να δημιουργήσουμε την πρώτη μας άποψη και να συνδυάσουμε τα πάντα.

Διεπαφή χρήστη Android

Για να εμφανίσετε το περιεχόμενο του ViewModel , πρέπει να δημιουργήσουμε μια διεπαφή χρήστη.

Το πρώτο βήμα για τη δημιουργία μιας διεπαφής χρήστη Android είναι η δημιουργία ενός έργου Android στην τρέχουσα λύση. Για να το κάνετε αυτό, κάντε δεξί κλικ στο όνομα της λύσης και επιλέξτε Προσθήκη -> Προσθήκη νέου έργου… . Στο μάγος , επιλέξτε την εφαρμογή Android και βεβαιωθείτε ότι έχετε ονομάσει το έργο σας ApeeScapeExample.UI.Droid.

Όπως περιέγραψα προηγουμένως, τώρα πρέπει να προσθέσουμε εξαρτήσεις MvvmCross για Android. Για να το κάνετε αυτό, ακολουθήστε τα ίδια βήματα στο έργο Πυρήνας για να προσθέσετε εξαρτήσεις NuGet.

Αφού προσθέσετε τις εξαρτήσεις MvvmCross, πρέπει να προσθέσετε μια αναφορά για το έργο μας Πυρήνας έτσι μπορούμε να χρησιμοποιήσουμε τον κωδικό μας γραμμένο εκεί. Για να προσθέσετε μια αναφορά για το έργο PCL, κάντε δεξί κλικ στο φάκελο Αναφορές και ορίστε την επιλογή Επεξεργασία αναφορών… . Στην καρτέλα Έργα, επιλέξτε το έργο Πυρήνας δημιουργήθηκε προηγουμένως και κάντε κλικ στο OK.

Προσθέστε μια αναφορά στο έργο PCL

Το επόμενο μέρος μπορεί να είναι λίγο δύσκολο να κατανοηθεί.

Τώρα πρέπει να πούμε στο MvvmCross πώς να εγκαταστήσουμε την εφαρμογή μας. Για να το κάνουμε αυτό πρέπει να δημιουργήσουμε την τάξη Setup:

namespace ApeeScapeExample.UI.Droid { public class Setup : MvxAndroidSetup { public Setup(Context context) : base(context) { } protected override IMvxApplication CreateApp() { return new Core.App(); } } }

Όπως μπορείτε να δείτε στην τάξη, λέμε στο MvvmCross να δημιουργήσει μια βάση CreateApp στην εφαρμογή Core.App, που είναι μια κλάση που ορίζεται στο Πυρήνας και φαίνεται παρακάτω:

public class App : MvxApplication { public override void Initialize() { RegisterAppStart(new AppStart()); } } public class AppStart : MvxNavigatingObject, IMvxAppStart { public void Start(object hint = null) { ShowViewModel(); } }

Στην τάξη App, δημιουργούμε μια παρουσία του AppStart, η οποία θα εμφανίσει την πρώτη μας ViewModel .

Το μόνο που μένει να κάνουμε τώρα είναι να δημιουργήσετε ένα αρχείο διάταξης Android, το οποίο θα ενωθεί με το MvvmCross:

EditText

Στο αρχείο σχεδίασης, έχουμε δεσμεύσεις που επιλύονται αυτόματα από το MvvmCross. Για View, ας δημιουργήσουμε ένα δεσμευτικός για την ιδιότητα Κείμενο, η οποία θα είναι δεσμευτικός διπλή πίστα. Τυχόν αλλαγές που επικαλούνται από το ViewModel θα αντικατοπτρίζονται αυτόματα στην προβολή και το αντίστροφο.

Η τάξη [Activity(Label = 'ApeeScapeExample.UI.Droid', Theme = '@style/Theme.AppCompat', MainLauncher = true, Icon = '@mipmap/icon')] public class MainActivity : MvxAppCompatActivity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); } } μπορεί να είναι μια δραστηριότητα ή ένα κομμάτι. Για απλότητα, χρησιμοποιούμε μια δραστηριότητα που φορτώνει τη δεδομένη διάταξη:

ContactNameCommand

Για το πρώτο κουμπί, έχουμε μια εντολή δεσμευτικός , που σημαίνει ότι όταν κάνετε κλικ στο κουμπί MvvmCross, θα επικαλεστεί Setup από το ViewModel.

Για το δεύτερο κουμπί, θα δείξουμε ένα άλλο ViewModel.

IOS UI

Η δημιουργία ενός έργου iOS δεν διαφέρει πολύ από τη δημιουργία ενός έργου Android. Πρέπει να ακολουθήσετε παρόμοια βήματα για να προσθέσετε ένα νέο έργο, μόνο αυτή τη φορά, αντί για Android, απλώς δημιουργήστε ένα έργο iOS. Απλώς φροντίστε να διατηρήσετε ενεργή τη σύμβαση ονομασίας.

Μετά την προσθήκη του έργου iOS, πρέπει να προσθέσετε εξαρτήσεις για το MvvmCross iOS. Τα βήματα είναι ακριβώς τα ίδια όπως και για Πυρήνας και Android (κάντε δεξί κλικ στις Αναφορές στο έργο iOS και κάντε κλικ στο Προσθήκη αναφορών… ).

Τώρα, όπως κάναμε με το Android, είναι απαραίτητο να δημιουργήσουμε μια κλάση public class Setup : MvxIosSetup { public Setup(MvxApplicationDelegate appDelegate, IMvxIosViewPresenter presenter) : base(appDelegate, presenter) { } protected override MvvmCross.Core.ViewModels.IMvxApplication CreateApp() { return new App(); } } , η οποία θα πει στο MvvmCross πώς να εγκαταστήσει την εφαρμογή μας.

Setup

Σημειώστε ότι η τάξη AppDelegate τώρα επεκτείνετε MvxIosSetup και, για το Android, επεκτάθηκε MvxAndroidSetup .

Μια προσθήκη εδώ είναι ότι πρέπει να αλλάξουμε την τάξη μας AppDelegate .

[Register('AppDelegate')] public class AppDelegate : MvxApplicationDelegate { // class-level declarations public override UIWindow Window { get; set; } public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { Window = new UIWindow(UIScreen.MainScreen.Bounds); var presenter = new MvxIosViewPresenter(this, Window); var setup = new Setup(this, presenter); setup.Initialize(); var startup = Mvx.Resolve(); startup.Start(); Window.MakeKeyAndVisible(); return true; } } στο iOS είναι υπεύθυνο για την εκκίνηση του περιβάλλοντος εργασίας χρήστη, οπότε πρέπει να δούμε πώς θα αποδίδονται οι προβολές στο iOS. Μπορείτε να μάθετε περισσότερα για τους παρουσιαστές εδώ .

NavigateToSecondViewModelCommand

Για να παρουσιάσουμε το VIewModel, πρέπει να δημιουργήσουμε μια προβολή. Για τη συγκεκριμένη περίπτωση, πρόκειται να δημιουργήσουμε ένα ViewController, κάντε δεξί κλικ στο έργο και επιλέξτε Προσθήκη -> Νέο αρχείο και επιλέξτε ViewController στην ενότητα iOS, στην οποία πρόκειται να δώσουμε το όνομα του FirstViewController.

Ο Xamarin δημιουργεί τρία αρχεία, στα οποία πρόκειται να ορίσουμε ως δικά μας δεσμεύσεις . Σε αντίθεση με το Android, για iOS, πρέπει να ορίσουμε το δικό μας δεσμεύσεις με διαφορετικό τρόπο, μέσω κώδικα (αν και μπορούμε να το κάνουμε και στο Android και, σε ορισμένες περιπτώσεις, απαιτείται να το πράξει).

Όταν απαιτείται πλοήγηση μεταξύ των προβολών, γίνεται μέσω του ViewModel. Στην εντολή ShowViewModel(), η μέθοδος MvxAppCompatActivity θα βρει την κατάλληλη προβολή και θα την περιηγηθεί.

Αλλά πώς ξέρει το MVVMCross ποια προβολή θα φορτώσει;

Δεν υπάρχει τίποτα μαγικό γι 'αυτό. Όταν δημιουργούμε μια προβολή για Android (Δραστηριότητα ή Θραύσμα) επεκτείνουμε μία από τις βασικές κατηγορίες με παραμέτρους τύπου (ShowViewMolel). Όταν καλούμε View, το MvvmCross αναζητά ένα Activity (Προβολή) που επεκτείνει την κλάση Fragment ή VM με παραμέτρους τύπου public interface IPasswordGeneratorService { string Generate(int length); } . Αυτός είναι ο λόγος για τον οποίο δεν μπορείτε να έχετε δύο τάξεις προβολής για το ίδιο ViewModel.

Επένδυση ελέγχου

Το Xamarin παρέχει μόνο περιτυλίγματα C # γύρω από τα εγγενή API, δεν παρέχει καμία μορφή έγχυσης εξάρτησης (DI) ή μηχανισμού αντιστροφής του ελέγχου (loC).

Χωρίς έγχυση εξάρτησης από τον χρόνο εκτέλεσης ή έγχυση χρόνου μεταγλώττισης, δεν είναι εύκολο να δημιουργήσετε χαλαρά συνδεδεμένα, επαναχρησιμοποιήσιμα, ελεγχόμενα και συντηρήσιμα στοιχεία. Η ιδέα του loC και του DI είναι γνωστή εδώ και πολύ καιρό. λεπτομέρειες σχετικά με το loC μπορείτε να βρείτε σε πολλά άρθρα στο Διαδίκτυο. Μπορείτε να μάθετε περισσότερα σχετικά με αυτά τα μοτίβα από εισαγωγικό άρθρο του Martin Fowler .

Το IoC είναι διαθέσιμο από τις πρώτες εκδόσεις του MvvmCrosses και επιτρέπει την εξάρτηση της εξάρτησης κατά το χρόνο εκτέλεσης, όταν ξεκινά η εφαρμογή και όποτε απαιτείται.

Για να πάρουμε χαλαρά συνδεδεμένα στοιχεία, δεν πρέπει ποτέ να απαιτούμε συγκεκριμένες εφαρμογές κλάσης. Η απαίτηση συγκεκριμένων εφαρμογών περιορίζει τη δυνατότητα αλλαγής της συμπεριφοράς των υλοποιήσεων κατά το χρόνο εκτέλεσης (δεν μπορείτε να την αντικαταστήσετε με άλλη εφαρμογή). Αυτό καθιστά δύσκολη τη δοκιμή αυτών των στοιχείων.

Για αυτόν τον λόγο, πρόκειται να δηλώσουμε μια διεπαφή για την οποία θα έχουμε συγκεκριμένη εφαρμογή.

public class PasswordGeneratorService : IPasswordGeneratorService { public string Generate(int length) { var valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; var res = new StringBuilder(); var rnd = new Random(); while (0

Και εφαρμογή:

IPasswordGenerationService

Τώρα το ViewModel ενδέχεται να απαιτεί μια παρουσία της διεπαφής PasswordGeneratorService, την οποία είναι δική μας ευθύνη να παρέχουμε.

Προκειμένου το MvvmCross να εισάγει την υλοποίηση App.cs στο χρόνο εκτέλεσης, πρέπει να πούμε στο MvvmCross ποια εφαρμογή θα χρησιμοποιήσει. Εάν θέλουμε να χρησιμοποιήσουμε μια εφαρμογή και για τις δύο πλατφόρμες, μπορούμε να καταχωρήσουμε την υλοποίηση στο public override void Initialize() { RegisterAppStart(new AppStart()); Mvx.LazyConstructAndRegisterSingleton(); } , μετά την εγγραφή της εφαρμογής:

LazyConstructAndRegisterSingleton

Η παραπάνω κλήση στη στατική μέθοδο Mvx.RegisterSingleton() καταγράφει την εφαρμογή που πρόκειται να ενεθεί. Αυτή η μέθοδος καταγράφει την κατάλληλη εφαρμογή, αλλά δεν δημιουργεί αντικείμενο.

Το αντικείμενο δημιουργείται μόνο όταν απαιτείται και μόνο μία φορά, καθώς έχει καταχωρηθεί ως μοναχικός.

Εάν θέλουμε να δημιουργήσουμε ένα μεμονωμένο αντικείμενο αμέσως, μπορεί να γίνει καλώντας το Mvx.RegisterType().

Υπάρχουν περιπτώσεις στις οποίες δεν θέλουμε να έχουμε μόνο solitaires στην εφαρμογή μας. Ίσως το αντικείμενο μας να μην είναι ασφαλές, ή ίσως υπάρχει άλλος λόγος για τον οποίο θέλουμε πάντα μια νέα παρουσία. Εάν συμβαίνει αυτό, το MvvmCross παρέχει τη μέθοδο public class DroidPasswodGeneratorService : IPasswordGeneratorService { public string Generate(int length) { return 'DroidPasswordGenerator'; } } , η οποία μπορεί να χρησιμοποιηθεί για την καταχώριση της εφαρμογής με τρόπο που να δημιουργεί μια νέα παρουσία όπου απαιτείται.

Σε περίπτωση που πρέπει να παρέχετε συγκεκριμένες υλοποιήσεις για κάθε πλατφόρμα, μπορείτε να το κάνετε στα συγκεκριμένα έργα πλατφόρμας:

Setup.cs

Και η εγγραφή της εφαρμογής μας γίνεται στην τάξη protected override void InitializePlatformServices() { base.InitializePlatformServices(); Mvx.LazyConstructAndRegisterSingleton(); } στο πλαίσιο του έργου Droid:

InitializePlatformServices

Μετά την εκκίνηση του κωδικού PCL, το MvvmCross θα καλέσει

|_+_|
και θα καταγράψει τις συγκεκριμένες εφαρμογές της πλατφόρμας μας.

Όταν καταχωρίζουμε πολλές μεμονωμένες υλοποιήσεις, το MvvmCross θα χρησιμοποιεί μόνο την τελευταία καταχωρημένη εφαρμογή. Όλες οι άλλες εγγραφές θα απορριφθούν.

Παράδειγμα node js rest api

Δημιουργήστε εφαρμογές πολλαπλών πλατφορμών με το Xamarin

Σε αυτό το άρθρο, έχουμε δει πώς το Xamarin σάς επιτρέπει να μοιράζεστε κώδικα μεταξύ διαφορετικών πλατφορμών και να διατηρείτε την εγγενή αίσθηση και απόδοση των εφαρμογών.

Το MvvmCross προσφέρει ένα άλλο επίπεδο αφαίρεσης, επεκτείνοντας περαιτέρω την εμπειρία δημιουργίας εφαρμογών πολλαπλών πλατφορμών με το Xamarin. Το μοτίβο MVVM παρέχει έναν τρόπο για τη δημιουργία ροών πλοήγησης και αλληλεπίδρασης χρήστη, οι οποίες είναι κοινές σε όλες τις πλατφόρμες, κάνοντας έτσι τον αριθμό του κώδικα για συγκεκριμένη πλατφόρμα που πρέπει να γράψετε μόνο σε προβολές.

Ελπίζω ότι αυτό το άρθρο σάς έδωσε έναν λόγο να ρίξετε μια ματιά στο Xamarin και επίσης σας παρακίνησε να δημιουργήσετε την επόμενη εφαρμογή πολλαπλών πλατφορμών μαζί της.

Tutorial API Laravel: Πώς να δημιουργήσετε και να δοκιμάσετε ένα RESTful API

Πίσω Μέρος

Tutorial API Laravel: Πώς να δημιουργήσετε και να δοκιμάσετε ένα RESTful API
Διαπολιτισμικός σχεδιασμός και ο ρόλος του UX

Διαπολιτισμικός σχεδιασμός και ο ρόλος του UX

Σχεδιασμός Ux

Δημοφιλείς Αναρτήσεις
Scaling Scala: Τρόπος Dockerize χρησιμοποιώντας Kubernetes
Scaling Scala: Τρόπος Dockerize χρησιμοποιώντας Kubernetes
Μείωση του κόστους σε ένα ψηφιακό μέλλον πετρελαίου και φυσικού αερίου
Μείωση του κόστους σε ένα ψηφιακό μέλλον πετρελαίου και φυσικού αερίου
Το GWT Toolkit: Δημιουργήστε ισχυρές διεπαφές JavaScript χρησιμοποιώντας Java
Το GWT Toolkit: Δημιουργήστε ισχυρές διεπαφές JavaScript χρησιμοποιώντας Java
Επισκόπηση των δημοφιλών δημιουργών στατικών ιστότοπων
Επισκόπηση των δημοφιλών δημιουργών στατικών ιστότοπων
Γνωρίστε το Volt, ένα πολλά υποσχόμενο Ruby Framework για δυναμικές εφαρμογές
Γνωρίστε το Volt, ένα πολλά υποσχόμενο Ruby Framework για δυναμικές εφαρμογές
 
Οι μεγάλες ερωτήσεις οδηγούν σε εξαιρετικό σχεδιασμό - Ένας οδηγός για τη διαδικασία σκέψης σχεδιασμού
Οι μεγάλες ερωτήσεις οδηγούν σε εξαιρετικό σχεδιασμό - Ένας οδηγός για τη διαδικασία σκέψης σχεδιασμού
Η Ψυχολογία του Σχεδιασμού και η Νευροεπιστήμη του Amazing UX
Η Ψυχολογία του Σχεδιασμού και η Νευροεπιστήμη του Amazing UX
APIs στα κοινωνικά δίκτυα: Η διαδικτυακή πύλη στον πραγματικό κόσμο
APIs στα κοινωνικά δίκτυα: Η διαδικτυακή πύλη στον πραγματικό κόσμο
Οδηγός επένδυσης Family Office: Μια εναλλακτική λύση στο επιχειρηματικό κεφάλαιο
Οδηγός επένδυσης Family Office: Μια εναλλακτική λύση στο επιχειρηματικό κεφάλαιο
Αρχές Σχεδιασμού - Εισαγωγή στην Οπτική Ιεραρχία
Αρχές Σχεδιασμού - Εισαγωγή στην Οπτική Ιεραρχία
Δημοφιλείς Αναρτήσεις
  • τι έλεγχο έκδοσης χρησιμοποιεί η google
  • Η ύπαρξη αρνητικών πραγματικών επιτοκίων θα μπορούσε να τονώσει την οικονομία εάν, ως απάντηση,
  • εργολάβος ωριαία αμοιβή σε μισθό
  • πώς να λάβετε τον αριθμό πιστωτικής κάρτας κάποιου
  • πώς να μάθετε την τέχνη της εικονογράφησης
  • σε ποια γλώσσα είναι προγραμματισμένα τα ρομπότ
  • utf πίνακα σετ 8 χαρακτήρων
Κατηγορίες
  • Επενδυτές & Χρηματοδότηση
  • Σχεδιασμός Διεπαφής Χρήστη
  • Τεχνολογία
  • Διαχείριση Έργου
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt