SlideShare a Scribd company logo
1 of 49
Download to read offline
Developing Line-of-Business
Applications with Microsoft Silverlight
                                 Nuno Godinho
                         Nuno.Godinho@sapo.pt
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
About Me
Nuno Filipe Godinho
Independent Consultant

Mail:    Nuno.Godinho@sapo.pt
         Nuno.Godinho@itech4all.com

Blogs:   http://pontonetpt.com/blogs/nunogodinho
         http://xamlpt.com/blogs/nunogodinho
         http://weblogs.asp.net/nunogodinho
         http://msmvps.org/blogs/nunogodinho

Twitter: @NunoGodinho
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Introduction
Problem Statement

   Problems
    ◦   N-Tier
    ◦   Controls
    ◦   Rich Text Support
    ◦   Multi-language Support
    ◦   Customer Devices Interaction
    ◦   Communications
    ◦   Extensibility
    ◦   Offline Support
    ◦   Interoperability
Introduction
Challenges using N-Tier applications

    LoB applications use data that needs to flow across tiers

    Created and used through basic CRUD operations

    In an internet application, there is a trust boundary between
     the client and the mid-tier server

    Important to have a well defined and secured resources that
     are available to the client tier and also what operations are
     permitted
Introduction
Challenges using N-Tier applications

    The validation needs to run on Client and On Server as well as
     on Mid-Tiers

    Common validation across the tiers

    Services that may be shared with other applications
Introduction
Vision and Goals

    Simplify RIA-style application development
     ◦ n-tier is hard, and un-natural
     ◦ Focus on data-driven apps

    Bring ASP.NET-style productivity to RIA development
     ◦ Building blocks for data, security, etc.
     ◦ Focus on scenarios
Introduction
Value Propositions

    Focus on data in an end-to-end manner

    A unified story for client and server development

    A prescriptive framework that targets key scenarios, and
     leads the common developer to a pit of success
Introduction
Value Propositions

    Simplify application development across tiers and trust
     boundary
     ◦ Provides a set of tools to build the multiple tiers of an application
       together
     ◦ Application logic remains aware of tier and trust boundaries
     ◦ Uses the end-to-end flow of data and metadata described earlier
     ◦ Code generation and shared code
         Enhance the experience by providing multiple choices for sharing
          logic while respecting tier and trust boundaries
Introduction
A Unified Story for Client and Server

    Client is an extension of the server
                                                                                  Service
    A single logical application
                          Rich Internet Application
        Browser                                 Application



                            Presentation             App            Data Access
        HTML                Network
                               Logic                Logic              Layer


                                                                                       DB
                                                              Services




                                                      Other Applications
Introdution
Value Propositions

    Define and support a pattern for exposing a set of operations
     on resources

    DomainService
     ◦ Define a set of operations on resources

    Framework and Tools
     ◦ Collaborate to generate code for a corresponding client-tier
     ◦ Services for authentication and user settings can be used out-of-the
       box
Introduction
A Prescriptive Pattern
                                                                                   Services




                                Rich Internet Application


 Presentation    Domain        Network
                                               Domain        App    Data Access
    Logic        Context                       Service      Logic      Layer

                    Under the covers infrastructure




                                                                              DB
Introduction
A Single Pattern that Scales and Grows

     Support for multiple presentation tiers and data access technologies

.NET Clients                                                       Databases
Silverlight, WPF                                                   ADO.NET,
                                                                   ORMs (LTS, EF, …)

Standards
Clients
JavaScript                                                        CLR
                                           App                    Lists/Objects
                                          Logic                   Repository
     Server                                                       (nHibernate, …)
     Rendering
     HTML, SEO,
     Printing, …                                                  Services
                                                                  REST/SOAP
                   SOAP,                 Unit Test                (Azure, …)
 Services           XML,                  Code
                   JSON,
 WCF
                   Binary
Line-of-Business Application
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Recommended Pattern
Recommended Pattern
MVVM

   Why?
    ◦ Separation of concerns
    ◦ Better Workflow between Developer and Designer
    ◦ Easier Testability

   Why not MVC?
    ◦ We need to have access to the Code-Behind and MVC doesn’t support
      that, only Code-Behind Pattern does, but doesn’t delivers easy
      separation of concerns
Recommended Pattern
MVVM




                Display data in Controls


                UI Friendly Entities, UI State, Actions


                Entities representing data
