Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afJacob Paulsen Redigeret for ca. et år siden
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.
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.