SlideShare ist ein Scribd-Unternehmen logo
1 von 182
Downloaden Sie, um offline zu lesen
Next Generation
Line of Business (LOB) Applications



Simon Guest
Senior Director, Technical Strategy
Microsoft Corporation
Introduction
My First LOB Application
Introduction
My First LOB Application




                    Back to 1994
Introduction
My First LOB Application




             My First LOB Application
Introduction
My First LOB Application
Introduction
My First LOB Application




   What would happen if I tried to write
              this today?
Introduction
Defining a LOB Application
Introduction
Defining a LOB Application




 Wikipedia: A line-of-business application is one of the
  set of critical computer applications that are vital to
                   running an enterprise
Introduction
Defining a LOB Application




      The following 5 characteristics:
Introduction
Defining a LOB Application




 Interactive: LOB Applications are interactive by nature.
    Data is entered, and results/reports are returned.
Introduction
Defining a LOB Application




 Composable: LOB applications tend to have one or
more parts that compose the user interface. These parts
       may interact with each other as needed.
Introduction
Defining a LOB Application




Data Driven: LOB applications are data intensive. Many
   live “close” to the database, and access frequently.
Introduction
Defining a LOB Application




Integrated: LOB applications often integrate with other
  systems. These can be a variety of data feeds, either
          within or outside the organization.
Introduction
Defining a LOB Application




 Extensible: LOB applications are extensible by nature.
They often support add-ons or plug-ins used to tailor an
        application or make deployment easier.
Session Objectives
What are you going to get from this session?
Session Objectives
What are you going to get from this session?


                       Explore each characteristic to help
                       you apply to your own application


                      Give you the details of what’s new
                            in each of these areas


                       Show through demos how we are
                        supporting these new features
Interactive
Entering data and getting results
Interactive
Entering data and getting results



                          Back to 1994



 “How do I get this TAB order working?”
Interactive
Entering data and getting results



                            Since then...

   Better forms, many controls, better
 output, great reporting solutions, voice
             command, etc.
Interactive
Entering data and getting results



                          How about now?

        What am I excited about now?

                NUI (Natural User Input),
                   specifically touch
Interactive
Entering data and getting results




 Is touch going to replace the mouse
            and keyboard?
Interactive
Entering data and getting results




    Touch augments the Windows
experience. Every input method has it’s
  pros and cons – no input method is
         ideal for everything.
Interactive
Entering data and getting results




     Are we really seeing devices that
             support touch?
Interactive
Entering data and getting results


                                 Device Availability




      HP TouchSmart IQ504 PC                  DELL Latitude XT2
      (Intel Core 2 Duo T5750)                (Intel Core 2 Duo SU9400)
Interactive
Entering data and getting results




Is touch supported in Windows 7?
Interactive
Entering data and getting results
                       Gesture                       Single    Multi
    Gesture                                 Action
                        Action                       Touch    Touch
                    Press on target, tap
  Press and Tap      with other finger
                                                               Yes

                        Two fingers
      Zoom            apart/together
                                                               Yes

                      Two fingers in
      Rotate        opposing direction
                                                               Yes


 Two Finger Tap       Tap two fingers                          Yes

                   Wait for blue ring and
  Press and Hold          release
                                                      Yes      Yes


      Flicks        Quick drag gestures               Yes      Yes
Interactive
Entering data and getting results




                  What you get for free
         Panning and Zooming, Right Click Gestures
Interactive
Entering data and getting results




               Minimal Incremental Work
    Use WM_GESTURE Win32 API to trap gesture
      notifications, handle pan, zoom, and rotate
Interactive
Entering data and getting results




                 Best Experience
Use WM_TOUCH Win32 API to handle raw touch data,
       manipulation, and inertia processors
Interactive
Entering data and getting results




      Does this relate to “Surface”?
Interactive
Entering data and getting results


                                                                 Surface
                                                                Application
                         Windows Forms           WPF
          Native           Application         Application
                                                               Surface SDK
          Win32                                              Multi-Touch Controls
        Application

                        Managed Wrapper
                                              WPF 3.5 SP1        WPF 3.5
                          And Interop


                            Windows 7                            Surface
                          (Multi-Touch API)                      Hardware
Interactive
Entering data and getting results


                                                                        Surface
                                                                       Application
                         Windows Forms          WPF
          Native           Application        Application
                                                                      Surface SDK
          Win32                                                       Specific Controls
        Application

                        Managed Wrapper                     WPF 4.0
                          And Interop                 Multi-Touch Controls


                            Windows 7                                    Surface
                          (Multi-Touch API)                              Hardware
Interactive
Entering data and getting results




How about other input mechanisms?
Interactive
Entering data and getting results




   Many other sensors exist today – but
            can be difficult…
Interactive
Entering data and getting results




  e.g. to use a GPS, your application has
            to be device specific
Interactive
Entering data and getting results




              How is this supported?
Interactive
Entering data and getting results




        Windows 7 Sensor and Location
                  Platform
Interactive
Entering data and getting results

     Sensor Type        Sensor Placement                                Typical Use
     GPS                Built into, or attached to, computer            Location and orientation

     Accelerometer      Built into computer or attached to computer     Motion and orientation

     Proximity          Built in or nearby to the computer              Presence and spatial awareness

     Light              Built in, nearby, or remote                     Ambient light conditions

     RFID               Built into the computer or attached to person   Identification of physical items

     Compass            Attached to person                              Orientation

     Camera             Built into the computer or attached             Recording, object identification, facial
                                                                        recognition

     Microphone         Built into the computer or attached             Ambient noise conditions

     Temperature        Built into the computer or remote               Indoor/Outdoor Ambient Temperature,
                                                                        cooking temperature

     Moisture           Remote                                          Detection of water leaks, garden sprinkler
                                                                        systems

     Motion Detector    Built into the computer or remote               Security systems, presense

     Traffic            Remote, usually public                          Travel time predictions

     Weather station    Remote, usually public                          Weather conditions and predictions
Interactive
Entering data and getting results




   Single API call to answer questions –
            e.g. “Where am I?”
Interactive
Entering data and getting results




                How does this work?
Interactive
Entering data and getting results

                                    Your Application


                                     Location API

                                        Sensor API


                         Sensor Class                Sensor Class
                          Extension                   Extension

                     UMDF Sensor Driver        UMDF Sensor Driver
Interactive
Entering data and getting results




    That covers input, but how about
           “getting stuff out”?
Interactive
Entering data and getting results
 Vendor               Examples of Controls Offered                                Link
 Actipro WPF Studio   Ribbon, Bar Code, Wizard, DateTime, Calendar, Transition,   http://www.actiprosoftware.com
                      Color Selection, Transition Effects Library
 Blendables           Zoombox, ElementSnapshot, Carousel,                         http://www.blendables.com
                      ChromelessWindow, DragAndDrop, Pie Chart, OS Check,
                      Timeline Panel
 ComponentOne         Schedule, Month Calendar, Chart, Grid                       http://www.componentone.com
 DevComponents        Office UI, Window Management                                http://devcomponents.com
 Divelements          Office UI, Window Management                                http://divelements.com/
 Infragistics         Carousel, DataPresenter, Grid, Masked Edit, DateTimeEdit,   http://www.infragistics.com
                      CurrencyEdit, NumericEdit, CheckEdit, TextEdit,
                      ThemePacks, Chart
 Mindscape            PropertyGrid, TextBoxes, DropDownPickers                    http://www.mindscape.com.nz
 NeoDynamic           BarCode                                                     http://www.neodynamic.com
 Orbifold             Diagraming tool                                             http://www.orbifold.com
 SoftwareFx           Charting                                                    http://www.softwarefx.com
 SyncFusion           Docking, Office UI, GroupBar, Charting                      http://www.syncfusion.com
 Telerik              RADControls Suite (Calendar, Carousels, Gauges, etc.)       http://www.telerik.com
 Xceed                Datagrid                                                    http://www.xceed.com
Interactive
Entering data and getting results
 Name              Type                                                Link
 iTextSharp        Generate PDF files on the fly                       http://csharp-source.net/open-
                                                                       source/pdf-libraries/itextsharp
 Report.NET        PDF document creation from ADO.NET data source      http://csharp-source.net/open-
                                                                       source/pdf-libraries/report.net
 PDF Sharp         PDF creation including GDI+ like drawing routines   http://csharp-source.net/open-
                                                                       source/pdf-libraries/pdfsharp
 SharpPDF          PDF creation for .NET 1.1                           http://csharp-source.net/open-
                                                                       source/pdf-libraries/sharppdf
 PDFjet            Dynamic PDF generation from Java or .NET            http://csharp-source.net/open-
                                                                       source/pdf-libraries/pdfjet-open-
                                                                       source-edition
 ASP.NET FO PDF    Similar to ASP.NET Server Controls, written in C#   http://csharp-source.net/open-
                                                                       source/pdf-libraries/asp.net-fo-pdf
 PDF Clown         C# 2.0 library for reading, writing PDF files       http://csharp-source.net/open-
                                                                       source/pdf-libraries/pdf-clown
Interactive
Entering data and getting results




   But, what if I want to create Office
               documents?
Interactive
Entering data and getting results




                “Old way” is to use the
               Application Object Model