MVVM Implementation in Silverlight
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Communication
Unified Programming Model




   ASMX & WSE                                     .NET Remoting


      Interop                                      Extensibility
    with other                                       Location
Platforms & WS-*                                  transparency


        Attribute-                            Message-
         Based                                 Oriented
      Programming           REST / HTTP      Programming
                            Programming
        Enterprise                           System.Messaging
         Services
                             HTTP Services
Communications
Windows Communication Foundation (WCF)
Communications
WCF RIA Services

    Framework, tools and services with prescriptive pattern for n-
     tier applications
                                             Trust
                                           Boundary
       Web
      Service

                           Data
                         Access     App                App
                                                              View
                          Layer    Logic              Logic
                          (DAL)

  Database
Communications
WCF RIA Services

    Design-time view
                                  Solution (Application)

             Server project                                  Client project

        Entities                                      Entities
                                  Build, reflect
          Data                    & code-gen                            Views
        Access          Domain
                                                      Domain
         Layer          Service
                                                      Context
         (DAL)
Communications
Run-time view (entity lifecycle)

                                      Application

               Web server                                     Silverlight
                                        Query                   Load
           Data
                                        Entities    Domain     Entities
         Access             Domain                                          Views
          Layer             Service                 Context     Submit
                                       Submit
          (DAL)
                                        Results                 Results
Communications
Services

    Authentication
    Roles
    User profile
    All integrate w/ ASP.NET infrastructure
WCF RIA Services
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Beyond the Browser
   Out-of-Browser Applications

   Trusted Applications
Beyond the Browser
Out-of-Browser – Already on Silverlight 3


    Configuration Based

    AppManifest.xml

    Can be enabled in an existing application without rebuilding

    Install option on its right-click menu

    Can run without a network connection
    You can implement network detection and provide offline
     support when a connection is unavailable
Beyond the Browser
Out-of-Browser

    Windowing API

    WebBrowser control

    HtmlBrush

    Notification (aka. Toast)
Beyond the Browser
Trusted Applications



    OOB with elevated privileges

    COM Interop in Windows

    File system access

    Cross-domain networking access

    Full keyboard support in Full-Screen Mode
Beyond the Browser
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Extensibility
   Prism v2

   MEF – Managed Extensibility Framework
Extensibility
Prism v2

    Prism is a set of options
    Use what you want and ignore the rest
     ◦ Example:
        Choose Modules and Commanding, but ignore Event Aggregation
         and Regions
Extensibility
Prism v2

    Prism Technical Concepts
Extensibility
MEF – Managed Extensibility Framework




   A new library in Silverlight 4 for building
    applications that can be incrementally
                   extended.
Extensibility
MEF – Managed Extensibility Framework

                     An Application is built of parts.
Extensibility
MEF – Managed Extensibility Framework



                                          Export it.

                                          Import it.

                                        Compose it.
Extensibility
MEF – Managed Extensibility Framework

    Export it - Metadata
                              [ExportMetadata(“Location”,Location.Top)]
                              [Export(typeof(UserControl))]
                              public class Widget1 : UserControl
                              {
                                            public string Message {
                                              get{return(string) Button.Content;}
                                          set{Button.Content=value;}
                                       }
                              }




 Widget1                     Export
Extensibility
MEF – Managed Extensibility Framework

    Import it - Metadata
                           [Export(typeof(UserControl))]
                           public class MainPage: UserControl
                           {
                                        [ImportMany(typeof(UserControl))]
                                        public IEnumerable<Lazy<UserControl, IWidgetMetadata>
                                        {
                                           get;set;
                                        }
                           }




     Main
                              ImportMany
     Page
MEF – Managed Extensibility Framework
Agenda
 Introduction
 Recommended Pattern
 Communications
 Beyond the Browser
 Extensibility
 Q&A
Nuno Filipe Godinho
Independent Consultant

Mail:   Nuno.Godinho@sapo.pt
        Nuno.Godinho@itech4all.com

More Related Content

What's hot

ALM Integration in a Web 2.0 World
ALM Integration in a Web 2.0 WorldALM Integration in a Web 2.0 World
ALM Integration in a Web 2.0 Worldoslc
 
