Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Mød Microsoft – for udviklere & arkitekter Hvad er smarte klienter? - definitioner og principper.Henrik Lykke Nielsen Captator – de danske.NET eksperter.

Lignende præsentationer


Præsentationer af emnet: "Mød Microsoft – for udviklere & arkitekter Hvad er smarte klienter? - definitioner og principper.Henrik Lykke Nielsen Captator – de danske.NET eksperter."— Præsentationens transcript:

1 Mød Microsoft – for udviklere & arkitekter Hvad er smarte klienter? - definitioner og principper.Henrik Lykke Nielsen Captator – de danske.NET eksperter lykke@captator.dk http://www.captator.dk/captator.aspx?blog=dothenrik http://www.captator.dk http://www.captator.dk/captator.aspx?blog=dothenrik http://www.captator.dk

2 2  Session 1: Hvad er smarte klienter?  Definitioner, designprincipper og muligheder  Session 2: Smart klient som Windows-applikation   Installation og automatisk opdatering  Session 3: Smart klient som Office-applikation   Overblik over mulighederne  Session 4: Smart klient som mobil-applikation   Best practices, tips og tricks Agenda

3 3 Sessions-agenda  Hvorfor Smart Clients?  Hvad er Smart Clients?  Designprincipper og muligheder  User interface  Eksempler: Fading og sliding  Events  Noget om events  Form træknings eksempel  Validering  Arkitektur

4 4 Smart Clients er den næste naturlige klient- udvikling Teknologi udvikling Shift happens Muligheder og egenskaber Tid   “Dum” mainframe terminal   PC CUI   PC GUI   LAN   Web   Applikations- server   XML web services   Enterprise integration   Næste generation af klienter   Client-server   RAD   Komponenter

5 5 Ingen applikation er en ø

6 6 Internet Banking Wireless Aggregation Branch Banking CRM Core Banking Wealth Management Treasury / Forex Trading / Back office Payment Systems and Card Mgmt 3D Secure Business Intelligence EAI Straight through Processing ATM / POS Ingen applikation er en ø

7 7 Tykke klienter Tynde klienter Smarte klienterSammenligning Rig brugeroplevelse Udvikler produktivitet DLL Hell Stort resourceforbrug Lille resourceforbrug Responstid Netværks afhængighed Lette at deployering Dårlig brugeroplevelse Let at håndtere ændringer Svære at deployere Kompleks udvikling

8 8 Hvad er Smart Clients? Målsætninger  Udnytter lokale resourcer  Righoldig brugergrænseflade  Mulighed for tæt kobling og stærk styring  Performance og tekniske muligheder  Connected / disconnected  Understøtter online og offline scenarier  Data kan gemmes lokalt og synkroniseres  Lette at deployere og opdatere  Automatisk opdatering  Windows, Office, Pocket PC,...

9 9 Microsofts Smart Clients  Windows Forms  Fuldt.NET framework  Kan udnytte PCen fuldt ud  Tablet PC  Windows Forms + Inking funktionalitet  Office  Integrerede løsninger  Office applikationer som komponenter .NET Compact Framework  Pocket PC  Smart Phone

10 10 Hvad giver.NET os?  Højniveau sprog, framework og værktøjer  Mulighed for at udnytte den enkelte platform (næsten) fuldt ud  Uniform og unified programmingsmodel  Udviklere kan bruge de samme kernekompetencer  Lettere at opnå kode og komponentgenbrug  Lettere at ændre applikationer  Low-level plumbing kode er lavet for os

11 11 Hvad er Smart Clients ikke?  Smart Clients er ikke (nødvendigvis) en ny applikationsarkitektur  Flerlags arkitekturer er stadig best practice  Client/server udvikling stadig en mulighed  Meeen Smart Clients kræver anderledes fokus  Smart Clients er ikke en fast definition  Afhænger af lokale behov for afvikling og for databehandling  Definitionen vil (måske) ændre sig over tid  Smart Clients er ikke hype  Smart Clients er ikke hype  De kan implementeres nu!

12 12 The Power Of Reuse - skal nok tages med et gran salt The Power Of Reuse - skal nok tages med et gran salt SoftwareReuse Highest Low Higher Low

13 13 Connectede applikationer  Online / offline  Responsivitet  Centrale  lokale data  Integration til andre systemer  Problemstillinger  Sikkerhed  Skalérbarhed og performance  Ikke-atomare services, caching  Teknologier  Idag ofte XML web services, WSE  Message Queuing  I fremtiden Indigo