Interactive
Entering data and getting results




                                    …but:

         Need local copy of Office installed on server…
                        Does not scale…
        Try running automation on 100s of documents…
                Dialog boxes “stop” automation…
      Have to reboot application on server every X hours…
Interactive
Entering data and getting results




                    Open XML SDK 2.0
Interactive
Entering data and getting results




 How does the Open XML SDK work?
Interactive
Entering data and getting results
                                       Developers see a
                                    zip file with XML parts
                                          File Container
    Users see a
     single file                       Document properties
                                            Comments
                                    WordML/SpreadsheetML/etc.
                                       Custom Defined XML
                                       Images, video, sounds
   MyDoc.docx
                                              Styles
                                              Charts
Interactive
Entering data and getting results




                Demo - Using OpenXML SDK
               to read/write Word Documents
Interactive
Entering data and getting results




  Talking about speeding things up…
       How about the processor?
Interactive
Entering data and getting results


                                                                                                        Sun’s Surface
                    10,000
     Power Density (W/cm2)




                                                                                               Rocket Nozzle
                         1,000

                                                                                  Nuclear Reactor

                             100


                                                8086                 Hot Plate
                              10
                                     8008                    386
                                                       286                  486
                                         8080
                              1

                                   ‘70             ‘80               ‘90                 ‘00                     ‘10

                                                                   Intel Developer Forum, Spring 2004 - Pat Gelsinger
Interactive
Entering data and getting results




Isn’t developing parallel applications
              difficult?
Interactive
Entering data and getting results




          Getting easier, especially with
         .NET 4.0 and Visual Studio 2010
Interactive
Entering data and getting results


                                                 PLINQ
 Parallel Debugger
                                          Task Parallel Library


                                        Concurrency Runtime
     Profiler
   Concurrency
                                               Thread Pool
     Analysis
                                    (Task Scheduler and Resource Manager)


                                                 Threads

                                          Operating System
Interactive
Entering data and getting results


                                    PLINQ
                   Data Partitioning, Operator Types, Merging


                            Task Parallel Library
          Loop replacements, Imperative Task Parallelism, Scheduling

                         Concurrency Runtime
    Thread-safe Collections, Synchronization Types, Coordination Types
Interactive
  Entering data and getting results




Demo - Running the Open SDK across multiple cores
Interactive
Entering data and getting results




        What do we take away from this
                  section?
Interactive
Takeaways


                NUI is, and will, enhance LOB
                         applications


                Getting results and reports is
                      becoming easier


              Taking advantage of multi-core is
                        within reach
Composable
Designing and composing the user interface
Composable
Designing and composing the user interface



                        Back to 1994


   With my old application, testing was
   “giving the application to the user”
Composable
Designing and composing the user interface



                          Since then...


      Increased focus on test driven
    development (TDD) and unit testing
Composable
Designing and composing the user interface



                        How about now?

       What am I excited about now?

  A renewed effort on making UIs more
        composable and testable
Composable
Designing and composing the user interface




Hasn’t it been difficult to test the UI?
Composable
Designing and composing the user interface




    Patterns, such as MVC, help address
               these concerns
Composable
Designing and composing the user interface




              But what should I use?
              MVC, MVP, PM, MVVM?
Composable
Designing and composing the user interface




  MVC - Designed to separate concerns
    for request/response type UIs
Composable
  Designing and composing the user interface

  MVC (Model View Controller)

                                      Add a new customer
                                         to the model
                                                           Model


Please add a new                                              Triggers update
  customer…
                     Controller                                 of the view


                                         Controller
                                          Reloads          View
                                           View
Composable
Designing and composing the user interface




        MVC is a great pattern for Web
                 Applications
Composable
   Designing and composing the user interface

   MVC (Model View Controller)
                                          Add a new customer
                                             to the model      Model
http://localhost/customer/add (POST)


Please add a new                                                  Reads number of
  customer…
                      Controller                                     customers


“Done - you now have 20 customers”        Controller
                                           Reloads             View
                                            View
Composable
Designing and composing the user interface




                         ASP.NET MVC

  Does not use ViewState or Server Based Forms
       Extendable Front Controller pattern
            Project Support for TDD
Composable
Designing and composing the user interface




                  ASP.NET Web Forms

    ViewState to persist state across many components
                  Page Controller Pattern
         Less complex, but more difficult to test
Composable
Designing and composing the user interface




 Windows applications are less about
request/response, and more interactive
Composable
  Designing and composing the user interface

  MVP (Model View Presenter)

                                     Request                Presenter
                                      From                   Updates
                                       View                   Model

Please add a new
  customer…
                         View                   Presenter               Model

                                    Presenter                 Model
                                     Updates                Confirms
                                      View                   Change
Composable
Designing and composing the user interface




   Modified version of MVP (Fowler) to
  handle data binding and code behind
Composable
  Designing and composing the user interface

  PM (PresentationModel)

                                     Request                     Presenter
                                      From                        Updates
                                       View                        Model

Please add a new                                  Presentation
  customer…
                         View                        Model
                                                                             Model

                                    DataBinding                    Model
                                                                 Confirms
                                                                  Change
Composable
Designing and composing the user interface




  MVP and PM are patterns that can be
  used with Windows Forms, WPF, and
              Silverlight
Composable
  Designing and composing the user interface

  PM (PresentationModel)

                                         Request                   Presenter
                                          From                      Updates
Fill out fields and click on “Add” button View                       Model

Please add a new                                    Presentation
  customer…
                           View                        Model
                                                                               Model

 Data Driven field for #              DataBinding                    Model
     of customers                                                  Confirms
     now in system                                                  Change
Composable
Designing and composing the user interface




 However, XAML also supports any item
 to be data bound to any other item in
            either direction
Composable
Designing and composing the user interface



                      Events in XAML bound to objects
                          (vs. having code behind)

                       e.g. button binds to object.add()


                      XAML                      Object

                     Objects bind to XAML visual elements

                   e.g. object.customername binds to XAML
                                    Editbox
Composable
  Designing and composing the user interface

  MVVM (Model View ViewModel)

                                                              ViewModel
                                                               Updates
                                                                Model

Please add a new
  customer…
                         View                     ViewModel               Model

                                    DataBinding                 Model
                                                              Confirms
                                                               Change
Composable
Designing and composing the user interface




     MVVM can be realized in WPF and
        Silverlight through PRISM
Composable
Designing and composing the user interface

                                          Host
                                  Shell
                                                                 Shell
                                 Region                        Presenter



                                      Modules


                                      Validation
                       View                        ViewModel


                                                     Model
                       Styles / Themes

                                          Module
                   Shared Styles / Themes
Composable
Designing and composing the user interface




    You mention WPF and Silverlight?
    What’s new when it comes to LOB
             applications?
Composable
Designing and composing the user interface


                                 WPF 4.0

                         Windows 7 Support
                       MultiTouch, Taskbar, DWrite
                             Fundamentals
  Full trust XBAP, text rendering, data binding for DynamicObject,
                         WPF Ribbon controls
                          Design Experience
Improved in Visual Studio and lessons learned from implementing
                      Visual Studio in WPF
Composable
Designing and composing the user interface


                             Silverlight 3.0

                    RIA Productivity
   Improved controls, SEO enhancements, accessibility
                     Out of Browser
    Both Win and Mac, isolated storage, auto update
                     Design Tooling
  Expression Blend, SketchFlow, TFS integration, sample
                          data
Composable
Designing and composing the user interface




       What do we take away from this
                 section?
Composable
Takeaways


            Put some time in learning MVC, MVP,
                        PM, MVVM


              MVVM can be implemented in
             Silverlight and WPF using PRISM


              New features such as Silverlight
                OOB for LOB applications
Data Driven
Object relational mapping and exposing across tiers
Data Driven
Object relational mapping and exposing across tiers



                         Back to 1994


   Accessing data was Direct SQL into a
           Dbase/Paradox DB
Data Driven
Object relational mapping and exposing across tiers



                           Since then...


  A million different ORMs, DALs, DTOs,
     and other ways to access data
Data Driven
Object relational mapping and exposing across tiers



                         How about now?

       What am I excited about now?

 Data Access becoming a more integral
        part of the application
Data Driven
Object relational mapping and exposing across tiers




    What do you mean “integral”?
Data Driven
Object relational mapping and exposing across tiers




                     LinqToSQL (a.k.a. L2S)
Data Driven
Object relational mapping and exposing across tiers




                        Objects
                        (Classes)                     Database

                        Generate                        Take
                       IEnumerable                     Existing
                          Classes                      Schema
                           Using
                         Designer
Data Driven
Object relational mapping and exposing across tiers




DataClasses1DataContext ctx = new DataClasses1DataContext();

var customerNames = from c in ctx.Customers
                           select c.ContactName;

foreach (string name in customerNames)
{…}
Data Driven
  Object relational mapping and exposing across tiers



DataClasses1DataContext ctx = new DataClasses1DataContext();

var customerNames = from c in ctx.Customers
                           where c.ContactName.StartsWith(“A”)
                           select c.ContactName;

foreach (string name in customerNames)
{…}
Data Driven
  Object relational mapping and exposing across tiers


DataClasses1DataContext ctx = new DataClasses1DataContext();

var customerNames = from c in ctx.Customers
                           where c.ContactName.StartsWith(“A”)
                           orderby c.ContactName
                           select c.ContactName;

foreach (string name in customerNames)
{…}
Data Driven
  Object relational mapping and exposing across tiers