Dev Days Unified Communications Development
Dev Days  Unified  Communications  DevelopmentDev Days  Unified  Communications  Development
Dev Days Unified Communications DevelopmentMatthijs Hoekstra
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax Worldrajivmordani
 
MPLS 2010: Network Enabled Cloud and Service Models
MPLS 2010: Network Enabled Cloud and Service ModelsMPLS 2010: Network Enabled Cloud and Service Models
MPLS 2010: Network Enabled Cloud and Service ModelsCisco Service Provider
 
Building tomorrow's web with today's tools
Building tomorrow's web with today's toolsBuilding tomorrow's web with today's tools
Building tomorrow's web with today's toolsJames Pearce
 
SOA Summer School: Best of SOA Summer School – Encore Session
SOA Summer School: Best of SOA Summer School – Encore Session SOA Summer School: Best of SOA Summer School – Encore Session
SOA Summer School: Best of SOA Summer School – Encore Session WSO2
 
adrian coyler open tour keynote
adrian coyler open tour keynoteadrian coyler open tour keynote
adrian coyler open tour keynotemarklucovsky
 
GlassFish Mobility Platform - Hans Hrasna
GlassFish Mobility Platform - Hans HrasnaGlassFish Mobility Platform - Hans Hrasna
GlassFish Mobility Platform - Hans HrasnaEduardo Pelegri-Llopart
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2day
 
Building and Managing Cloud Applications and Infrastructure
Building and Managing Cloud Applications and InfrastructureBuilding and Managing Cloud Applications and Infrastructure
Building and Managing Cloud Applications and InfrastructureDarren Cunningham
 
How to Choose A SOA Gateway from Layer 7
How to Choose A SOA Gateway from Layer 7How to Choose A SOA Gateway from Layer 7
How to Choose A SOA Gateway from Layer 7CA API Management
 
Data in your SOA: From SQL to NoSQL and Beyond
Data in your SOA: From SQL to NoSQL and BeyondData in your SOA: From SQL to NoSQL and Beyond
Data in your SOA: From SQL to NoSQL and BeyondWSO2
 
3 12-2013 performance-testing_service_virtualization
3 12-2013 performance-testing_service_virtualization3 12-2013 performance-testing_service_virtualization
3 12-2013 performance-testing_service_virtualizationsilviasiqueirahp
 
Viestinnän seminaari 8.11.2012 / Exchange
Viestinnän seminaari 8.11.2012 / ExchangeViestinnän seminaari 8.11.2012 / Exchange
Viestinnän seminaari 8.11.2012 / ExchangeSalcom Group
 

What's hot (20)

ALM Integration in a Web 2.0 World
ALM Integration in a Web 2.0 WorldALM Integration in a Web 2.0 World
ALM Integration in a Web 2.0 World
 
Mxim Framework
Mxim FrameworkMxim Framework
Mxim Framework
 
Dev Days Unified Communications Development
Dev Days  Unified  Communications  DevelopmentDev Days  Unified  Communications  Development
Dev Days Unified Communications Development
 
Cloud Computing2
Cloud Computing2Cloud Computing2
Cloud Computing2
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax World
 
MPLS 2010: Network Enabled Cloud and Service Models
MPLS 2010: Network Enabled Cloud and Service ModelsMPLS 2010: Network Enabled Cloud and Service Models
MPLS 2010: Network Enabled Cloud and Service Models
 
Web Application Solutions
Web Application SolutionsWeb Application Solutions
Web Application Solutions
 
Building tomorrow's web with today's tools
Building tomorrow's web with today's toolsBuilding tomorrow's web with today's tools
Building tomorrow's web with today's tools
 
SOA Summer School: Best of SOA Summer School – Encore Session
SOA Summer School: Best of SOA Summer School – Encore Session SOA Summer School: Best of SOA Summer School – Encore Session
SOA Summer School: Best of SOA Summer School – Encore Session
 
adrian coyler open tour keynote
adrian coyler open tour keynoteadrian coyler open tour keynote
adrian coyler open tour keynote
 
GlassFish Mobility Platform - Hans Hrasna
GlassFish Mobility Platform - Hans HrasnaGlassFish Mobility Platform - Hans Hrasna
GlassFish Mobility Platform - Hans Hrasna
 
Nasim Ahmad
Nasim AhmadNasim Ahmad
Nasim Ahmad
 