14 14 Online / offline og data  Centrale  lokale data  Gemme data lokalt  Bearbejde data lokalt  Synkronisere med centrale data  Herkomsten af data burde ikke være brugerrelevant  Synkronisering bør være transparent (Outlook 2003)  Problemstillinger  Flerbrugersamtidighed  Schema opdateringer  Offline kan medføre mindre funktionalitet  Vi mangler stadig den gyldne løsning

15 15 Deployering og opdatering  Installation  Opsætning af klient  Installation og befolkning af lokalt datastore  Opdatering  Automatisk  Central styring

16 16 Integration til lokale resourcer  Hardware  Overvågning og styring  Operativsystemet  Sikkerhed  Lokal storage  Andre applikationer  Backendsystemer så som ERP/CRM systemer  Office systemer

17 17 User interfaces  Smart Clients  En ny generation af Windows applikationer  Udnytter brugerens platform fuldt ud  Fuld kontrol over brugergrænsefladen  Styr på detaljerne på pixel-niveau  Lad dataene være udgangspunktet  Tilpas brugergrænsefladen til dataene  Find den optimale navigering og visualisering af data  Lav konsistente og intuitive brugergrænseflader  Brug design patterns for at øge konsistens og lette vedligehold  Brug flerlags modeller (UI  forretningslogik)

18 18 Demo apps http://www.learn247.net We Rock 247 Football 247 http://www.windowsforms.net IssueVision FotoVision FotoVision

19 19 User interface småting  Irregulære forme  frm.BackgroundImage =...  frm.TransparencyKey =...  frm.FormBorderStyle = None  Fading  Opacity  Sliding  System.Windows.Forms.Timer  Tick-event  Interval-property DEMO

20 20 Genbrug og user interfaces  Visual Inheritance af Windows Forms  Events  Form træknings eksempel  Designer kreerede sinks eller dynamiske?  Smart Clients’ tætte sammenhæng til eksekveringsplatformen kan udnyttes...

21 21 Events  Event trigger MulticastDelegate, når det fyres  Events er en multicast mekanisme  Rækkefølgen de enkelte callbacks bliver kaldt i er uforudsigelig  Kaster en event procedure en exception, vil de resterende callbacks ikke blive udført  Events bygger på delegates

22 22 Event erklæring Public Event Progress(ByVal message As String) Public Event Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' eller Public Event Click As System.EventHandler ' hvor System.EventHandler er predefineret i.NET frameworket som Public Delegate Sub EventHandler Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Public Event Progress(ByVal message As String) Public Event Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' eller Public Event Click As System.EventHandler ' hvor System.EventHandler er predefineret i.NET frameworket som Public Delegate Sub EventHandler Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) public delegate void ProgressHandler(string message); public event ProgressHandler Progress; public event System.EventHandler Click; // hvor System.EventHandler er predefineret i.NET frameworket som public delegate void EventHandler(object sender, EventArgs e); public delegate void ProgressHandler(string message); public event ProgressHandler Progress; public event System.EventHandler Click; // hvor System.EventHandler er predefineret i.NET frameworket som public delegate void EventHandler(object sender, EventArgs e); VB C#