DataClasses1DataContext ctx = new DataClasses1DataContext();

var customerNames = (from c in ctx.Customers
                           where c.ContactName.StartsWith(“A”)
                           orderby c.ContactName
                           select c.ContactName).Take(5);

foreach (string name in customerNames)
{…}
Data Driven
Object relational mapping and exposing across tiers




                  Entity Framework
            (introduced in .NET 3.5 SP1)
Data Driven
Object relational mapping and exposing across tiers

Database First Entity Creation


          Objects                      Model
          (Classes)                   (EDMX)          Database

           Generate                   Generate          Take
           Objects                     Model           Existing
            From                       From            Schema
            Model                     Database
Data Driven
Object relational mapping and exposing across tiers




           Wasn’t there some
    “constructive feedback” on EF? 
Data Driven
Object relational mapping and exposing across tiers




                      What did we hear?

                   Persistence Ignorance
                           N-Tier
                    Developer Friction
Data Driven
Object relational mapping and exposing across tiers


                           New for EF 4.0
                    Automatic Pluralization
                           Based on API
                    T4 Template Generation
                      Instead of CodeDom
                  3 Ways of Thinking of ORM
               Database first, model first, code only
Data Driven
Object relational mapping and exposing across tiers

Database First Entity Creation
                                                      Start Here!


          Objects                      Model
          (Classes)                   (EDMX)          Database

           Generate                   Generate          Take
           Objects                     Model           Existing
            From                       From            Schema
            Model                     Database
Data Driven
Object relational mapping and exposing across tiers

Model First Entity Creation
                                     Start Here!


          Objects                      Model
          (Classes)                   (EDMX)          Database

           Generate                    Create         Generate
           Objects                     Model           Schema
            From                       Using            From
            Model                     Designer          Model
Data Driven
Object relational mapping and exposing across tiers

Code Only Entity Creation
          Start Here!


          Objects                      Model
          (Classes)                   (EDMX)          Database

             Write                    Create          Generate
            Objects                    Model           Schema
                                       From             From
                                      Objects           Model
Data Driven
Object relational mapping and exposing across tiers




        Demo - Code First Approach in EF 4.0
Data Driven
Object relational mapping and exposing across tiers




 I understand, but how do I pass that
           data across tiers?
Data Driven
Object relational mapping and exposing across tiers




                ADO.NET Data Services
             (formerly known as Astoria)
Data Driven
Object relational mapping and exposing across tiers

             ATOM/JSON
                                 Your Application            …
              consumer




                                                 REST endpoint exposed over model

                              ADO.NET Data Services

                                       Model


                                     Database
Data Driven
Object relational mapping and exposing across tiers




    Great for exposing data models to a
              variety of clients
Data Driven
Object relational mapping and exposing across tiers




I’m fed up of writing plumbing code.
          What’s new here?
Data Driven
Object relational mapping and exposing across tiers




                     .NET RIA Services
Data Driven
Object relational mapping and exposing across tiers




        Goal: To boost productivity for
        developers looking to build RIA
                 applications
Data Driven
Object relational mapping and exposing across tiers

                                    Your Silverlight
                                      Application
                 .NET RIA
                 Services           Consume Data
                                     Across Tier


                                                         Is this the most productive
                                                              use of your time?


                               Expose Data Across Tier

                                         Model


                                       Database
Data Driven
Object relational mapping and exposing across tiers




     Single solution to remove effort to
         write an n-tier application.
       Object lifecycle, data validation,
                authentication.
Data Driven
Object relational mapping and exposing across tiers




                   Demo - .NET RIA Services
Data Driven
Object relational mapping and exposing across tiers




        What do we take away from this
                  section?
Data Driven
Takeaways


              Is your LOB application truly data
               driven? Is data access integral?


              How are you exposing data across
                   an n-tier application?


              What frameworks exist that help
              abstract the “plumbing” for this?
Integrated
Getting my application to talk nicely with others
Integrated
Getting my application to talk nicely with others



                          Back to 1994


 “Integration” was an RS-232 serial port
      to a MPR, into a VMS system!
Integrated
Getting my application to talk nicely with others



                          Back to 1994


     …and no need to consider external
                 access!
Integrated
Getting my application to talk nicely with others



                            Since then...

   RMI, CORBA, DCOM, .NET Remoting,
   Web Services, BizTalk Adapters, ESBs,
            Sharepoint’s BDC
Integrated
Getting my application to talk nicely with others



                          How about now?


        What am I excited about now?

Everything coming together in WCF 4.0
Integrated
Getting my application to talk nicely with others




              Wait a minute! WCF is so
                    complicated!

What’s new that will make life easier?
Integrated
Getting my application to talk nicely with others




                      Default Endpoints