Keynote Day 1 2009
Keynote Day 1 2009Keynote Day 1 2009
Keynote Day 1 2009
 
Wc Mand Connectors2
Wc Mand Connectors2Wc Mand Connectors2
Wc Mand Connectors2
 
Building and Managing Cloud Applications and Infrastructure
Building and Managing Cloud Applications and InfrastructureBuilding and Managing Cloud Applications and Infrastructure
Building and Managing Cloud Applications and Infrastructure
 
Introduction inbox v2.0
Introduction inbox v2.0Introduction inbox v2.0
Introduction inbox v2.0
 
How to Choose A SOA Gateway from Layer 7
How to Choose A SOA Gateway from Layer 7How to Choose A SOA Gateway from Layer 7
How to Choose A SOA Gateway from Layer 7
 
Data in your SOA: From SQL to NoSQL and Beyond
Data in your SOA: From SQL to NoSQL and BeyondData in your SOA: From SQL to NoSQL and Beyond
Data in your SOA: From SQL to NoSQL and Beyond
 
3 12-2013 performance-testing_service_virtualization
3 12-2013 performance-testing_service_virtualization3 12-2013 performance-testing_service_virtualization
3 12-2013 performance-testing_service_virtualization
 
Viestinnän seminaari 8.11.2012 / Exchange
Viestinnän seminaari 8.11.2012 / ExchangeViestinnän seminaari 8.11.2012 / Exchange
Viestinnän seminaari 8.11.2012 / Exchange
 

Viewers also liked

PRICKIMAGE draft presentation
PRICKIMAGE draft presentationPRICKIMAGE draft presentation
PRICKIMAGE draft presentationEnda P Guinan
 
Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010joaogoncalves
 
Wikis for everyone
Wikis for everyoneWikis for everyone
Wikis for everyonedpmackenzie
 
How NUI Maynooth Supports Learners with Disabilities
How NUI Maynooth Supports Learners with DisabilitiesHow NUI Maynooth Supports Learners with Disabilities
How NUI Maynooth Supports Learners with DisabilitiesEnda P Guinan
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 

Viewers also liked (7)

PRICKIMAGE draft presentation
PRICKIMAGE draft presentationPRICKIMAGE draft presentation
PRICKIMAGE draft presentation
 
Mutual funds
Mutual fundsMutual funds
Mutual funds
 
Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010Ria Event Lisbon Jan 2010
Ria Event Lisbon Jan 2010
 
Luis Martins
Luis MartinsLuis Martins
Luis Martins
 
Wikis for everyone
Wikis for everyoneWikis for everyone
Wikis for everyone
 
How NUI Maynooth Supports Learners with Disabilities
How NUI Maynooth Supports Learners with DisabilitiesHow NUI Maynooth Supports Learners with Disabilities
How NUI Maynooth Supports Learners with Disabilities
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 

Similar to Nuno Godinho

Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...rsnarayanan
 
Introduction to WCF RIA Services for Silverlight 4 Developers
Introduction to WCF RIA Services for Silverlight 4 DevelopersIntroduction to WCF RIA Services for Silverlight 4 Developers
Introduction to WCF RIA Services for Silverlight 4 DevelopersSaltmarch Media
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworksukdpe
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...goodfriday
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
SwiftKnowledge Multitenancy
SwiftKnowledge MultitenancySwiftKnowledge Multitenancy
SwiftKnowledge MultitenancyPivotLogix
 
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...rsnarayanan
 
Soa204 Kawasaki Final
Soa204 Kawasaki FinalSoa204 Kawasaki Final
Soa204 Kawasaki FinalAnush Kumar
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search EngineMustata Bogdan
 
Windows Azure For Architects
Windows Azure For ArchitectsWindows Azure For Architects
Windows Azure For ArchitectsAnko Duizer
 
Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloudumityalcinalp
 
Unit 3-SOA Technologies
Unit 3-SOA TechnologiesUnit 3-SOA Technologies
Unit 3-SOA Technologiesssuser3a47cb
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to findDan Diephouse
 
Azure Services Platform Oc Event Ned
Azure Services Platform Oc Event NedAzure Services Platform Oc Event Ned
Azure Services Platform Oc Event NedWes Yanaga
 
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!goodfriday
 

Similar to Nuno Godinho (20)

Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
 
