Говорете за определяне на високи очаквания. Светата троица, не по-малко!
Истината е, че разработването на мобилни приложения е скъпо, когато се насочвате към множество платформи, тъй като няма споделен код. Apple изисква да кодирате в Objective-C или Swift, Android изисква да кодирате в Java, а WinPhone изисква да разработвате в .NET, често C #. Добавете към това изобилието от библиотеки, които всяка платформа предоставя за работа с карти, рисунки, картини или GPS - за изграждането на едно мобилно приложение са необходими огромно количество време и знания.
Излишно е да казвам, че повечето стартиращи компании не могат да си позволят да утроят разходите си и дори утвърденият бизнес може трудно да оправдае цената за влизане в мобилното пространство.
В тази статия ще научите как Xamarin Forms, в комбинация с MVVMCross и SkiaSharp, могат да бъдат жизнеспособен начин за изграждане на различни платформи мобилни приложения без да компрометира познаването, представянето и уникалността. Статията ще направи преглед на тези три технологии и как те могат да намалят разходите за разработка, като позволяват максимално повторно използване на кода в множество мобилни платформи.
Въпросът за разработването на мобилни приложения на различни платформи е реален и като такъв, през годините се появиха много различни решения за намаляване разходи за развитие чрез споделяне на код между платформи. В индустрията за видеоигри, например, всички основни игрови двигатели предлагат решение за различни платформи, като дори Unreal и Unity са насочени към мобилни телефони и таблети.
Отпред на приложението има многократни опити да се ръководи този крос-платформен пазар през годините. Много от тях не успяха да бъдат загубени в бездната, но няколко от тях все още оцеляват след няколко години. Сред тях е Xamarin, единственото .NET решение, предлагащо поддръжка и за трите мобилни платформи.
Така че има война между различни решения и който казва, че войната означава пропаганда!
Войната се води предимно на фронта на големите н : да си роден! Трябва да внимавате с думата, защото тя няма ясно значение. Днес това е най-използваната дума в света на мобилното развитие и е много модерна. Истината е, че никой не се съгласява какво всъщност означава.
Когато избирате рамка за различни платформи, всички „местни“ опции не са равни, така че внимавайте, може да сравнявате ябълките с портокалите. За някои става въпрос за езика за програмиране, за други става въпрос за възможността да се използват хардуерните функции, други смятат, че става въпрос за използването на API / потребителски интерфейс на платформата и често става въпрос само за това, че не са уеб приложение.
Има аргументи от всяка страна на дебата и няма да се задълбочавам, защото е безполезно. Защо е безполезно? Е, нека ви кажа труден за преглъщане факт: на крайните потребители не им пука!
гръцка финансова криза за манекени
Да, добре сте прочели, само на вашите програмисти им пука. Вашият краен потребител никога няма да избере вашето приложение поради основната технология: той ще избере вашето приложение, защото то отговаря на техния проблем и дава добро изживяване.
Така че, вместо да се караме за значението на дадена дума, нека да разгледаме как Xamarin предоставя ефективен начин да предоставите на вашите потребители това, което ги интересува.
Преди да продължим напред, нека просто изясним трите елемента, които съставляват нашето решение на проблема с развитието на различни платформи.
какво е маркер erc 20
Както бе споменато по-рано, Xamarin е .NET решение за разработка на мобилни и настолни приложения. Той е закупен от Microsoft през 2016 г., но е датиран преди около четири години с проекта Mono. Днес той разполага с три решения: Xamarin.iOS, Xamarin.Android и Xamarin.Mac. Другите платформи вече обработват .NET приложения по подразбиране, като решения на Microsoft. Накратко, Xamarin предлага директна връзка към API на платформата в .NET. Следователно можете да използвате естествени функции от .NET приложение. Има и модул за разширение за Xamarin, наречен Forms, който осигурява слой за абстракция за потребителския интерфейс.
SkiaSharp е .NET обвивка над библиотеката за векторна графика на Skia на Google. Skia е Android, Chrome, ChromeOS и родният механизъм за рендиране на Firefox. С SkiaSharp можете да използвате библиотеката във вашето приложение .NET, за да я направите междуплатформена. Това означава, че чистата сянка, която вашият дизайнер казва „ще направи приложението ви много по-добре“, може да бъде кодирана само веднъж, вместо да се повтаря за всяка целева платформа. Лично според мен най-добрата му характеристика е възможността да се изобразяват SVG графики по начин, който ви позволява да предотвратите дублиране на различните форм-фактори, като същевременно запазите отчетливо, перфектно изобразяване.
За да запази всичко добре разделено и свободно свързано, нашето осветено решение ще разчита на MVVMCross. Тази рамка прилага MVVM (Model-View-ViewModel) инфраструктура, така че всичко да може да бъде независимо. Без да стават твърде технически, приложенията обикновено се разделят на три части:
В софтуерното инженерство ние винаги се стремим да държим изгледа отделен от ViewModel, така че логиката на приложението (в ViewModel) да може да бъде използвана повторно, дори ако променим визуалното представяне. MVVMCross ни помага да постигнем точно това, като обработваме обвързването на данни и предоставя модели и инструменти за абстракция на платформата.
Само за да обобщим, има различни неща, които разграничават успешните приложения от лошите. Успешно приложение:
Точка номер 1 очевидно няма нищо общо с избраната от вас рамка. Така че нека се концентрираме върху точка номер 2. Има три основни аспекта, които допринасят за приятността на вашето приложение:
Запознатостта е свързана с лекота на използване и бързо намиране на пътя през приложението.
С други думи, става дума за използване на различните парадигми на потребителския интерфейс на платформата по цялостен системен начин. Например прости неща като позиции на бутони, списък с контекстни действия или навигация допринасят за познаването на вашето приложение.
Запознатостта е основното слабо място на уеб приложения или рамки, базирани на уеб интерфейс. Xamarin Forms, от друга страна, осигурява съпоставяне между платформи на предоставени от доставчика елементи на потребителския интерфейс.
Поради това вашите потребители получават опит, който съответства на общия вид и усещане на платформата, така че те ще се чувстват интуитивно спокойно във вашето приложение.
Честно казано, споменаването на „роден“ във вашата маркетингова пропаганда не означава нищо. Предприеме Jasonette като пример, който е „роден през HTTP“. Потребителският интерфейс се съхранява на уеб сървър ... здравей, обиколки и забавяния, така че виждаме, че родният не може непременно да се предполага, че предполага по-добра производителност!
Така че с този мит отстранен, когато разглеждаме реални критерии, Xamarin излиза като най-добре закръгленото решение по отношение на производителността . Xamarin Forms, които не изискват значително повече превключвания на контекст, предлага сравнима производителност с приложения на родния език .
Моето заключение е, че изборът ви за внедряване е това, което може да забави приложението ви, а не Xamarin спрямо родния език. Други възможности там са в очевидно неблагоприятно положение по отношение на производителността.
Възможността за вашите дизайнери да създадат уникално изглеждащо приложение също е много важно да се вземе предвид, ако искате да осигурите възможно най-доброто потребителско изживяване и да разграничите приложението си.
набиране на частен капитал за недвижими имоти
Много пъти уникалността предполага създаване на персонализирани контроли, анимации или жестове. Когато не е лесно достъпен в Xamarin, можете да използвате SkiaSharp (обвивка около библиотеката за рендиране на векторни графики на Google на Google) и да се възползвате от персонализираната концепция за визуализация на Xamarin Forms, за да се доближите колкото е необходимо до хардуера, като същевременно винаги кодирате в един език, нещо, което другите решения не могат да предложат.
В този момент най-вероятно си мислите, че изборът на рамка е и бизнес решение. Освен фактори извън обхвата на тази статия, като наличието на човешки ресурси, Xamarin има какво да предложи, особено когато е съчетан с MVVMCross. Ще разгледам четири аспекта, които ще искате да вземете предвид при решението си:
Нека махнем този от пътя. От по-рано тази година , Xamarin е безплатен за фрийлансъри и малък бизнес като стартиращи фирми (с Visual Studio Community Edition ). За по-големите организации той идва «свободно» с лиценз за Visual Studio, който може би вече имате. Xamarin Forms, MVVMCross и SkiaSharp също са безплатни и с отворен код, за да го допълнят!
Както вече споменах, преминаването по .Net маршрута с Xamarin ви позволява да разработвате приложенията си на един език от началото до края. Повечето други решения изискват от програмистите да знаят различни езици. В случай че Кордова например трябва да владеете не само HTML, Javascript, CSS, но и евентуално Objective-C, Java и / или C #, ако имате нужда от достъп до API на доставчици, които нямат налична приставка.
Разнообразието от използвани езици прави повече контекстни превключватели и повече инструменти за овладяване, което води до намалена ефективност. Xamarin, от друга страна, е универсално решение: от Visual Studio изграждате, внедрявате и отстранявате грешки на всички платформи.
Въпреки че не е пряко свързан с Xamarin, вие също получавате много функции в C #, които ускоряват развитието, като изберете .Net solution . А именно, вие се възползвате от страхотните функции в C # 4.5+ като лесно многопоточно предаване с асинхронизация / изчакване, затваряне и отразяване, за които е доказано, че подобряват ефективността.
Вероятно сте мислили за повторно използване на кода и най-вероятно смятате, че всички решения са донякъде еквивалентни в това отношение. Съжалявам, че казвам приятел, но грешиш!
Програмистите сред вас може би са се чудили защо на Земята бих предложил използването на MVVMCross над слоя MVVM, който е вграден във Форми? Е, ето какво трябва да помислите: наистина ли изграждате само мобилни приложения?
Като изолирате логиката на приложението си с MVVMCross и използвате инверсията на контрола, която предоставя, можете да използвате повторно максимално количество код на мобилни устройства, но също и на Windows и Mac (защото Xamarin.Mac е ваш приятел).
Това не само ще ви спести пари, но също така предлага добри инженерни практики, които ще намалят разходите ви за поддръжка на кода.
Може би не си като мен, но мразя да преоткривам колелото. Следователно наличието на достъп до съществуващи компоненти, които можете лесно да интегрирате във вашето приложение, е от решаващо значение за ускоряване на времето ви за пускане на пазара и често това ще намали разходите ви едновременно.
Изборът на Xamarin и MVVMCross ви предлага две възможности за избор на съществуващи компоненти. Първо, все повече и повече компоненти са на разположение за Xamarin със или без формуляри. Xamarin има Component Store, интегриран във Visual Studio, където можете да намерите различни решения на често срещани проблеми с приложенията, а други компании продават директно, така че не забравяйте да търсите, преди да започнете да пишете свои собствени компоненти (или помислете за продажбата им, след като бъдат изградени).
Второ, ще искате да търсите пакети Nuget, защото има вероятност някой вече да е написал код, за да направи това, от което се нуждаете. Сред тези пакети ще намерите достоен списък с приставки за MVVMCross на различни платформи, които ще решат често срещани проблеми като имейл, GPS или локализация.
Ако вече имате опит със C #, вероятно имате предпочитаните компоненти. Разбира се, не искате да ги пускате, те се чувстват толкова удобно. Бъдете сигурни, можете да създадете обвързвания на C # за съществуващи компоненти и след това да ги използвате, сякаш сме в комплект с Xamarin, дори във Формуляри с малко помощ от персонализирани визуализатори.
Говорейки за това, може да искате да погледнете Свързвания на Xamarin Github хранилище преди да създадете свой собствен.
И накрая, достъпът до подкрепа и примери е много важен фактор при избора на рамка. Xamarin съществува от известно време, така че общността днес е с доста добри размери.
Търсенето на информация в Google обикновено открива доста голям брой отговори (съвет: опитайте също да търсите за monotouch и monodroid, предците на Xamarin) и Xamarin предлага много примери и страхотна документация на уебсайта си.
Освен това, тъй като Xamarin наистина е просто обвързващ елемент за приложните програмни интерфейси (API) на доставчика, документацията на Apple и Google винаги е подходяща и ще отговори на много от вашите въпроси. След това можете да създадете своя собствена услуга MVVMCross, за да абстрахирате приложните програмни интерфейси (API) на доставчика във вашия споделен код.
Що се отнася до бъдещето на Xamarin, с придобиването му през март от Microsoft, моят залог е, че той няма да отиде никъде, освен напред. От тази продажба и съвпадението към безплатен модел, общността само се разраства, поддръжката се подобрява и продуктът продължава да се подобрява, дори и с по-бързи темпове!
Бъдещето изглежда светло за Xamarin.
архитект на сертифицирани решения за уеб услуги на Amazon
Наясно съм с факта, че може би отварям консервна кутия с тази статия. Сега не ме разбирайте погрешно, има и други опции, които си струва да обмислите и ви каня да го направите, защото опасенията ми може да не са същите като вашите.
Имайте предвид, че ако имате шестседмичен график и четири месеца по-късно все още нямате готово приложение, не печелите. Това би оставило два месеца и половина и много пари, за да обучите някого вътрешно или да наемете някой знаещ. Настояването за изграждане на „родно“ приложение в този момент може да бъде доста вредно за съдбата на вашия проект.
Xamarin и тези съпътстващи технологии предоставят точно това, за което вашите потребители се грижат и от какво имате нужда. Надявам се, че тази статия ще ви помогне да вземете добре информирано решение относно рамката, която можете да изберете за следващото си мобилно приложение.
Свързани: По-добри приложения за Android, използващи MVVM с изчистена архитектура