Integrated
Getting my application to talk nicely with others




   ServiceHost host = new ServiceHost(typeof(MyService),
   new Uri(“http://localhost:8080/myservice”));
   host.AddDefaultEndpoints();
   host.Open();
Integrated
Getting my application to talk nicely with others




             Easier Hosting in ASP.NET
Integrated
Getting my application to talk nicely with others


   [ServiceContract()]
     public class Service1
     {
        [OperationContract()]
        public string SayHello(string name)
        {
           return String.Format("Hello {0}", name);
        }
     }
Integrated
Getting my application to talk nicely with others




                               Discovery
Integrated
Getting my application to talk nicely with others




<service name=“HelloService”>
       <endpoint binding=“wsHttpBinding” contract=“IHello”/>
       <endpoint name=“udpDiscovery”
                            kind=“udpDiscoveryEndpoint”/>
</service>
Integrated
Getting my application to talk nicely with others




DiscoveryClient client = new DiscoveryClient(“udpDiscoveryEndpoint”);
FindCriteria crtieria = new FindCriteria(typeof(IHello));
FindResponse response = client.Find(criteria);
Integrated
Getting my application to talk nicely with others




              Service Announcements
Integrated
Getting my application to talk nicely with others




<serviceDiscovery>
       <announcementEndpoints>
              <endpoint kind=“udpAnnouncementEndpoint”/>
       </announcementEndpoints>
</serviceDiscovery>
Integrated
Getting my application to talk nicely with others




AnnouncementService service = new AnnouncementService();
service.OnlineAnnouncementRecieved += OnOnlineEvent;
service.OfflineAnnouncementRecieved += OnOfflineEvent;

static void OnOnlineEvent(object sender,
                            AnnouncementEventArgs e)
{…}
Integrated
Getting my application to talk nicely with others




                   Managed Discovery
Integrated
Getting my application to talk nicely with others



                                     Discovery
                                       Proxy
                Probe                 Service          Register
            Proxy Service                           Announcement
             (FindCriteria)                            Service



                                    Call Service
           Client                                            Service
Integrated
Getting my application to talk nicely with others




                  Content Based Routing
                  Fault Tolerant Routing
                 Improved REST Support
        Better Integrated between WF and WCF
Integrated
Getting my application to talk nicely with others




Sounds great. How do I use WCF outside
     the walls of the organization?
Integrated
Getting my application to talk nicely with others




                       .NET Service Bus
Integrated
Getting my application to talk nicely with others




                                 Telco provided WAN
     Company 1                                                 Company 2


        Client                                                  Server

                  FTP                                  FTP
                 Client                               Server
Integrated
Getting my application to talk nicely with others




                                       Internet
                                 Telco provided WAN
     Company 1                                                 Company 2


        Client                                                  Server

                  FTP                                  FTP
                 Client                               Server
Integrated
Getting my application to talk nicely with others




                                       Internet
                                 Telco provided WAN
     Company 1                                               Company 2
                                                       DMZ

        Client                                                   Server

                                                      Extranet
                 Browser
                                                        Site
Integrated
Getting my application to talk nicely with others
     Company 1


        Client



                                                    Web Site   Database

      Company 2


        Client
Integrated
Getting my application to talk nicely with others
     Company 1       Proxy?

                       Firewall
        Client



                                                    Web Site   Database

      Company 2


        Client
                        Firewall
Integrated
Getting my application to talk nicely with others
     Company 1

                       Firewall
        Client



                                                    Web Site   Database

      Company 2                               65.55.33.204



        Client
                        Firewall
     192.168.14.100

                              NAT?
Integrated
Getting my application to talk nicely with others
     Company 1

                       Firewall
        Client



                                                    Web Site    Database

      Company 2                                  65.55.33.204



        Client
                        Firewall
     192.168.14.100
                         OK, so I’ll do a HTTP
                          poll every minute
Integrated
Getting my application to talk nicely with others
     Company 1

                       Firewall
        Client



                                                    Web Site   Database

      Company 2                               65.55.33.204



        Client
                        Firewall
     192.168.14.100
                            …and how about other
                          protocols other than HTTP?
Integrated
Getting my application to talk nicely with others




         How does the .NET Service Bus help?
Integrated
Getting my application to talk nicely with others
     Company 1

                                                                      sb://.../myqueue
        Client



                                                                             .NET
                                                                          Service Bus

      Company 2


        Client
                          Firewall
                                     Outbound bi-directional socket
                                     Kept alive in background
Integrated
Getting my application to talk nicely with others
     Company 1

                         Firewall
                                                                      sb://.../myqueue
        Client                      Outbound one-way socket



                                                                             .NET
                                                                          Service Bus

      Company 2

                                                                        Message routed
        Client
                                                                         accordingly
                          Firewall
                                     Outbound bi-directional socket
                                     Kept alive in background
Integrated
Getting my application to talk nicely with others




               Demo - Using .NET Service Bus
Integrated
Getting my application to talk nicely with others




        What do we take away from this
                  section?
Integrated
Takeaways


                WCF 4.0 provides an easier “on
             ramp” compared to previous versions


                    Discovery and Service
                   Announcements in WCF


              .NET Service Bus will open up new
                      application types
Extensibility
Extending and deploying my application
Extensibility
Extending and deploying my application



                        Back to 1994


 Adding functionality to my application
         required a re-install.
Extensibility
Extending and deploying my application



                        Back to 1994


…and deploying was a weekend’s worth
            of overtime.
Extensibility
Extending and deploying my application



                          Since then...

      DI (Dependency Injection)
and IoC (Inversion of Control), different
      ways to get bits to the box
Extensibility
Extending and deploying my application



                        How about now?


       What am I excited about now?

   MEF and improvements to ClickOnce
Extensibility
Extending and deploying my application




                        What is MEF?
Extensibility
Extending and deploying my application




           MEF – Managed Extensibility
                  Framework
Extensibility
Extending and deploying my application


                                         Catalog



    CustomExportProvider        CatalogExportProvider   MutableExportProvider



                              Composition Container



                  Part                    Part           Part

                Exports                  Exports        Exports
                Imports                  Imports        Imports
Extensibility
Extending and deploying my application




  What’s this look like in my app?
Extensibility
Extending and deploying my application


  Declare the interface for your extension

  public interface IMessageSender
  {
         void Send(string message);
  }
Extensibility
Extending and deploying my application


  Add the Export attribute to your add-in

  [Export(typeof(IMessageSender))]
  public class EmailSender : IMessageSender
  {
          public void Send(string message)
          {
                  Console.WriteLine(message);
          }
  }
Extensibility
Extending and deploying my application


  Create the container in your host application

  private void Compose()
  {
         var catalog = new
         AssemblyCatalog(Assembly.GetExecutingAssembly());
         var container = new CompositionContainer(catalog);
         container.ComposeParts(this);
  }
Extensibility
Extending and deploying my application


  Import the parts you are going to use


  [Import]
  public IMessageSender MessageSender { get; set; }
Extensibility
Extending and deploying my application




    Extensibility is easier, but isn’t
 application deployment still painful?
Extensibility
Extending and deploying my application




  .NET Framework Size and Reboots
Extensibility
Extending and deploying my application

.NET 4 Client: 28 MB X86 Client Profile, 48MB X86/X64 Full Profile

                              250
                                            Size on media combined x86/x64 package

                              200
          Size in Megabytes




                              150



                              100



                              50



                                0

                                    "2.0"      "3.0"     "3.5"   "3.5SP1"   "4.0 Full"   "4.0 Client"
Extensibility
Extending and deploying my application




                Brandable Experience
Extensibility
Extending and deploying my application




         Configurator Tool:
         http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962


         Client Profile Configuration Designer “How To” Series:
         http://windowsclient.net/wpf/wpf35/wpf-35sp1-start-here.aspx
Extensibility
Extending and deploying my application




     Improved ClickOnce Experience
Extensibility
Extending and deploying my application




 Click Once Improvements
     – Command-line arguments for CO deployed apps
     – File associations for CO deployed apps
     – Background Updates for CO apps
Extensibility
Extending and deploying my application




      Demo - Updating a ClickOnce Application
Extensibility
Extending and deploying my application




       What do we take away from this
                 section?
Extensibility
Takeaways


                 MEF enables you to think about
                   extensibility from day one


                Client requirements are becoming
                  less, and ClickOnce improving


                   Challenge the notion that
                    deployment is still hard
Call to Action
What’s next?
Call to Action
What’s next?


               Look at your LOB applications using
                       the 5 characteristics


               Don’t be afraid to challenge some
                of your assumptions/decisions


                 Be excited about the potential
                   coming in the next wave!
simon.guest@microsoft.com
                                                                   http://simonguest.com




 © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
     conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
                                         MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Weitere ähnliche Inhalte

Was ist angesagt?

Designing Rich Mobile Apps in a Fragmented World
Designing Rich Mobile Apps in a Fragmented WorldDesigning Rich Mobile Apps in a Fragmented World
Designing Rich Mobile Apps in a Fragmented WorldWorklight
 
Programming with RealSense using .NET
Programming with RealSense using .NETProgramming with RealSense using .NET
Programming with RealSense using .NETMatteo Valoriani
 
Interactive tv text input usability report 2011
Interactive tv text input usability report 2011Interactive tv text input usability report 2011
Interactive tv text input usability report 2011Mosoco Ltd
 
Text Input Report 2.0
Text Input Report 2.0Text Input Report 2.0
Text Input Report 2.0swinfen
 
Mobile user experience conference 2009 - The rise of the mobile context
Mobile user experience conference 2009 - The rise of the mobile contextMobile user experience conference 2009 - The rise of the mobile context
Mobile user experience conference 2009 - The rise of the mobile contextFlorent Stroppa
 
CSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - InputCSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - InputYhal Htet Aung
 
Hand Gesture Interface 기술동향 및 전망
Hand Gesture Interface 기술동향 및 전망Hand Gesture Interface 기술동향 및 전망
Hand Gesture Interface 기술동향 및 전망Dongchul Kim
 

Was ist angesagt? (8)

Designing Rich Mobile Apps in a Fragmented World
Designing Rich Mobile Apps in a Fragmented WorldDesigning Rich Mobile Apps in a Fragmented World
Designing Rich Mobile Apps in a Fragmented World
 
Chapter 5 input
Chapter 5   inputChapter 5   input
Chapter 5 input
 
Programming with RealSense using .NET
Programming with RealSense using .NETProgramming with RealSense using .NET
Programming with RealSense using .NET
 
Interactive tv text input usability report 2011
Interactive tv text input usability report 2011Interactive tv text input usability report 2011
Interactive tv text input usability report 2011
 
Text Input Report 2.0
Text Input Report 2.0Text Input Report 2.0
Text Input Report 2.0
 
Mobile user experience conference 2009 - The rise of the mobile context
Mobile user experience conference 2009 - The rise of the mobile contextMobile user experience conference 2009 - The rise of the mobile context
Mobile user experience conference 2009 - The rise of the mobile context
 
CSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - InputCSC1100 - Chapter03 - Input
CSC1100 - Chapter03 - Input
 
Hand Gesture Interface 기술동향 및 전망
Hand Gesture Interface 기술동향 및 전망Hand Gesture Interface 기술동향 및 전망
Hand Gesture Interface 기술동향 및 전망
 

Andere mochten auch

The Future of Wireless Business Applications
The Future of Wireless Business ApplicationsThe Future of Wireless Business Applications
The Future of Wireless Business ApplicationsYankee Group
 
The Future of Business Applications
The Future of Business ApplicationsThe Future of Business Applications
The Future of Business ApplicationsOrangeScape
 
10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity10 Life Hacks for Better Productivity
10 Life Hacks for Better ProductivitySimon Guest
 
Erp Enterprise Resource Planning
Erp   Enterprise Resource PlanningErp   Enterprise Resource Planning
Erp Enterprise Resource PlanningVIshal Gujarathi
 
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)Amazon Web Services
 

Andere mochten auch (6)

The Future of Wireless Business Applications
The Future of Wireless Business ApplicationsThe Future of Wireless Business Applications
The Future of Wireless Business Applications
 
The Future of Business Applications
The Future of Business ApplicationsThe Future of Business Applications
The Future of Business Applications
 
10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity
 
Erp Enterprise Resource Planning
Erp   Enterprise Resource PlanningErp   Enterprise Resource Planning
Erp Enterprise Resource Planning
 
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)
AWS re:Invent 2016: Another Day in the Life of a Netflix Engineer (DEV209)
 
Testing Metrics
Testing MetricsTesting Metrics
Testing Metrics
 

Ähnlich wie My First LOB Application: Interactive Features in Next Generation Line of Business Apps

Building Multi-Touch Experiences
Building Multi-Touch ExperiencesBuilding Multi-Touch Experiences
Building Multi-Touch ExperiencesMartha Rotter
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile DevelopmentFoteini Valeonti
 
Going Mobile by Nate Beck
Going Mobile by Nate BeckGoing Mobile by Nate Beck
Going Mobile by Nate Beckmochimedia
 
Going Mobile - Flash Gaming Summit 2012
Going Mobile - Flash Gaming Summit 2012Going Mobile - Flash Gaming Summit 2012
Going Mobile - Flash Gaming Summit 2012Nate Beck
 
Windows 7 For Developers
Windows 7 For DevelopersWindows 7 For Developers
Windows 7 For Developersjoycsc
 
Virtual Smart Phone ppt
Virtual Smart Phone pptVirtual Smart Phone ppt
Virtual Smart Phone pptSOHEL ISLAM
 
Building a multi touch enabled windows 7 point of sale system
Building a multi touch enabled windows 7 point of sale systemBuilding a multi touch enabled windows 7 point of sale system
Building a multi touch enabled windows 7 point of sale systemChris Eargle
 
Adil ppt gesture
Adil ppt gestureAdil ppt gesture
Adil ppt gestureadil azmi
 