Introduction to WCF RIA Services for Silverlight 4 Developers
Introduction to WCF RIA Services for Silverlight 4 DevelopersIntroduction to WCF RIA Services for Silverlight 4 Developers
Introduction to WCF RIA Services for Silverlight 4 Developers
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
soa1.ppt
soa1.pptsoa1.ppt
soa1.ppt
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
SwiftKnowledge Multitenancy
SwiftKnowledge MultitenancySwiftKnowledge Multitenancy
SwiftKnowledge Multitenancy
 
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
Build Mission Critical Applications On The Microsoft Platform Using Eclipse J...
 
Application Migration & Enhancement
Application Migration & EnhancementApplication Migration & Enhancement
Application Migration & Enhancement
 
Soa204 Kawasaki Final
Soa204 Kawasaki FinalSoa204 Kawasaki Final
Soa204 Kawasaki Final
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search Engine
 
Windows Azure For Architects
Windows Azure For ArchitectsWindows Azure For Architects
Windows Azure For Architects
 
Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloud
 
Unit 3-SOA Technologies
Unit 3-SOA TechnologiesUnit 3-SOA Technologies
Unit 3-SOA Technologies
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
 
Azure Services Platform Oc Event Ned
Azure Services Platform Oc Event NedAzure Services Platform Oc Event Ned
Azure Services Platform Oc Event Ned
 
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
Build Applications on the Microsoft Platform Using Eclipse, Java, Ruby and PHP!
 
Cloud & The Mobile Stack
Cloud & The Mobile StackCloud & The Mobile Stack
Cloud & The Mobile Stack
 

