Правильный Xamarin для мобильных приложений (Microsoft DevCon School...

  • View
    49

  • Download
    0

  • Category

    Mobile

Preview:

Citation preview

Отзывы��Помогите нам стать лучше!На вашу почту отправлена индивидуальная ссылка на электронную анкету. 2 ноября в 23:30 незаполненная анкета превратится в тыкву.

Заполните анкету и подходите к стойке регистрации за приятным сюрпризом!

#msdevconОставляйте отзывы в социальных сетях. Мы все читаем. Спасибо вам!

Программа интенсива11:30 – 12:30 Часть 1: Готовим Xamarin.Forms (Теоретическая часть)12:30 – 13:30 Практика13:30 – 14:30 Обед

14:30 – 15:30 Часть 2: Удобный REST (Теоретическая часть)15:30 – 16:30 Практика16:30 – 17:00 Перерыв

17:00 – 18:00 Часть 3: Архитектура приложения (Теоретическая часть)18:00 – 19:00 Практика19:30 – 20:30 Круглые столы с экспертами

Правильный Xamarin для мобильных приложений Черников ВячеславBinwell

Цели

#msdevcon

Что такое Xamarin.For

msРаботаем с

REST

Архитектура

приложенияПодключаемся к

внешнему REST-сервису, знакомимся с Mock-

данными

Отделяем бизнес-логику от UI, упрощаем

описание ViewModel, знакомимся с архитектурой

Знакомимся с Xamarin и cоздаем первое приложение на Xamarin.Forms

#msdevcon

Что такое Xamarin.Forms

Классический Xamarin

Полное покрытие iOS/Android API, нативные приложения

C# для разработки, возможность шарить код

Xamarin.Forms

Унификация и абстрагирование UI

Xaml, MVVM

PCL-библиотека

Xamarin.Forms

Приложения для работы с данными

Прототипы

Бизнес-приложения

Xaml Page<?xml version="1.0" encoding="utf-8" ?><ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="XamlSamples.HelloXamlPage" Title=“Page Title goes here"> <Label Text="{Binding Model.Text}" x:Name=“MainLabel" FontAttributes="Bold" TextColor="Aqua" /></ContentPage>

Основные элементыLabel – отображение текста Image – отображение изображенийButton – кнопкаListView – список элементовStackLayout – компоновка элементовContentPage – простая страницаMasterDetailPage – страница с боковым меню

Практика

#msdevcon

Приложениe v0.1Хардкодим и осваиваем UI

Практика

#msdevcon

https://aka.ms/xamintensive

Полезные ресурсы

#msdevcon

Улучшения-- FFImageLoading <ffimageloading:CachedImage DownsampleToViewSize="true"

Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg"> </ffimageloading:CachedImage>

-- ListView caching<ListView CachingStrategy="RecycleElement">

-- XamlC, AssemblyInfo.cs[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

#msdevcon

Работаем с REST API

Json.Net и DTO

public class Session {

[JsonProperty("title")]public string Title;

}

Refitpublic interface IRemoteApi{ [Get("/sessions")] Task<List<Session>> GetSessions();}

var service = RestService.For<IRemoteApi>("https://demo3143189.mockable.io");var sessions = await service.GetSessions();

Mock

Ускоряет верстку

Дает возможность проверить различные сценарии и наборы данных

Сохраняем готовые JSON в качестве ресурсов

DAL

Data Interfaces (ISessionDataService, etc), Data Objects

Mock RemoteРеализация Data Interface и чтение

данных из локальных ресурсов

Реализация Data Interface и

чтение данных с внешнего сервера с

помощью Refit

Refit Interfac

eКешер

Локальные JSON REST Service

DAL DataServicespublic static void Init(bool isMock = false) {

if (isMock) DependencyService.Register<ISessionDataService,

Mock.SessionDataService>();else

DependencyService.Register<ISessionDataService, Remote.SessionDataService>();}public static ISessionDataService Session => DependencyService.Get<ISessionDataService>();

Практика

#msdevcon

Приложениe v0.2Подключаем сервер и моки

#msdevcon

Архитектура XF-приложения

СлоиApp, App Services, Pages, Controls, Views, Converters, Layouts

ViewModels, Models

Data Services, Data ObjectsDAL

BL

UI

Settings,

Helpers

Platform Service

Interfaces

Platform ServicesNative RenderersiOS/Android/Windows application, styles, resources

MVVM Business Logic (BL)ViewModel – управление состоянием View, контекст для биндинга (свойства и команды), логика переходов между экранами.

Model – получение доп. информации из базового объекта, часто объединяется с ViewModel

Структура PCL-проектаDAL\

Data Objects\Data Services\

BL\ViewModels\Models\

UI\Pages\Controls\Converters\

PlatformServices\App.csSettings.csConsts.cs

Практика

#msdevcon

Приложениe v0.3Приводим структуру проекта в порядок, подбиваем хвосты

Правильный Xamarin для мобильных приложений 1. Знакомство с XF2. Осваиваем REST3. Архитектура XF-приложения

Черников Вячеславslava.chernikoff@binwell.com

© 2016 Microsoft Corporation. All rights reserved.