426 lecture6b: AR Interaction
426 lecture6b: AR Interaction426 lecture6b: AR Interaction
426 lecture6b: AR InteractionMark Billinghurst
 
Building_The_Next-Generation_UI - Multitouch and Ribbon
Building_The_Next-Generation_UI - Multitouch and RibbonBuilding_The_Next-Generation_UI - Multitouch and Ribbon
Building_The_Next-Generation_UI - Multitouch and RibbonMithun T. Dhar
 
Mr and Mrs Presenter
Mr and Mrs PresenterMr and Mrs Presenter
Mr and Mrs PresenterGovinda raj
 
Developing Multi Touch Applications
Developing Multi Touch ApplicationsDeveloping Multi Touch Applications
Developing Multi Touch ApplicationsBrian Blanchard
 
Health Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationHealth Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationJose Ortega
 
A lap around mango
A lap around mangoA lap around mango
A lap around mangoAndy Chiang
 
Technicalseminaronvirtualsmartphone 180201091738
Technicalseminaronvirtualsmartphone 180201091738Technicalseminaronvirtualsmartphone 180201091738
Technicalseminaronvirtualsmartphone 180201091738ThimmaReddy18
 
Technical seminar on virtual smart phone
Technical seminar on virtual smart phoneTechnical seminar on virtual smart phone
Technical seminar on virtual smart phoneAkshitha Chutke
 

Ähnlich wie My First LOB Application: Interactive Features in Next Generation Line of Business Apps (20)

Building Multi-Touch Experiences
Building Multi-Touch ExperiencesBuilding Multi-Touch Experiences
Building Multi-Touch Experiences
 
Introduction to Mobile Development
Introduction to Mobile DevelopmentIntroduction to Mobile Development
Introduction to Mobile Development
 
Going Mobile by Nate Beck
Going Mobile by Nate BeckGoing Mobile by Nate Beck
Going Mobile by Nate Beck
 
Going Mobile - Flash Gaming Summit 2012
Going Mobile - Flash Gaming Summit 2012Going Mobile - Flash Gaming Summit 2012
Going Mobile - Flash Gaming Summit 2012
 
Pc03
Pc03Pc03
Pc03
 
Windows 7 For Developers
Windows 7 For DevelopersWindows 7 For Developers
Windows 7 For Developers
 
Virtual Smart Phone ppt
Virtual Smart Phone pptVirtual Smart Phone ppt
Virtual Smart Phone ppt
 
Vspppt 190114085912
Vspppt 190114085912Vspppt 190114085912
Vspppt 190114085912
 
Building a multi touch enabled windows 7 point of sale system
Building a multi touch enabled windows 7 point of sale systemBuilding a multi touch enabled windows 7 point of sale system
Building a multi touch enabled windows 7 point of sale system
 
Adil ppt gesture
Adil ppt gestureAdil ppt gesture
Adil ppt gesture
 
426 lecture6b: AR Interaction
426 lecture6b: AR Interaction426 lecture6b: AR Interaction
426 lecture6b: AR Interaction
 
Building_The_Next-Generation_UI - Multitouch and Ribbon
Building_The_Next-Generation_UI - Multitouch and RibbonBuilding_The_Next-Generation_UI - Multitouch and Ribbon
Building_The_Next-Generation_UI - Multitouch and Ribbon
 
Mr and Mrs Presenter
Mr and Mrs PresenterMr and Mrs Presenter
Mr and Mrs Presenter
 
Developing Multi Touch Applications
Developing Multi Touch ApplicationsDeveloping Multi Touch Applications
Developing Multi Touch Applications
 
Leap Motion
Leap MotionLeap Motion
Leap Motion
 
Jarvisproject
JarvisprojectJarvisproject
Jarvisproject
 
Health Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationHealth Care Clipboard iPad Application
Health Care Clipboard iPad Application
 
A lap around mango
A lap around mangoA lap around mango
A lap around mango
 
Technicalseminaronvirtualsmartphone 180201091738
Technicalseminaronvirtualsmartphone 180201091738Technicalseminaronvirtualsmartphone 180201091738
Technicalseminaronvirtualsmartphone 180201091738
 
Technical seminar on virtual smart phone
Technical seminar on virtual smart phoneTechnical seminar on virtual smart phone
Technical seminar on virtual smart phone
 

Mehr von Simon Guest

10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity10 Life Hacks for Better Productivity
10 Life Hacks for Better ProductivitySimon Guest
 
Building a Great Engineering Culture
Building a Great Engineering CultureBuilding a Great Engineering Culture
Building a Great Engineering CultureSimon Guest
 
Interviewing Techniques
Interviewing TechniquesInterviewing Techniques
Interviewing TechniquesSimon Guest
 
Presentation Anti-Patterns
Presentation Anti-PatternsPresentation Anti-Patterns
Presentation Anti-PatternsSimon Guest
 
Automated Web Testing using JavaScript
Automated Web Testing using JavaScriptAutomated Web Testing using JavaScript
Automated Web Testing using JavaScriptSimon Guest
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSSimon Guest
 
Indoor location in mobile applications using iBeacons
Indoor location in mobile applications using iBeaconsIndoor location in mobile applications using iBeacons
Indoor location in mobile applications using iBeaconsSimon Guest
 
Creating Context-Aware Applications
Creating Context-Aware ApplicationsCreating Context-Aware Applications
Creating Context-Aware ApplicationsSimon Guest
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScriptSimon Guest
 
Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?Simon Guest
 
Objective View of MEAPs
Objective View of MEAPsObjective View of MEAPs
Objective View of MEAPsSimon Guest
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentSimon Guest
 
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOSWindows Azure Toolkit for iOS
Windows Azure Toolkit for iOSSimon Guest
 
Developing Enterprise-Grade Mobile Applications
Developing Enterprise-Grade Mobile ApplicationsDeveloping Enterprise-Grade Mobile Applications
Developing Enterprise-Grade Mobile ApplicationsSimon Guest
 
My customers are using iPhone/Android, but I'm a Microsoft Guy.
My customers are using iPhone/Android, but I'm a Microsoft Guy.My customers are using iPhone/Android, but I'm a Microsoft Guy.
My customers are using iPhone/Android, but I'm a Microsoft Guy.Simon Guest
 
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows AzureDeveloping iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows AzureSimon Guest
 
iPhone and iPad Security
iPhone and iPad SecurityiPhone and iPad Security
iPhone and iPad SecuritySimon Guest
 
Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Building solutions on the Microsoft platform that target iPhone, iPad, and An...Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Building solutions on the Microsoft platform that target iPhone, iPad, and An...Simon Guest
 
Future of Mobility
Future of MobilityFuture of Mobility
Future of MobilitySimon Guest
 
Patterns for Cloud Computing
Patterns for Cloud ComputingPatterns for Cloud Computing
Patterns for Cloud ComputingSimon Guest
 

Mehr von Simon Guest (20)

10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity10 Life Hacks for Better Productivity
10 Life Hacks for Better Productivity
 
Building a Great Engineering Culture
Building a Great Engineering CultureBuilding a Great Engineering Culture
Building a Great Engineering Culture
 
Interviewing Techniques
Interviewing TechniquesInterviewing Techniques
Interviewing Techniques
 
Presentation Anti-Patterns
Presentation Anti-PatternsPresentation Anti-Patterns
Presentation Anti-Patterns
 
Automated Web Testing using JavaScript
Automated Web Testing using JavaScriptAutomated Web Testing using JavaScript
Automated Web Testing using JavaScript
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
 
Indoor location in mobile applications using iBeacons
Indoor location in mobile applications using iBeaconsIndoor location in mobile applications using iBeacons
Indoor location in mobile applications using iBeacons
 
Creating Context-Aware Applications
Creating Context-Aware ApplicationsCreating Context-Aware Applications
Creating Context-Aware Applications
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScript
 
Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?Enterprise Social Networking - Myth or Magic?
Enterprise Social Networking - Myth or Magic?
 
Objective View of MEAPs
Objective View of MEAPsObjective View of MEAPs
Objective View of MEAPs
 
Top Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web DevelopmentTop Ten Tips for HTML5/Mobile Web Development
Top Ten Tips for HTML5/Mobile Web Development
 
Windows Azure Toolkit for iOS
Windows Azure Toolkit for iOSWindows Azure Toolkit for iOS
Windows Azure Toolkit for iOS
 
Developing Enterprise-Grade Mobile Applications
Developing Enterprise-Grade Mobile ApplicationsDeveloping Enterprise-Grade Mobile Applications
Developing Enterprise-Grade Mobile Applications
 
My customers are using iPhone/Android, but I'm a Microsoft Guy.
My customers are using iPhone/Android, but I'm a Microsoft Guy.My customers are using iPhone/Android, but I'm a Microsoft Guy.
My customers are using iPhone/Android, but I'm a Microsoft Guy.
 
Developing iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows AzureDeveloping iPhone and iPad apps that leverage Windows Azure
Developing iPhone and iPad apps that leverage Windows Azure
 
iPhone and iPad Security
iPhone and iPad SecurityiPhone and iPad Security
iPhone and iPad Security
 
Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Building solutions on the Microsoft platform that target iPhone, iPad, and An...Building solutions on the Microsoft platform that target iPhone, iPad, and An...
Building solutions on the Microsoft platform that target iPhone, iPad, and An...
 