Recently uploaded

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Nuno Godinho

  • 1. Developing Line-of-Business Applications with Microsoft Silverlight Nuno Godinho Nuno.Godinho@sapo.pt
  • 2. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 3. About Me Nuno Filipe Godinho Independent Consultant Mail: Nuno.Godinho@sapo.pt Nuno.Godinho@itech4all.com Blogs: http://pontonetpt.com/blogs/nunogodinho http://xamlpt.com/blogs/nunogodinho http://weblogs.asp.net/nunogodinho http://msmvps.org/blogs/nunogodinho Twitter: @NunoGodinho
  • 4. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 5. Introduction Problem Statement  Problems ◦ N-Tier ◦ Controls ◦ Rich Text Support ◦ Multi-language Support ◦ Customer Devices Interaction ◦ Communications ◦ Extensibility ◦ Offline Support ◦ Interoperability
  • 6. Introduction Challenges using N-Tier applications  LoB applications use data that needs to flow across tiers  Created and used through basic CRUD operations  In an internet application, there is a trust boundary between the client and the mid-tier server  Important to have a well defined and secured resources that are available to the client tier and also what operations are permitted
  • 7. Introduction Challenges using N-Tier applications  The validation needs to run on Client and On Server as well as on Mid-Tiers  Common validation across the tiers  Services that may be shared with other applications
  • 8.
  • 9. Introduction Vision and Goals  Simplify RIA-style application development ◦ n-tier is hard, and un-natural ◦ Focus on data-driven apps  Bring ASP.NET-style productivity to RIA development ◦ Building blocks for data, security, etc. ◦ Focus on scenarios
  • 10. Introduction Value Propositions  Focus on data in an end-to-end manner  A unified story for client and server development  A prescriptive framework that targets key scenarios, and leads the common developer to a pit of success
  • 11. Introduction Value Propositions  Simplify application development across tiers and trust boundary ◦ Provides a set of tools to build the multiple tiers of an application together ◦ Application logic remains aware of tier and trust boundaries ◦ Uses the end-to-end flow of data and metadata described earlier ◦ Code generation and shared code  Enhance the experience by providing multiple choices for sharing logic while respecting tier and trust boundaries
  • 12. Introduction A Unified Story for Client and Server  Client is an extension of the server Service  A single logical application Rich Internet Application Browser Application Presentation App Data Access HTML Network Logic Logic Layer DB Services Other Applications
  • 13. Introdution Value Propositions  Define and support a pattern for exposing a set of operations on resources  DomainService ◦ Define a set of operations on resources  Framework and Tools ◦ Collaborate to generate code for a corresponding client-tier ◦ Services for authentication and user settings can be used out-of-the box
  • 14. Introduction A Prescriptive Pattern Services Rich Internet Application Presentation Domain Network Domain App Data Access Logic Context Service Logic Layer Under the covers infrastructure DB
  • 15. Introduction A Single Pattern that Scales and Grows  Support for multiple presentation tiers and data access technologies .NET Clients Databases Silverlight, WPF ADO.NET, ORMs (LTS, EF, …) Standards Clients JavaScript CLR App Lists/Objects Logic Repository Server (nHibernate, …) Rendering HTML, SEO, Printing, … Services REST/SOAP SOAP, Unit Test (Azure, …) Services XML, Code JSON, WCF Binary
  • 17. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 19. Recommended Pattern MVVM  Why? ◦ Separation of concerns ◦ Better Workflow between Developer and Designer ◦ Easier Testability  Why not MVC? ◦ We need to have access to the Code-Behind and MVC doesn’t support that, only Code-Behind Pattern does, but doesn’t delivers easy separation of concerns
  • 20. Recommended Pattern MVVM  Display data in Controls  UI Friendly Entities, UI State, Actions  Entities representing data
  • 21. MVVM Implementation in Silverlight
  • 22. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 23. Communication Unified Programming Model ASMX & WSE .NET Remoting Interop Extensibility with other Location Platforms & WS-* transparency Attribute- Message- Based Oriented Programming REST / HTTP Programming Programming Enterprise System.Messaging Services HTTP Services
  • 25. Communications WCF RIA Services  Framework, tools and services with prescriptive pattern for n- tier applications Trust Boundary Web Service Data Access App App View Layer Logic Logic (DAL) Database
  • 26. Communications WCF RIA Services  Design-time view Solution (Application) Server project Client project Entities Entities Build, reflect Data & code-gen Views Access Domain Domain Layer Service Context (DAL)
  • 27. Communications Run-time view (entity lifecycle) Application Web server Silverlight Query Load Data Entities Domain Entities Access Domain Views Layer Service Context Submit Submit (DAL) Results Results
  • 28. Communications Services  Authentication  Roles  User profile  All integrate w/ ASP.NET infrastructure
  • 30. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 31. Beyond the Browser  Out-of-Browser Applications  Trusted Applications
  • 32. Beyond the Browser Out-of-Browser – Already on Silverlight 3  Configuration Based  AppManifest.xml  Can be enabled in an existing application without rebuilding  Install option on its right-click menu  Can run without a network connection  You can implement network detection and provide offline support when a connection is unavailable
  • 33. Beyond the Browser Out-of-Browser  Windowing API  WebBrowser control  HtmlBrush  Notification (aka. Toast)
  • 34. Beyond the Browser Trusted Applications  OOB with elevated privileges  COM Interop in Windows  File system access  Cross-domain networking access  Full keyboard support in Full-Screen Mode
  • 36. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 37. Extensibility  Prism v2  MEF – Managed Extensibility Framework
  • 38. Extensibility Prism v2  Prism is a set of options  Use what you want and ignore the rest ◦ Example:  Choose Modules and Commanding, but ignore Event Aggregation and Regions
  • 39. Extensibility Prism v2  Prism Technical Concepts
  • 40. Extensibility MEF – Managed Extensibility Framework A new library in Silverlight 4 for building applications that can be incrementally extended.
  • 41. Extensibility MEF – Managed Extensibility Framework An Application is built of parts.
  • 42. Extensibility MEF – Managed Extensibility Framework Export it. Import it. Compose it.
  • 43.
  • 44. Extensibility MEF – Managed Extensibility Framework  Export it - Metadata [ExportMetadata(“Location”,Location.Top)] [Export(typeof(UserControl))] public class Widget1 : UserControl { public string Message { get{return(string) Button.Content;} set{Button.Content=value;} } } Widget1 Export
  • 45. Extensibility MEF – Managed Extensibility Framework  Import it - Metadata [Export(typeof(UserControl))] public class MainPage: UserControl { [ImportMany(typeof(UserControl))] public IEnumerable<Lazy<UserControl, IWidgetMetadata> { get;set; } } Main ImportMany Page
  • 46. MEF – Managed Extensibility Framework
  • 47. Agenda  Introduction  Recommended Pattern  Communications  Beyond the Browser  Extensibility  Q&A
  • 48.
  • 49. Nuno Filipe Godinho Independent Consultant Mail: Nuno.Godinho@sapo.pt Nuno.Godinho@itech4all.com