cross-platform mobile development in c sharp with xamarin

45
ENABLING EFFICIENT HEALTHCARE Kryssplattform mobilutvikling i C# Runar Ovesen Hjerpbakk | Utviklingsleder | [email protected] Andreas Mosti | Systemutvikler | [email protected]

Upload: andreas-mosti

Post on 19-Jun-2015

210 views

Category:

Software


0 download

DESCRIPTION

Slides from a talk (in Norwegian) me and @hjerpbakk had at IT Dagene at NTNU about mobile development in C# with Xamarin and Mono.

TRANSCRIPT

Page 1: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Kryssplattform mobilutvikling i C#

Runar Ovesen Hjerpbakk | Utviklingsleder | [email protected] Andreas Mosti | Systemutvikler | [email protected]

Page 2: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

DIPS? DIPS. Motivasjon for kryssplattformutvikling Hva gjør C# til et flott språk å bruke også på mobil? Nyttige mønstre Demo og kodedykk

Agenda

Page 3: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hvem er DIPS?

Kontor i Bodø, Tromsø, Trondheim og OsloEt av de største programvarehusene i Norge

220 ansatte i DIPS– 130 utvikling– 20 databaseutviklere– 30 sykepleiere og leger

Page 4: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hva gjør DIPS

Vi utvikler journalsystem for 80% av sykehusene i NorgeAll pasientinformasjonen ligger i våre systemer80.000 sykehusansatte bruker DIPS hver dag

Page 5: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Før var alt enkelt: Windows!

Page 6: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

DIPS Mobile Platform 2007

Page 7: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Dagens klientlandskap

Page 8: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Andre forventninger fra brukerne

Page 9: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

DIPS Mobile Platform 2014

Page 10: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Native utvikling

Page 11: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Selvpining

Page 12: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Page 13: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hybrider

Omtrent umulig å få til native brukeropplevlse

Ytelsen!

Page 14: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Prøving og feiling

Mark Zuckerberg: Our Biggest Mistake Was Betting Too Much On HTML5

“There are mobile experiences out there that are so good, that … we need to have the highest quality, and the only way is doing native.”

“We have definitely shifted from HTML5 to native. The primary reason for that is, we’re seeing that more and more people are spending more time in the app, and the app is running out of memory.”

Page 15: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Native for brukeren

Betyr det at vi er stuck med native utvikling om vi ønsker fornøyde brukere og vil ha en behagelig utviklerhverdag?

Page 16: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Nei. Vi har Xamarin!

Alt du kan gjøre i Objective-C, Swift eller Java, kan du gjøre i C# vha. Xamarin!

Page 17: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Ikke bare mobiler

Page 18: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

C# fordeler

«Ligner på Java, alt er bare bedre.»

«Visual Studio med ReSharperer verdens beste IDE»

- Runar Ovesen Hjerpbakk

Page 19: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

C vs C#

C# with XamarinC

Page 20: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Java vs C#

C# with XamarinJava

Page 21: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

LINQ - Language Integrated Query

Page 22: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

XML? JSON? JSONx?

XML kan parses med LINQ

JSON er støttet av fantastiske 3. parts biblioteker

Page 23: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

private void SnapAndPost (){    Busy = true;    UpdateUIStatus ("Taking a picture");    var picker = new Xamarin.Media.MediaPicker ();    var picTask = picker.TakePhotoAsync (new Xamarin.Media.StoreCameraMediaOptions ());    picTask.ContinueWith ((picRetTask) => {        InvokeOnMainThread (() => {            if (picRetTask.IsCanceled) {                Busy = false;                UpdateUIStatus ("Canceled");            } else {                var tagsCtrl = new GetTagsUIViewController (picRetTask.Result.GetStream ());                PresentViewController (tagsCtrl, true, () => {                    UpdateUIStatus ("Submitting picture to server");                    var uploadTask = new Task (() => {                        return PostPicToService (picRetTask.Result.GetStream (), tagsCtrl.Tags);                    });                    uploadTask.ContinueWith ((uploadRetTask) => {                        InvokeOnMainThread (() => {                            Busy = false;                            UpdateUIStatus (uploadRetTask.Result.Failed ? "Canceled" : "Success");                        });                    });                    uploadTask.Start ();                });            }        });    });}

Page 24: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Async og Awaitprivate async Task SnapAndPostAsync (){    try {        Busy = true;        UpdateUIStatus ("Taking a picture");        var picker = new Xamarin.Media.MediaPicker ();        var mFile = await picker.TakePhotoAsync (new Xamarin.Media.StoreCameraMediaOptions ());        var tagsCtrl = new GetTagsUIViewController (mFile.GetStream ());

        // Call new iOS await API        await PresentViewControllerAsync (tagsCtrl, true);        UpdateUIStatus ("Submitting picture to server");

        await PostPicToServiceAsync (mFile.GetStream (), tagsCtrl.Tags);        UpdateUIStatus ("Success");    } catch (OperationCanceledException) {        UpdateUIStatus ("Canceled");    } finally {        Busy = false;    }}

Page 25: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Utvikle raskere!

Del kode mellom plattformene

Bruk ferdige biblioteker

Page 26: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Standard mønster

Page 27: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

IoC & Dependency Injection

Page 28: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Men hva med Cloud?

Page 29: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Men hva med Cloud?

66.9% markedsandel på web!

Page 30: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

LAMP: 58.5%

Page 31: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Page 32: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Skalerbar, Kryssplattform webkomponent i C# !?!?

Awesomeness!

Page 33: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Forslag til REST-arkitektur

Page 34: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

HTTP GET

HTTP POST

Page 35: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Kjapp pakking og deployment med Docker

Page 36: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Miguel approves!

Page 37: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

En manuell, papirbasert prosedyre

Medikamenter føres fra papir til papir

Feilmedisinering: – Annen dose enn ordinært: 39%– Feil legemiddel til pasient: 17%– Legemiddel gitt til feil pasient: 12%

Usecase: medikamentutlevering

Page 38: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Demo og kodedykk

Page 39: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hva vi ikke har pratet om: Xamarin Insights

Page 40: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hva vi ikke har pratet om: Xamarin Profiler

Page 41: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hva vi ikke har pratet om: Xamarin Test Cloud

Page 42: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Hva vi ikke har pratet om: Xamarin Forms

Page 43: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

Priser

Page 44: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

C# er et fantastisk språk og kan brukes på «alle» plattformer vha. bla. Xamarin

Native Apps kan gi bedre brukeropplevelse og bedre ytelse enn hybrider

Opp mot 90% kodedeling på tvers av plattformer 27,533 - 3. parts komponenter og biblioteker på NuGet,

de viktigste er kryssplattform allerede Kan bruke Visual Studio eller Xamarin Studio

Oppsummering

Page 45: Cross-platform mobile development in c sharp with Xamarin

E N A B L I N G E F F I C I E N T H E A L T H C A R E

@hjerpbakk@amostii

xamarin.com

github.com/xamarin

Sommerjobber og faste stillinger på dips.no

Spørsmål?