Future of Mobility
Future of MobilityFuture of Mobility
Future of Mobility
 
Patterns for Cloud Computing
Patterns for Cloud ComputingPatterns for Cloud Computing
Patterns for Cloud Computing
 

Kürzlich hochgeladen

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Kürzlich hochgeladen (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.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
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

My First LOB Application: Interactive Features in Next Generation Line of Business Apps

  • 1. Next Generation Line of Business (LOB) Applications Simon Guest Senior Director, Technical Strategy Microsoft Corporation
  • 3. Introduction My First LOB Application Back to 1994
  • 4. Introduction My First LOB Application My First LOB Application
  • 6. Introduction My First LOB Application What would happen if I tried to write this today?
  • 8. Introduction Defining a LOB Application Wikipedia: A line-of-business application is one of the set of critical computer applications that are vital to running an enterprise
  • 9. Introduction Defining a LOB Application The following 5 characteristics:
  • 10. Introduction Defining a LOB Application Interactive: LOB Applications are interactive by nature. Data is entered, and results/reports are returned.
  • 11. Introduction Defining a LOB Application Composable: LOB applications tend to have one or more parts that compose the user interface. These parts may interact with each other as needed.
  • 12. Introduction Defining a LOB Application Data Driven: LOB applications are data intensive. Many live “close” to the database, and access frequently.
  • 13. Introduction Defining a LOB Application Integrated: LOB applications often integrate with other systems. These can be a variety of data feeds, either within or outside the organization.
  • 14. Introduction Defining a LOB Application Extensible: LOB applications are extensible by nature. They often support add-ons or plug-ins used to tailor an application or make deployment easier.
  • 15. Session Objectives What are you going to get from this session?
  • 16. Session Objectives What are you going to get from this session? Explore each characteristic to help you apply to your own application Give you the details of what’s new in each of these areas Show through demos how we are supporting these new features
  • 17. Interactive Entering data and getting results
  • 18. Interactive Entering data and getting results Back to 1994 “How do I get this TAB order working?”
  • 19. Interactive Entering data and getting results Since then... Better forms, many controls, better output, great reporting solutions, voice command, etc.
  • 20. Interactive Entering data and getting results How about now? What am I excited about now? NUI (Natural User Input), specifically touch
  • 21. Interactive Entering data and getting results Is touch going to replace the mouse and keyboard?
  • 22. Interactive Entering data and getting results Touch augments the Windows experience. Every input method has it’s pros and cons – no input method is ideal for everything.
  • 23. Interactive Entering data and getting results Are we really seeing devices that support touch?
  • 24. Interactive Entering data and getting results Device Availability HP TouchSmart IQ504 PC DELL Latitude XT2 (Intel Core 2 Duo T5750) (Intel Core 2 Duo SU9400)
  • 25. Interactive Entering data and getting results Is touch supported in Windows 7?
  • 26. Interactive Entering data and getting results Gesture Single Multi Gesture Action Action Touch Touch Press on target, tap Press and Tap with other finger Yes Two fingers Zoom apart/together Yes Two fingers in Rotate opposing direction Yes Two Finger Tap Tap two fingers Yes Wait for blue ring and Press and Hold release Yes Yes Flicks Quick drag gestures Yes Yes
  • 27. Interactive Entering data and getting results What you get for free Panning and Zooming, Right Click Gestures
  • 28. Interactive Entering data and getting results Minimal Incremental Work Use WM_GESTURE Win32 API to trap gesture notifications, handle pan, zoom, and rotate
  • 29. Interactive Entering data and getting results Best Experience Use WM_TOUCH Win32 API to handle raw touch data, manipulation, and inertia processors
  • 30. Interactive Entering data and getting results Does this relate to “Surface”?
  • 31. Interactive Entering data and getting results Surface Application Windows Forms WPF Native Application Application Surface SDK Win32 Multi-Touch Controls Application Managed Wrapper WPF 3.5 SP1 WPF 3.5 And Interop Windows 7 Surface (Multi-Touch API) Hardware
  • 32. Interactive Entering data and getting results Surface Application Windows Forms WPF Native Application Application Surface SDK Win32 Specific Controls Application Managed Wrapper WPF 4.0 And Interop Multi-Touch Controls Windows 7 Surface (Multi-Touch API) Hardware
  • 33. Interactive Entering data and getting results How about other input mechanisms?
  • 34. Interactive Entering data and getting results Many other sensors exist today – but can be difficult…
  • 35. Interactive Entering data and getting results e.g. to use a GPS, your application has to be device specific
  • 36. Interactive Entering data and getting results How is this supported?
  • 37. Interactive Entering data and getting results Windows 7 Sensor and Location Platform
  • 38. Interactive Entering data and getting results Sensor Type Sensor Placement Typical Use GPS Built into, or attached to, computer Location and orientation Accelerometer Built into computer or attached to computer Motion and orientation Proximity Built in or nearby to the computer Presence and spatial awareness Light Built in, nearby, or remote Ambient light conditions RFID Built into the computer or attached to person Identification of physical items Compass Attached to person Orientation Camera Built into the computer or attached Recording, object identification, facial recognition Microphone Built into the computer or attached Ambient noise conditions Temperature Built into the computer or remote Indoor/Outdoor Ambient Temperature, cooking temperature Moisture Remote Detection of water leaks, garden sprinkler systems Motion Detector Built into the computer or remote Security systems, presense Traffic Remote, usually public Travel time predictions Weather station Remote, usually public Weather conditions and predictions
  • 39. Interactive Entering data and getting results Single API call to answer questions – e.g. “Where am I?”
  • 40. Interactive Entering data and getting results How does this work?
  • 41. Interactive Entering data and getting results Your Application Location API Sensor API Sensor Class Sensor Class Extension Extension UMDF Sensor Driver UMDF Sensor Driver
  • 42. Interactive Entering data and getting results That covers input, but how about “getting stuff out”?
  • 43. Interactive Entering data and getting results Vendor Examples of Controls Offered Link Actipro WPF Studio Ribbon, Bar Code, Wizard, DateTime, Calendar, Transition, http://www.actiprosoftware.com Color Selection, Transition Effects Library Blendables Zoombox, ElementSnapshot, Carousel, http://www.blendables.com ChromelessWindow, DragAndDrop, Pie Chart, OS Check, Timeline Panel ComponentOne Schedule, Month Calendar, Chart, Grid http://www.componentone.com DevComponents Office UI, Window Management http://devcomponents.com Divelements Office UI, Window Management http://divelements.com/ Infragistics Carousel, DataPresenter, Grid, Masked Edit, DateTimeEdit, http://www.infragistics.com CurrencyEdit, NumericEdit, CheckEdit, TextEdit, ThemePacks, Chart Mindscape PropertyGrid, TextBoxes, DropDownPickers http://www.mindscape.com.nz NeoDynamic BarCode http://www.neodynamic.com Orbifold Diagraming tool http://www.orbifold.com SoftwareFx Charting http://www.softwarefx.com SyncFusion Docking, Office UI, GroupBar, Charting http://www.syncfusion.com Telerik RADControls Suite (Calendar, Carousels, Gauges, etc.) http://www.telerik.com Xceed Datagrid http://www.xceed.com
  • 44. Interactive Entering data and getting results Name Type Link iTextSharp Generate PDF files on the fly http://csharp-source.net/open- source/pdf-libraries/itextsharp Report.NET PDF document creation from ADO.NET data source http://csharp-source.net/open- source/pdf-libraries/report.net PDF Sharp PDF creation including GDI+ like drawing routines http://csharp-source.net/open- source/pdf-libraries/pdfsharp SharpPDF PDF creation for .NET 1.1 http://csharp-source.net/open- source/pdf-libraries/sharppdf PDFjet Dynamic PDF generation from Java or .NET http://csharp-source.net/open- source/pdf-libraries/pdfjet-open- source-edition ASP.NET FO PDF Similar to ASP.NET Server Controls, written in C# http://csharp-source.net/open- source/pdf-libraries/asp.net-fo-pdf PDF Clown C# 2.0 library for reading, writing PDF files http://csharp-source.net/open- source/pdf-libraries/pdf-clown
  • 45. Interactive Entering data and getting results But, what if I want to create Office documents?
  • 46. Interactive Entering data and getting results “Old way” is to use the Application Object Model
  • 47. Interactive Entering data and getting results …but: Need local copy of Office installed on server… Does not scale… Try running automation on 100s of documents… Dialog boxes “stop” automation… Have to reboot application on server every X hours…
  • 48. Interactive Entering data and getting results Open XML SDK 2.0
  • 49. Interactive Entering data and getting results How does the Open XML SDK work?
  • 50. Interactive Entering data and getting results Developers see a zip file with XML parts File Container Users see a single file Document properties Comments WordML/SpreadsheetML/etc. Custom Defined XML Images, video, sounds MyDoc.docx Styles Charts
  • 51. Interactive Entering data and getting results Demo - Using OpenXML SDK to read/write Word Documents
  • 52. Interactive Entering data and getting results Talking about speeding things up… How about the processor?
  • 53. Interactive Entering data and getting results Sun’s Surface 10,000 Power Density (W/cm2) Rocket Nozzle 1,000 Nuclear Reactor 100 8086 Hot Plate 10 8008 386 286 486 8080 1 ‘70 ‘80 ‘90 ‘00 ‘10 Intel Developer Forum, Spring 2004 - Pat Gelsinger
  • 54. Interactive Entering data and getting results Isn’t developing parallel applications difficult?
  • 55. Interactive Entering data and getting results Getting easier, especially with .NET 4.0 and Visual Studio 2010
  • 56. Interactive Entering data and getting results PLINQ Parallel Debugger Task Parallel Library Concurrency Runtime Profiler Concurrency Thread Pool Analysis (Task Scheduler and Resource Manager) Threads Operating System
  • 57. Interactive Entering data and getting results PLINQ Data Partitioning, Operator Types, Merging Task Parallel Library Loop replacements, Imperative Task Parallelism, Scheduling Concurrency Runtime Thread-safe Collections, Synchronization Types, Coordination Types
  • 58. Interactive Entering data and getting results Demo - Running the Open SDK across multiple cores
  • 59. Interactive Entering data and getting results What do we take away from this section?
  • 60. Interactive Takeaways NUI is, and will, enhance LOB applications Getting results and reports is becoming easier Taking advantage of multi-core is within reach
  • 62. Composable Designing and composing the user interface Back to 1994 With my old application, testing was “giving the application to the user”
  • 63. Composable Designing and composing the user interface Since then... Increased focus on test driven development (TDD) and unit testing
  • 64. Composable Designing and composing the user interface How about now? What am I excited about now? A renewed effort on making UIs more composable and testable
  • 65. Composable Designing and composing the user interface Hasn’t it been difficult to test the UI?
  • 66. Composable Designing and composing the user interface Patterns, such as MVC, help address these concerns
  • 67. Composable Designing and composing the user interface But what should I use? MVC, MVP, PM, MVVM?
  • 68. Composable Designing and composing the user interface MVC - Designed to separate concerns for request/response type UIs
  • 69. Composable Designing and composing the user interface MVC (Model View Controller) Add a new customer to the model Model Please add a new Triggers update customer… Controller of the view Controller Reloads View View
  • 70. Composable Designing and composing the user interface MVC is a great pattern for Web Applications
  • 71. Composable Designing and composing the user interface MVC (Model View Controller) Add a new customer to the model Model http://localhost/customer/add (POST) Please add a new Reads number of customer… Controller customers “Done - you now have 20 customers” Controller Reloads View View
  • 72. Composable Designing and composing the user interface ASP.NET MVC Does not use ViewState or Server Based Forms Extendable Front Controller pattern Project Support for TDD
  • 73. Composable Designing and composing the user interface ASP.NET Web Forms ViewState to persist state across many components Page Controller Pattern Less complex, but more difficult to test
  • 74. Composable Designing and composing the user interface Windows applications are less about request/response, and more interactive
  • 75. Composable Designing and composing the user interface MVP (Model View Presenter) Request Presenter From Updates View Model Please add a new customer… View Presenter Model Presenter Model Updates Confirms View Change
  • 76. Composable Designing and composing the user interface Modified version of MVP (Fowler) to handle data binding and code behind
  • 77. Composable Designing and composing the user interface PM (PresentationModel) Request Presenter From Updates View Model Please add a new Presentation customer… View Model Model DataBinding Model Confirms Change
  • 78. Composable Designing and composing the user interface MVP and PM are patterns that can be used with Windows Forms, WPF, and Silverlight
  • 79. Composable Designing and composing the user interface PM (PresentationModel) Request Presenter From Updates Fill out fields and click on “Add” button View Model Please add a new Presentation customer… View Model Model Data Driven field for # DataBinding Model of customers Confirms now in system Change
  • 80. Composable Designing and composing the user interface However, XAML also supports any item to be data bound to any other item in either direction
  • 81. Composable Designing and composing the user interface Events in XAML bound to objects (vs. having code behind) e.g. button binds to object.add() XAML Object Objects bind to XAML visual elements e.g. object.customername binds to XAML Editbox
  • 82. Composable Designing and composing the user interface MVVM (Model View ViewModel) ViewModel Updates Model Please add a new customer… View ViewModel Model DataBinding Model Confirms Change
  • 83. Composable Designing and composing the user interface MVVM can be realized in WPF and Silverlight through PRISM
  • 84. Composable Designing and composing the user interface Host Shell Shell Region Presenter Modules Validation View ViewModel Model Styles / Themes Module Shared Styles / Themes
  • 85. Composable Designing and composing the user interface You mention WPF and Silverlight? What’s new when it comes to LOB applications?
  • 86. Composable Designing and composing the user interface WPF 4.0 Windows 7 Support MultiTouch, Taskbar, DWrite Fundamentals Full trust XBAP, text rendering, data binding for DynamicObject, WPF Ribbon controls Design Experience Improved in Visual Studio and lessons learned from implementing Visual Studio in WPF
  • 87. Composable Designing and composing the user interface Silverlight 3.0 RIA Productivity Improved controls, SEO enhancements, accessibility Out of Browser Both Win and Mac, isolated storage, auto update Design Tooling Expression Blend, SketchFlow, TFS integration, sample data
  • 88. Composable Designing and composing the user interface What do we take away from this section?
  • 89. Composable Takeaways Put some time in learning MVC, MVP, PM, MVVM MVVM can be implemented in Silverlight and WPF using PRISM New features such as Silverlight OOB for LOB applications
  • 90. Data Driven Object relational mapping and exposing across tiers
  • 91. Data Driven Object relational mapping and exposing across tiers Back to 1994 Accessing data was Direct SQL into a Dbase/Paradox DB
  • 92. Data Driven Object relational mapping and exposing across tiers Since then... A million different ORMs, DALs, DTOs, and other ways to access data
  • 93. Data Driven Object relational mapping and exposing across tiers How about now? What am I excited about now? Data Access becoming a more integral part of the application
  • 94. Data Driven Object relational mapping and exposing across tiers What do you mean “integral”?
  • 95. Data Driven Object relational mapping and exposing across tiers LinqToSQL (a.k.a. L2S)
  • 96. Data Driven Object relational mapping and exposing across tiers Objects (Classes) Database Generate Take IEnumerable Existing Classes Schema Using Designer
  • 97. Data Driven Object relational mapping and exposing across tiers DataClasses1DataContext ctx = new DataClasses1DataContext(); var customerNames = from c in ctx.Customers select c.ContactName; foreach (string name in customerNames) {…}
  • 98. Data Driven Object relational mapping and exposing across tiers DataClasses1DataContext ctx = new DataClasses1DataContext(); var customerNames = from c in ctx.Customers where c.ContactName.StartsWith(“A”) select c.ContactName; foreach (string name in customerNames) {…}
  • 99. Data Driven Object relational mapping and exposing across tiers DataClasses1DataContext ctx = new DataClasses1DataContext(); var customerNames = from c in ctx.Customers where c.ContactName.StartsWith(“A”) orderby c.ContactName select c.ContactName; foreach (string name in customerNames) {…}
  • 100. Data Driven Object relational mapping and exposing across tiers DataClasses1DataContext ctx = new DataClasses1DataContext(); var customerNames = (from c in ctx.Customers where c.ContactName.StartsWith(“A”) orderby c.ContactName select c.ContactName).Take(5); foreach (string name in customerNames) {…}
  • 101. Data Driven Object relational mapping and exposing across tiers Entity Framework (introduced in .NET 3.5 SP1)
  • 102. Data Driven Object relational mapping and exposing across tiers Database First Entity Creation Objects Model (Classes) (EDMX) Database Generate Generate Take Objects Model Existing From From Schema Model Database
  • 103. Data Driven Object relational mapping and exposing across tiers Wasn’t there some “constructive feedback” on EF? 
  • 104. Data Driven Object relational mapping and exposing across tiers What did we hear? Persistence Ignorance N-Tier Developer Friction
  • 105. Data Driven Object relational mapping and exposing across tiers New for EF 4.0 Automatic Pluralization Based on API T4 Template Generation Instead of CodeDom 3 Ways of Thinking of ORM Database first, model first, code only
  • 106. Data Driven Object relational mapping and exposing across tiers Database First Entity Creation Start Here! Objects Model (Classes) (EDMX) Database Generate Generate Take Objects Model Existing From From Schema Model Database
  • 107. Data Driven Object relational mapping and exposing across tiers Model First Entity Creation Start Here! Objects Model (Classes) (EDMX) Database Generate Create Generate Objects Model Schema From Using From Model Designer Model
  • 108. Data Driven Object relational mapping and exposing across tiers Code Only Entity Creation Start Here! Objects Model (Classes) (EDMX) Database Write Create Generate Objects Model Schema From From Objects Model
  • 109. Data Driven Object relational mapping and exposing across tiers Demo - Code First Approach in EF 4.0
  • 110. Data Driven Object relational mapping and exposing across tiers I understand, but how do I pass that data across tiers?
  • 111. Data Driven Object relational mapping and exposing across tiers ADO.NET Data Services (formerly known as Astoria)
  • 112. Data Driven Object relational mapping and exposing across tiers ATOM/JSON Your Application … consumer REST endpoint exposed over model ADO.NET Data Services Model Database
  • 113. Data Driven Object relational mapping and exposing across tiers Great for exposing data models to a variety of clients
  • 114. Data Driven Object relational mapping and exposing across tiers I’m fed up of writing plumbing code. What’s new here?
  • 115. Data Driven Object relational mapping and exposing across tiers .NET RIA Services
  • 116. Data Driven Object relational mapping and exposing across tiers Goal: To boost productivity for developers looking to build RIA applications
  • 117. Data Driven Object relational mapping and exposing across tiers Your Silverlight Application .NET RIA Services Consume Data Across Tier Is this the most productive use of your time? Expose Data Across Tier Model Database
  • 118. Data Driven Object relational mapping and exposing across tiers Single solution to remove effort to write an n-tier application. Object lifecycle, data validation, authentication.
  • 119. Data Driven Object relational mapping and exposing across tiers Demo - .NET RIA Services
  • 120. Data Driven Object relational mapping and exposing across tiers What do we take away from this section?
  • 121. Data Driven Takeaways Is your LOB application truly data driven? Is data access integral? How are you exposing data across an n-tier application? What frameworks exist that help abstract the “plumbing” for this?
  • 122. Integrated Getting my application to talk nicely with others
  • 123. Integrated Getting my application to talk nicely with others Back to 1994 “Integration” was an RS-232 serial port to a MPR, into a VMS system!
  • 124. Integrated Getting my application to talk nicely with others Back to 1994 …and no need to consider external access!
  • 125. Integrated Getting my application to talk nicely with others Since then... RMI, CORBA, DCOM, .NET Remoting, Web Services, BizTalk Adapters, ESBs, Sharepoint’s BDC
  • 126. Integrated Getting my application to talk nicely with others How about now? What am I excited about now? Everything coming together in WCF 4.0
  • 127. Integrated Getting my application to talk nicely with others Wait a minute! WCF is so complicated! What’s new that will make life easier?
  • 128. Integrated Getting my application to talk nicely with others Default Endpoints
  • 129. Integrated Getting my application to talk nicely with others ServiceHost host = new ServiceHost(typeof(MyService), new Uri(“http://localhost:8080/myservice”)); host.AddDefaultEndpoints(); host.Open();
  • 130. Integrated Getting my application to talk nicely with others Easier Hosting in ASP.NET
  • 131. Integrated Getting my application to talk nicely with others [ServiceContract()] public class Service1 { [OperationContract()] public string SayHello(string name) { return String.Format("Hello {0}", name); } }
  • 132. Integrated Getting my application to talk nicely with others Discovery
  • 133. Integrated Getting my application to talk nicely with others <service name=“HelloService”> <endpoint binding=“wsHttpBinding” contract=“IHello”/> <endpoint name=“udpDiscovery” kind=“udpDiscoveryEndpoint”/> </service>
  • 134. Integrated Getting my application to talk nicely with others DiscoveryClient client = new DiscoveryClient(“udpDiscoveryEndpoint”); FindCriteria crtieria = new FindCriteria(typeof(IHello)); FindResponse response = client.Find(criteria);
  • 135. Integrated Getting my application to talk nicely with others Service Announcements
  • 136. Integrated Getting my application to talk nicely with others <serviceDiscovery> <announcementEndpoints> <endpoint kind=“udpAnnouncementEndpoint”/> </announcementEndpoints> </serviceDiscovery>
  • 137. Integrated Getting my application to talk nicely with others AnnouncementService service = new AnnouncementService(); service.OnlineAnnouncementRecieved += OnOnlineEvent; service.OfflineAnnouncementRecieved += OnOfflineEvent; static void OnOnlineEvent(object sender, AnnouncementEventArgs e) {…}
  • 138. Integrated Getting my application to talk nicely with others Managed Discovery
  • 139. Integrated Getting my application to talk nicely with others Discovery Proxy Probe Service Register Proxy Service Announcement (FindCriteria) Service Call Service Client Service
  • 140. Integrated Getting my application to talk nicely with others Content Based Routing Fault Tolerant Routing Improved REST Support Better Integrated between WF and WCF
  • 141. Integrated Getting my application to talk nicely with others Sounds great. How do I use WCF outside the walls of the organization?
  • 142. Integrated Getting my application to talk nicely with others .NET Service Bus
  • 143. Integrated Getting my application to talk nicely with others Telco provided WAN Company 1 Company 2 Client Server FTP FTP Client Server
  • 144. Integrated Getting my application to talk nicely with others Internet Telco provided WAN Company 1 Company 2 Client Server FTP FTP Client Server
  • 145. Integrated Getting my application to talk nicely with others Internet Telco provided WAN Company 1 Company 2 DMZ Client Server Extranet Browser Site
  • 146. Integrated Getting my application to talk nicely with others Company 1 Client Web Site Database Company 2 Client
  • 147. Integrated Getting my application to talk nicely with others Company 1 Proxy? Firewall Client Web Site Database Company 2 Client Firewall
  • 148. Integrated Getting my application to talk nicely with others Company 1 Firewall Client Web Site Database Company 2 65.55.33.204 Client Firewall 192.168.14.100 NAT?
  • 149. Integrated Getting my application to talk nicely with others Company 1 Firewall Client Web Site Database Company 2 65.55.33.204 Client Firewall 192.168.14.100 OK, so I’ll do a HTTP poll every minute
  • 150. Integrated Getting my application to talk nicely with others Company 1 Firewall Client Web Site Database Company 2 65.55.33.204 Client Firewall 192.168.14.100 …and how about other protocols other than HTTP?
  • 151. Integrated Getting my application to talk nicely with others How does the .NET Service Bus help?
  • 152. Integrated Getting my application to talk nicely with others Company 1 sb://.../myqueue Client .NET Service Bus Company 2 Client Firewall Outbound bi-directional socket Kept alive in background
  • 153. Integrated Getting my application to talk nicely with others Company 1 Firewall sb://.../myqueue Client Outbound one-way socket .NET Service Bus Company 2 Message routed Client accordingly Firewall Outbound bi-directional socket Kept alive in background
  • 154. Integrated Getting my application to talk nicely with others Demo - Using .NET Service Bus
  • 155. Integrated Getting my application to talk nicely with others What do we take away from this section?
  • 156. Integrated Takeaways WCF 4.0 provides an easier “on ramp” compared to previous versions Discovery and Service Announcements in WCF .NET Service Bus will open up new application types
  • 158. Extensibility Extending and deploying my application Back to 1994 Adding functionality to my application required a re-install.
  • 159. Extensibility Extending and deploying my application Back to 1994 …and deploying was a weekend’s worth of overtime.
  • 160. Extensibility Extending and deploying my application Since then... DI (Dependency Injection) and IoC (Inversion of Control), different ways to get bits to the box
  • 161. Extensibility Extending and deploying my application How about now? What am I excited about now? MEF and improvements to ClickOnce
  • 162. Extensibility Extending and deploying my application What is MEF?
  • 163. Extensibility Extending and deploying my application MEF – Managed Extensibility Framework
  • 164. Extensibility Extending and deploying my application Catalog CustomExportProvider CatalogExportProvider MutableExportProvider Composition Container Part Part Part Exports Exports Exports Imports Imports Imports
  • 165. Extensibility Extending and deploying my application What’s this look like in my app?
  • 166. Extensibility Extending and deploying my application Declare the interface for your extension public interface IMessageSender { void Send(string message); }
  • 167. Extensibility Extending and deploying my application Add the Export attribute to your add-in [Export(typeof(IMessageSender))] public class EmailSender : IMessageSender { public void Send(string message) { Console.WriteLine(message); } }
  • 168. Extensibility Extending and deploying my application Create the container in your host application private void Compose() { var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); var container = new CompositionContainer(catalog); container.ComposeParts(this); }
  • 169. Extensibility Extending and deploying my application Import the parts you are going to use [Import] public IMessageSender MessageSender { get; set; }
  • 170. Extensibility Extending and deploying my application Extensibility is easier, but isn’t application deployment still painful?
  • 171. Extensibility Extending and deploying my application .NET Framework Size and Reboots
  • 172. Extensibility Extending and deploying my application .NET 4 Client: 28 MB X86 Client Profile, 48MB X86/X64 Full Profile 250 Size on media combined x86/x64 package 200 Size in Megabytes 150 100 50 0 "2.0" "3.0" "3.5" "3.5SP1" "4.0 Full" "4.0 Client"
  • 173. Extensibility Extending and deploying my application Brandable Experience
  • 174. Extensibility Extending and deploying my application Configurator Tool: http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962 Client Profile Configuration Designer “How To” Series: http://windowsclient.net/wpf/wpf35/wpf-35sp1-start-here.aspx
  • 175. Extensibility Extending and deploying my application Improved ClickOnce Experience
  • 176. Extensibility Extending and deploying my application Click Once Improvements – Command-line arguments for CO deployed apps – File associations for CO deployed apps – Background Updates for CO apps
  • 177. Extensibility Extending and deploying my application Demo - Updating a ClickOnce Application
  • 178. Extensibility Extending and deploying my application What do we take away from this section?
  • 179. Extensibility Takeaways MEF enables you to think about extensibility from day one Client requirements are becoming less, and ClickOnce improving Challenge the notion that deployment is still hard
  • 181. Call to Action What’s next? Look at your LOB applications using the 5 characteristics Don’t be afraid to challenge some of your assumptions/decisions Be excited about the potential coming in the next wave!
  • 182. simon.guest@microsoft.com http://simonguest.com © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.