Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LoB Applications with Silverlight (in Greek)

Aggelos Biboudis
October 23, 2010
47

LoB Applications with Silverlight (in Greek)

Aggelos Biboudis

October 23, 2010
Tweet

Transcript

  1. Και LOB και RIA : the silver side of the

    moon Κελαϊδίτης Μάνος MVP, MCT, MCDBA, MCSD.NET, MCPD.EAD Μπιμπούδης Άγγελος Doctoral Researcher, Software Developer
  2. Agenda • Θέλω να γράψω μία Line-Of-Business RIA εφαρμογή –

    Πώς φτάνω στα data; – Πώς κάνω debugging; – Πώς χειρίζομαι το security; – Πώς χειρίζομαι το validation; – Πώς θα υποστηρίζει πολλαπλές γλώσσες; – Πώς θα συνεργαστώ με τον designer;
  3. Πρώτος τρόπος– ο MSDN εύκολος • Entity Framework & STEs

    για DAL – Απλοποιημένη update λογική με STEs – Τα βλέπω και στον client • Data access μέσω hand-made WCF service – Πρέπει να γράψω όλες τις μεθόδους – Στην πορεία, γίνεται περίπλοκος ο χειρισμός του γράφου – Δυσκολία στην υλοποίηση transactions
  4. Πρώτος τρόπος– ο MSDN εύκολος • Validation – Θα χρειαστεί

    να γράψω αρκετό κώδικα. Γίνεται αλλά: – Θα πρέπει να είναι καλογραμμένος κώδικας – Πιθανώς θα υπάρχει και στον client και στον server – Be trendy  – Υποστήριξε την τελευταία μόδα του INotifyDataErrorInfo
  5. Περί Validation ανατριχιαστικές λεπτομέρειες • Στο Silverlight 4 έχουμε το

    νέο interface INotifyDataErrorInfo • To IDataErrorInfo έχει προβλήματα – Επιστρέφει μόνο ένα error ανά object τύπου string – Επιστρέφει μόνο ένα error ανά property – Είναι μόνο reactive – Δεν είναι ασύγχρονο Databinding usage ValidatesOnExceptions Setters με exceptions ValidatesOnDataErrors IDataErrorInfo ValidatesOnNotifyDataError s (default true) INotifyDataErrorInfo NotifyOnValidationError INotifyDataErrorInfo async BindingValidationError event
  6. Πρώτος τρόπος– ο MSDN εύκολος • Security – To Silverlight

    δεν υποστηρίζει WS-HTTP binding – Είναι δική μας ευθύνη να: – Χρησιμοποιήσουμε SSL για να προστατέψουμε τα data – Να υλοποιήσουμε μηχανισμό authorization & authentication – Ευτυχώς που μπορώ να χρησιμοποιήσω το ASP.NET Membership εύκολα!
  7. Πρώτος τρόπος– ο MSDN εύκολος • Debugging – Validation exceptions

    – Πολλές φορές δεν είναι περιγραφικά – “Element is already a child of another element” – “The remote server returned an error: NotFound ” – Debugging στο Expression Blend – Μάθε το Fiddler!
  8. Πρώτος τρόπος– ο MSDN εύκολος • Localization / Globalization –

    H ευκολία/δυσκολία εξαρτάται από τις απαιτήσεις – Πχ δυνατότητα εναλλαγής γλωσσών – Η χρήση RESX είναι μια καλή επιλογή, αλλά: – Ο κώδικας που παράγει το custom tool έχει πρόβλημα – Η όλα-στο-ίδιο-τσουβάλι λογική δεν είναι κατάλληλη για το Silverlight – Και να ήταν μόνο αυτά…
  9. Πρώτος τρόπος– ο MSDN εύκολος • Designer - Developer workflow

    – Χρειάζομαι designer; – Ναι, υπάρχει κακός XAML κώδικας! – Το code-behind μοντέλο δεν είναι ευέλικτο – Άλλο το theme και άλλο το skin – Μειώνεται το “Blendability” της εφαρμογής
  10. Δεύτερος τρόπος – ο δύσκολος αλλά σωστός • Υπάρχουν τεχνικές

    για να ξεπεραστούν τα προηγούμενα μειονεκτήματα – WCF RIA Services – MVVM pattern – Άλλα frameworks/libraries (MEF, PRISM, Rx, κλπ)
  11. DomainService Stateless CRUD + App Logic class AlbumDomainService IQueryable<Album> GetAlbums()

    IQueryable<Album> SearchAlbums (string) void AddAlbum(Album) Validation and authorization rules, Application workflows, … Data Model class Album DomainContext Stateful view + Bindable Data class AlbumDomainService EntityList<Albumt> Albumss { get } EntityQuery<Restaurant> GetAlbumstQuery() EntityQuery<Restaurant> SearcAlbumsQuery(string) class Album Data members + Validation Data Model + Metadata + Shared Code Rich Internet Application DB Service s Data Access Layer App Logic Presentati on Logic Networ k Domain Contex t Data Servic e Under the covers infrastructure Σημείωση: Το slide εκλάπη από τον Mike Taulty που το έκλεψε από τον Brad Τα WCF RIA Services σε 10’
  12. Τα WCF RIA Services σε 10’ • Silverlight Tools for

    Visual Studio 2010 • RIA Services Toolkit – Endpoints – ASP.NET Support – Client tools for proxies • Domain Services – DAL agnostic • For free: – Domain context – Change tracking, paging, sorting, filtering of entities – Service & Entity level validation – Shared code – Membership & Authentication support Που είναι ο λάκκος; • magic code generation • Αόρατα services • Κάντο όπως το θέλουν
  13. Το MVVM σε 10’ View (πχ Genre/Albums) XAML Cod e

    Οθόνες Model (πχ MusicStoreModel/Album) Τα data μου ViewModel (properties: data & commands) Ενώνει το Model με το View To ViewModel είναι το DataContext του View To View κάνει bind στα properties XAML που αρέσει στους designers, οπότε σχεδιάζουν εύκολα τα views Είναι testable γιατί μπορεί να γίνει mocked Κώδικας που δεν τεστάρεται εύκολα γι αυτό τον ελαχιστοποιούμε
  14. Το MVVM σε 10’ • Separation of concerns • Καλύτερο

    workflow Designer - Developer • Unit Testing • Ευκολότερη συντήρηση του κώδικα • Blendable εφαρμογές Που είναι ο λάκκος; • Μεγαλύτερο overhead στην ανάπτυξη του κώδικα • Απαιτεί coding skills • Δεν είναι πανάκεια • Το φτιάχνεις μόνος σου • Χρησιμοποιείς έτοιμες βιβλιοθήκες – MVVM Light – Ocean – Cinch
  15. Άλλα frameworks/libraries • MEF – framework που επιτρέπει τη δημιουργία

    εφαρμογών από πολλαπλά components χωρίς να γνωρίζει το ένα το άλλο • PRISM – Βασίζεται στο MEF και προορίζεται για composite εφαρμογές με έμφαση στα loose coupled views • Rx / CLR Async features – Βιβλιοθήκες που βοηθούν τον ασύγχρονο προγραμματισμό
  16. Compositi on container Το MEF σε 10’ Part (πχ Η

    εφαρμογή μου) import (e.g DebuggerVisualizer) Part (πχ Plugin) export (e.g DebuggerVisualizer) Δηλώνει ότι χρειάζεται ένα component Δηλώνει ότι παρέχει ένα component “Dating” engine: Ψάχνει τους καταλόγους και ενώνει τους ενδιαφερόμενο Οι κατάλογοι περιέχουν ους ενδιαφερόμενους
  17. Το MEF σε 10’ • Μέρος του .NET Framework •

    Decoupling • Δουλεύει και στο runtime ! • Υποστηρίζει metadata για τα parts • Εύκολο lifetime management • Lazy! Που είναι ο λάκκος; • Έχει learning curve • Απαιτείται καλός σχεδιασμός • Δυσκολία στο debugging • Είναι Framework libraries – Silverlight 4 – .NET 4.0 γενικά – Για παλαιότερες εκδόσεις από codeplex • Διάφορα σενάρια – Plugins – Application partitioning – Dynamic XAP loading – Dynamic resource loading
  18. MEF vs. any IoC • IoC containers – static dependencies

    – decoupling • MEF – dynamic dependencies – decoupling – extensibility
  19. Εμείς και το community forum, events, κλπ Μάνος Κελαϊδίτης (aka

    kelman), mkelaiditis at hotmail.com http://www.dotnetzone.gr/cs/blogs/mkelaiditis/ Άγγελος Μπιμπούδης biboudis at live.com
  20. Αξιολόγηση παρουσιάσεων Πείτε μας την γνώμη σας και μπείτε στην

    κλήρωση για τα δώρα μας. Συμπληρώστε το έντυπο αξιολόγησης και παραδώστε το στην γραμματεία.