23 23 Event defineres og raises Public Class KlasseMedClickEvent Public Event Click As System.EventHandler Sub SendClickEvent() RaiseEvent Click(Me, New System.EventArgs) End Sub End Class Public Class KlasseMedClickEvent Public Event Click As System.EventHandler Sub SendClickEvent() RaiseEvent Click(Me, New System.EventArgs) End Sub End Class VB public class KlasseMedClickEvent { public event System.EventHandler Click; void SendClickEvent() { System.EventHandler tmp = this.Click; if (tmp != null) tmp(this, new System.EventArgs()); } public class KlasseMedClickEvent { public event System.EventHandler Click; void SendClickEvent() { System.EventHandler tmp = this.Click; if (tmp != null) tmp(this, new System.EventArgs()); } C#

24 24 Dynamisk ”sinkning” af events  Benyttes hvis man ønsker runtime fleksibilitet i event opsætningen  Handles benyttes ikke, da event og eventprocedure er sammenkoblet  Eksempler AddHandler event, AddressOf eventhandler RemoveHandler event, AddressOf eventhandler AddHandler event, AddressOf eventhandler RemoveHandler event, AddressOf eventhandler AddHandler _obj.Progress, AddressOf DynamicProgress RemoveHandler _obj.Progress, AddressOf DynamicProgress AddHandler btnOk.Click, AddressOf btnOk_Click AddHandler _obj.Progress, AddressOf DynamicProgress RemoveHandler _obj.Progress, AddressOf DynamicProgress AddHandler btnOk.Click, AddressOf btnOk_Click VB

25 25 Dynamisk ”sinkning” af events  Events har + og – operator overloaded (add og remove event handler)  Eksempler obj.event += new EventHandlerDelegate(eventhandlerproc); obj.event -= new EventHandlerDelegate(eventhandlerproc); obj.event += new EventHandlerDelegate(eventhandlerproc); obj.event -= new EventHandlerDelegate(eventhandlerproc); public delegate void ProgressHandler(string message); public event ProgressHandler Progress; _obj.Progress += new ProgressHandler(DynamicProgress); _obj.Progress -= new ProgressHandler(DynamicProgress); this.btnOk.Click += new System.EventHandler(this.btnOk_Click); public delegate void ProgressHandler(string message); public event ProgressHandler Progress; _obj.Progress += new ProgressHandler(DynamicProgress); _obj.Progress -= new ProgressHandler(DynamicProgress); this.btnOk.Click += new System.EventHandler(this.btnOk_Click); C#

26 26 Delegates og events  Events bygger på multicast delegates  Følgende er ækvivalente: AddHandler btnEnEkstraKnap.Click, AddressOf EtEkstraEventKald AddHandler btnEnEkstraKnap.Click, _ New System.EventHandler(AddressOf EtEkstraEventKald) AddHandler btnEnEkstraKnap.Click, _ CType(System.Delegate.CreateDelegate( _ GetType(System.EventHandler), Me, "EtEkstraEventKald"), _ System.EventHandler) AddHandler btnEnEkstraKnap.Click, AddressOf EtEkstraEventKald AddHandler btnEnEkstraKnap.Click, _ New System.EventHandler(AddressOf EtEkstraEventKald) AddHandler btnEnEkstraKnap.Click, _ CType(System.Delegate.CreateDelegate( _ GetType(System.EventHandler), Me, "EtEkstraEventKald"), _ System.EventHandler) btnEnEkstraKnap.Click += new System.EventHandler(EtEkstraEventKald); btnEnEkstraKnap.Click += (System.EventHandler) System.Delegate.CreateDelegate( typeof(System.EventHandler), this, "EtEkstraEventKald"); btnEnEkstraKnap.Click += new System.EventHandler(EtEkstraEventKald); btnEnEkstraKnap.Click += (System.EventHandler) System.Delegate.CreateDelegate( typeof(System.EventHandler), this, "EtEkstraEventKald"); VB C#

27 27 Statisk ”sinking” af events i VB  WithEvents understøttes som i VB6  Men med Handles keyword  Flere events kan håndteres af samme procedure  Og flere procedurer kan håndtere (handle) det enkelte event WithEvents txtMessage As System.Windows.Forms.TextBox WithEvents _eventSource As New EventSource Private Sub _eventSource_Progress(ByVal message As String) _ Handles _eventSource.Progress... Handles btnOk.Click, btnOk.GotFocus,... VB

28 28 WithEvents  Eksempel på ”kode der genereres” Friend Overridable Property Button1 As Button Get Return Me._Button1 End Get Set(ByVal WithEventsValue As Button) If (Not Me._Button1 Is Nothing) Then RemoveHandler Me._Button1.Click, _ New EventHandler(AddressOf Me.Button1_Click) RemoveHandler Me._Button1.Leave, _ New EventHandler(AddressOf Me.Button1_Leave) End If Me._Button1 = WithEventsValue If (Not Me._Button1 Is Nothing) Then AddHandler Me._Button1.Click, _ New EventHandler(AddressOf Me.Button1_Click) AddHandler Me._Button1.Leave, _ New EventHandler(AddressOf Me.Button1_Leave) End If End Set End Property Friend Overridable Property Button1 As Button Get Return Me._Button1 End Get Set(ByVal WithEventsValue As Button) If (Not Me._Button1 Is Nothing) Then RemoveHandler Me._Button1.Click, _ New EventHandler(AddressOf Me.Button1_Click) RemoveHandler Me._Button1.Leave, _ New EventHandler(AddressOf Me.Button1_Leave) End If Me._Button1 = WithEventsValue If (Not Me._Button1 Is Nothing) Then AddHandler Me._Button1.Click, _ New EventHandler(AddressOf Me.Button1_Click) AddHandler Me._Button1.Leave, _ New EventHandler(AddressOf Me.Button1_Leave) End If End Set End Property VB

29 29 Form træknings eksempel Public Class FormDragger Private _frm As System.Windows.forms.Form '... Public Sub New(ByVal frm As System.Windows.forms.Form) _frm = frm AddHandler frm.MouseDown, AddressOf MouseDownHandler AddHandler frm.MouseMove, AddressOf MouseMoveHandler End Sub Private Sub MouseDownHandler(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) '... End Sub Private Sub MouseMoveHandler(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) '... End Sub '... End Class Public Class FormDragger Private _frm As System.Windows.forms.Form '... Public Sub New(ByVal frm As System.Windows.forms.Form) _frm = frm AddHandler frm.MouseDown, AddressOf MouseDownHandler AddHandler frm.MouseMove, AddressOf MouseMoveHandler End Sub Private Sub MouseDownHandler(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) '... End Sub Private Sub MouseMoveHandler(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) '... End Sub '... End Class

30 30 Validering  Eksempel på direkte valideringskode public class Form1 : System.Windows.Forms.Form { //... private void textBox1_Leave(object sender, System.EventArgs e) { if (textBox1.Text == "") { textBox1.Focus(); } private void textBox2_Leave(object sender, System.EventArgs e) { if (textBox2.Text == "") { textBox2.Focus(); } public class Form1 : System.Windows.Forms.Form { //... private void textBox1_Leave(object sender, System.EventArgs e) { if (textBox1.Text == "") { textBox1.Focus(); } private void textBox2_Leave(object sender, System.EventArgs e) { if (textBox2.Text == "") { textBox2.Focus(); }

31 31 Validering Designmål  Afkoblet fra brugergrænsefladen  Genbrugeligt  Let at udvide og tilpasse Består af  Regler  EventSinks til start af valideringen  DataExtractors  Notifiers

32 32 Validering - oversigt RuleBinding event Rule Check(txt1, txt2) DataExtractor Extract(txt1) Extract(txt2) Notifier HandleResult(result) BackColor =... result

33 33 Rules og DataExtractors  Rules  Genbrugelige på tværs af applikationen  Default rules (med mulighed for at tilføje)  Datatype, Required, Compare, InRange, RegularExpression  DataExtractors  Én eller flere ekstraktorer for hver type  Alle typer objekter kan valideres, ikke kun UI  DataExtractors for de almindeligste controller  TextBox, CheckBox, ComboBox,...  Mulighed for at tilføje egen ekstraktorer

34 34 EventSinks og Notifiers  EventSinks  Validering kan udløses af alle events på et ethvert objekt  Kan ændres dynamisk  Flere events kan udløse den samme validering  Notifiers  Valideringsresultatet kan sendes, hvorhen man ønsker det  Default notifiers (med mulighed for at tilføje)  MessageBox, StatusBar, BalloonTip, ErrorProvider, BackColor, PlayWave  Mulighed for at internationalisere valideringsresultater

35 35 Validering Demo

36 36 Arkitektur  Tykke klienter  … med en drejning  Fleksibel, servicebaseret arkitektur  Løst koblede systemer  Men med udnyttelse af platformen  Klar adskillelse af generisk og specifik kode  Standardbaseret kommunikation og datarepræsentation  Model- og datadrevne løsninger

37 37 Logisk arkitekturmodel  Adskille forretningsregler og UI fra data tilgang  Adskille data logik fra data tilgang  Adskille generelle aspekter fra konkret kode  Adskille geerelt UI fra konkret UI Resultat: Fleksibilitet og genbrug

38 38 SmartClients.Fremtiden  ClickOnce (Whidbey & Longhorn)  Lettere at lave automatisk udrulning og opdatering  Longhorn  Avalon  Mere avanceret UI  Deklarativt  Indigo  SO.NET.Future  Samler trådene fra mange forskellige kommunikationsteknologier og protokoller

39 39 Sessions agenda  Hvorfor Smart Clients?  Hvad er Smart Clients?  Designprincipper og muligheder  User interface  Eksempler: Fading og sliding  Events  Noget om events  Form træknings eksempel  Validering  Arkitektur

40 40 Resources  Smart Clients:  http://msdn.microsoft.com/smartclient/ http://msdn.microsoft.com/smartclient/  Windows Forms:  http://www.windowsforms.com http://www.windowsforms.com  Windows Mobile:  http://www.microsoft.com/windowsmobile/ http://www.microsoft.com/windowsmobile/  Office Developer:  http://msdn.microsoft.com/office/ http://msdn.microsoft.com/office/  Got Dot Net?  http://www.gotdotnet.com http://www.gotdotnet.com  Nyheder, artikler, information og Whidbey Julekalender  www.captator.dk www.captator.dk

41 © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Download ppt "Mød Microsoft – for udviklere & arkitekter Hvad er smarte klienter? - definitioner og principper.Henrik Lykke Nielsen Captator – de danske.NET eksperter."

Lignende præsentationer


Annoncer fra Google