Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuinka mvvmcross tukee alustakohtaista koodia


Kuinka mvvmcross tukee alustakohtaista koodia


MVVMCross tukee alustakohtaista koodia useiden mekanismien kautta, jolloin kehittäjät voivat luoda alustojen välisiä sovelluksia hyödyntäen samalla natiivialustan ominaisuuksia. Tässä on yksityiskohtainen yleiskatsaus siitä, kuinka MVVMCross helpottaa alustakohtaista koodia:

1. Huoli erottaminen **

MVVMCross-sovellukset on tyypillisesti rakennettu kahteen pääosaan: ydinprojekti ja alustakohtaiset käyttöliittymäprojektit. Ydinprojekti, joka on usein toteutettu kannettavana luokkakirjastona (PCL) tai .NET-standardikirjastona, sisältää liiketoimintalogiikan, mallit, näkymämallit ja rajapinnat alustakohtaisille palveluille. Tämä erottelu mahdollistaa maksimaalisen koodin uudelleenkäytön alustojen välillä pitäen samalla käyttöliittymäprojekteissa eristettyjen alustakohtaisten koodien [2] [7].

11
MVVMCross käyttää IOC -säilöä riippuvuuksien hallintaan. Tämän avulla kehittäjät voivat rekisteröidä alustakohtaisia ​​palveluita alustakohtaisissa projekteissa ja injektoida ne ydinprojektin näkymämalleihin. Esimerkiksi, jos sovelluksen on päästävä kameraan, ydinprojekti voi määritellä kameran käyttöliittymän, ja jokainen alustakohtainen projekti voi tarjota oman tämän käyttöliittymän toteutuksen. KOK-säilö ratkaisee sitten nämä riippuvuudet suorituksen aikana varmistaen, että käytetään oikeaa alustakohtaista palvelua [2] [8] [11].

3. Platform-erityiset palvelut **

Alustakohtaiset palvelut toteutetaan alkuperäiskansojen käyttöliittymäprojekteissa. Nämä palvelut on rekisteröity kunkin alustaprojektin asennusluokkaan. Asennusluokka on vastuussa MVVMCROSS: n bootstrappingista ja alustakohtaisten palvelujen rekisteröinnistä IOC-säilöön. Tämä sallii Core-projektin näkymämallit käyttää alustakohtaisia ​​toimintoja viittamatta suoraan alustakohtaisiin sovellusliittymiin [2] [7].

4. Laajennuskehys **

MVVMCross sisältää laajennuskehyksen, jonka avulla kehittäjät voivat helposti integroida alustakohtaiset ominaisuudet sovelluksiinsa. Laajennukset voivat tarjota toimintoja, kuten GPS -sijainti, lokalisointi, anturit ja muut. Nämä laajennukset on rekisteröity IOC-säiliöön, mikä mahdollistaa näkymämallit käyttöjärjestelmien pääsyyn riippuvuuden injektion avulla. Tämä kehys tukee myös pilkkatoimenpiteitä testausta varten [4] [11].

5. muokattava sitova moottori **

MVVMCross tarjoaa muokattavan sitovan moottorin, jonka avulla kehittäjät voivat luoda mukautettuja sidoksia alustakohtaisiin näkymiin. Tämä ominaisuus on erityisen hyödyllinen, kun työskentelet natiivien ohjaimien kanssa, jotka eivät tue tavanomaista datan sitomismekanismeja. Määrittelemällä mukautetut sidokset kehittäjät voivat varmistaa, että heidän näkemysmallinsa on kytketty oikein alustakohtaisiin näkymiin [4].

6. Alustan esittelijät **

MVVMCROSS käyttää alustakohtaisia ​​esittelijöitä (esim. "ImvxiosViewPresenter`," imvxandroidViewPresenter ") hallitsemaan kuinka näkymät näkyy jokaisella alustalla. Nämä esittelijät mahdollistavat esityslogiikan mukauttamisen, jolloin kehittäjät voivat mukauttaa käyttöliittymän käyttäytymisen tietyn alustan vaatimuksiin [3].

Yhteenvetona voidaan todeta, että MVVMCross tukee alustakohtaista koodia tarjoamalla jäsennellyn lähestymistavan liiketoiminnan logiikan erottamiseen alustakohtaisesta toteutuksesta, hyödyntämällä IOC: ta ja riippuvuuden injektiota palvelunhallintaan ja tarjoamalla muokattavissa olevia sitoutumis- ja laajennuskehyksiä alkuperäisten ominaisuuksien integroimiseksi. Tämän avulla kehittäjät voivat maksimoida koodin uudelleenkäytön samalla kun toimitetaan edelleen alustakohtaisia ​​käyttäjäkokemuksia.

Viittaukset:
[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
.
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
.
[6] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
.
[8] https://stackoverflow.com/questions/14337063/platform-spesific-ioc-in-mvvmcross
.
[10.
.