? data-driven apps and lightswitch teched sessions domain-driven design,.net and loosely-coupled...
TRANSCRIPT
Positioning Microsoft Development Technologies for Custom Application Development
Cesar De la Torre.NET Product ManagerMicrosoft [email protected]: @cesardelatorre
DEV-B204
Cesar De la Torre.NET Product ManagerMicrosoft [email protected]@cesardelatorre
Sessions Mini-track for LOB app. development
Data-Driven apps and LightSwitchTechEd sessions
Domain-Driven Design, .NET and Loosely-coupled
approachesTechEd sessions
Windows Apps Modernization
TechEd sessions
Session DEVB204 - Positioning Microsoft development technologiesCesar de la Torre
Jimmy Nilsson: Developing Core Business Applications with DDD and .NET
(DEV-B311) June 26, 2013 from 5:00PM to 6:15PM
Per Rovegård: Real Experiences and Architectural DDD Patterns Applied on .NET
(DEV-B343) June 27, 2013 from 12:00PM to 1:15PM
Julie Lerman: Entity Framework in Core Business Applications and DDD Approaches
(DEV-B336) June 27, 2013 from 3:15PM to 4:30PM
Understanding Dependency Injection and Those Pesky Containers
(DEV-B207) June 27, 2013 from 5:00PM to 6:15PM
Heinrich Wendel: Building Modern, HTML5-Based Business Apps on Windows Azure with Microsoft Visual Studio LightSwitch
(DEV-B307) June 26, 2013 from 10:15AM to 11:30AM
Heinrich Wendel : Building Modern, HTML5-based Business Apps for SharePoint 2013 with Visual Studio LightSwitch
(DEV-B342) June 28, 2013 from 2:45PM to 4:00PM
Glenn Condron : Entity Framework 6: Database Access Anywhere, Easily
(DEV-B335) June 25, 2013 from 3:15PM to 4:30PM
Brian Noyes : Building Windows Store Line-of-Business Applications
(DEV-B358) June 26, 2013 from 8:30AM to 9:45AM
Brian Noyes : Design Guidance for Windows Store Line-of-Business Apps
(DEV-B309) June 27, 2013 from 5:00PM to 6:15PM
Cesar de la Torre: Modernizing WPF Line-of-Business Applications
(DEV-B325) June 27, 2013 from 12:00PM to 1:15PM
Choosing Technology depending on your Application and Business prioritiesTechnologies and approaches
Businesspriorities Short Time-to-market versus long-term
investment.
Departmental versus enterprise mission-critical.
engage customers versus Run the business
RADs versus loosely-coupled architectures?.
Data-driven versus Domain-Driven?.
Modern-apps versus Desktop applications?.
Infrastructure services
Application services
Client software
Deployment environment
On Premises Private Cloud Public Cloud
ALM
& d
evelo
pm
en
t tools
Browser
LightSwitch HTML5
HTML5+JavaScript
JavaScript Libs
Native mobile (Windows 8 and Windows Phone 8)
.NET/XAMLHTML5/WinJS
C++
Desktop
.NET WPF/
WinForms
Apps for Office
C++
Web presentation/UI services
LightSwitch server
ASP.NETWebForms
ASP.NETMVC & SPA
Services
LightSwitch OData
services
ASP.NET Web API (REST)
WCF Workflow services
Collaboration and portals
Apps for SharePoint
Full-trust SharePoint
Sites
SharePointServices
Custom application platform
Custom component
s
Entity models
CacheSecurity,
authorizationApp.
workflows
Messaging
Service-Bus Queues
Business products and platforms
Dynamics CRMDynamics AX/
NAV/GP/SL
Storage
FilesSQL
ServerNo SQL Big-Data
App/Web server
IIS (Web Server)
AppFabric
Identity & access
Authentication
Federation
Instrumentalization & monitor
System Center
Microsoft Development Platform Technologies
?
Foundational Applications for the Business
Small/medium Business Applications
Large Mission criticalBusiness Applications
Productivity | Easy to get started Long-term | Core business.
ApproachesData-driven development.
Simple approaches
Rapid development (RAD).
ApproachesDomain-driven design or similar.
Decoupled architectures.
Long-term, evolving maintenance.
Categorizing Applications or Sub-
Systems?
Mission-Critical Application
Small-med size Application
Mission-Critical Core-BusinessSub-system
Collateral & simple Subsystem
Collateral & simple Subsystem
Collateral & simple Subsystem
Large compositeapplication
VS.
Data-Driven ApplicationsWhat is a Data-Driven Application?
Basically, it is a CRUD application (CREATE, READ, UPDATE, DELETE).
The Business Logic volume is usually low ISSUE when evolving to large volumes of business logic
CREATEREADUPDATEDELETE
Application
User’s knowledge
ProceduresManualData-Driven
Applications
Infrastructure services
Application services
Client software
Deployment environment
On Premises Private Cloud Public Cloud
ALM
& d
evelo
pm
en
t tools
Browser
LightSwitch HTML5
HTML5+JavaScript
JavaScript Libs
Native mobile (Windows 8 and Windows Phone 8)
.NET/XAMLHTML5/WinJS
C++
Desktop.NET WPF/
WinFormsLightSwitch
Apps for Office
C++
Web presentation/UI services
LightSwitch server
ASP.NETWebForms
ASP.NETMVC & SPA
Services
LightSwitch OData
services
ASP.NET Web API (REST)
WCF Workflow services
Collaboration and portals
Apps for SharePoint
Full-trust SharePoint
Sites
SharePointServices
Custom application platform
Custom component
s
Entity models
CacheSecurity,
authorizationApp.
workflows
Messaging
Service-Bus Queues
Business products and platforms
Dynamics CRMDynamics AX/
NAV/GP/SL
Storage
FilesSQL
ServerNo SQL Big-Data
App/Web server
IIS (Web Server)
AppFabric
Identity & access
Authentication
Federation
Instrumentalization & monitor
System Center
Scenario: Small/medium 3-Tier Desktop Application
Infrastructure services
Application services
Client software
Deployment environment
On Premises Private Cloud Public Cloud
ALM
& d
evelo
pm
en
t tools
Browser
LightSwitch HTML5
HTML5+JavaScript
JavaScript Libs
Native mobile (Windows 8 and Windows Phone 8)
.NET/XAMLHTML5/WinJS
C++
Desktop
.NET WPF/
WinForms
Apps for Office
C++
Web presentation/UI services
LightSwitch server
ASP.NETWebForms
ASP.NETMVC & SPA
Services
LightSwitch OData
services
ASP.NET Web API (REST)
WCF Workflow services
Collaboration and portals
Apps for SharePoint
Full-trust SharePoint
Sites
SharePointServices
Custom application platform
Custom component
s
Entity models
CacheSecurity,
authorizationApp.
workflows
Messaging
Service-Bus Queues
Business products and platforms
Dynamics CRMDynamics AX/
NAV/GP/SL
Storage
FilesSQL
ServerNo SQL Big-Data
App/Web server
IIS (Web Server)
AppFabric
Identity & access
Authentication
Federation
Instrumentalization & monitor
System Center
Scenario: Small/medium Web Application
Visual Studio 2012UPDATE 2Release date:April 4th 2013
As part of the VS UPDATE 2, a new version of LightSwitch was released, including the LightSwitch HTML5 Client final version.
Great for Web Data-Driven applications
LightSwitch HTML5 Client
VS 2012 UPDATE 2 Download:http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update
Infrastructure services
Application services
Client software
Deployment environment
On Premises Private Cloud Public Cloud
ALM
& d
evelo
pm
en
t tools
Browser
LightSwitch HTML5
HTML5+JavaScript
JavaScript Libs
Native mobile (Windows 8 and Windows Phone 8)
.NET/XAMLHTML5/WinJS
C++
Desktop
.NET WPF/
WinForms
Apps for Office
C++
Web presentation/UI services
LightSwitch server
ASP.NETWebForms
ASP.NETMVC & SPA
Services
LightSwitch OData
services
ASP.NET Web API (REST)
WCF Workflow services
Collaboration and portals
Apps for SharePoint
Full-trust SharePoint
Sites
SharePointServices
Custom application platform
Custom component
s
Entity models
CacheSecurity,
authorizationApp.
workflows
Messaging
Service-Bus Queues
Business products and platforms
Dynamics CRMDynamics AX/
NAV/GP/SL
Storage
FilesSQL
ServerNo SQL Big-Data
App/Web server
IIS (Web Server)
AppFabric
Identity & access
Authentication
Federation
Instrumentalization & monitor
System Center
Scenario: Large Core-Business systems
Approaches for Core Domain/Business applications
S.O.L.I.D. principles.
Patterns of Enterprise Applications Architecture.
Martin Fowler.
Domain-driven design (DDD).
Eric Evans, Jimmy Nilsson, Vaughn Vernon, etc.
CQRS (Command and Query Responsibility Segregation).Microsoft P&P ‘CQRS Journey,’ Greg Yound, Udi Dahan.
Event driven andEvent sourcing.
Greg Young, Martin Fowler, etc.
Decoupled architectures.
Use of Dependency Injection and IoC containersMicrosoft P&P Unity, MEF, Ninject, Castle Windsor, etc.
Behavior-driven design (BDD) and TDD.
Dan North, Chris Matts, etc.Frameworks: SpecFlow, Nspec, Cuke4Nuke, Nbehave, and MSpec.
• Single Responsibility principle.• Open/close principle.• Liskov substitution principle.• Interface segregation principle.• Dependency Inversion principle.
BOUNDED CONTEXT C
BOUNDED CONTEXT D
Several subsystems or bounded-contexts with different architectures
BOUNDED CONTEXT A
BOUNDED CONTEXT B
Unified UI—Visual aggregation
UI
DALDDD
Layered
CQRS Legacysystem
CRUD or data-drivenarchitecture
for simple tasks
DDD Layered architecture
for core-domain
CQRS for core-domain
Oldarchitecture
(legacy)
LARGE APPLICATION
BackgroundServer Tier
Web/app Tier
DatabaseTier
MyApp-Event-Bus (In-memory or Service Bus or Queues, etc.)Asynchronous communication
Integration Events Integration Events Integration Events Integration Events
Services
Devices
+
+
Emerging patterns
Application patterns evolution
Servers
Client
Established patterns
Established application patternsFoundational applications for the businessWeb and desktop applicationsCentered on existing business processes
Modern Business Applications
Small/Medium Business ApplicationsProductivityEasy to get started
Large Mission-Critical Business ApplicationsLong-TermCore-Business
Emerging application patternsEnd-user centricInnovationMobility & Cloud
FoundationalBusiness
NewExperiences
Exte
nd
ing
FixedOn-Premises
Elastic Cloudand Hybrid
Evolv
ing
.NET Application Modernization
Windows Store
Windows Phone
Non-Microsoft native apps
NATIVE APPLICATIONS
WEB APPLICATIONS
Web-PC form factor
On-premises only Hybrid
SERVICES
Web tablet / phone form-factors
Desktop-only
Cloud
Summary
Emerging application patternsInnovation | Mobility | Cloud
TechnologiesCompelling UI technologies.Windows native apps.NET/WinRT, HTML5/WinRT, C++.Web apps.HTML5/JS + jQuery+ ASP.NET.
Small/medium Business Applications
Productivity | Easy to get started.
ApproachesData-driven development.Productive dev. environment.Rapid development (RAD).Keep flexibility and extensibility.
TechnologiesEnd-to-end productive technologies.LightSwitch.ASP.NET web forms or MVC.Apps for SharePoint.Apps for Office.WPF.ASP.NET Web-API or WCF Services.Entity framework model and DB first.SQL Server.Windows Server or Windows Azure.
Mission-criticalBusiness Applications
Long term | Core business.
ApproachesDomain-driven design or similar.Decoupled architectures.Long-term agile maintenance.QoS (Quality of Service)High scalability.
TechnologiesFine-grain technologies.MVC and SPA (Single Page Applications)WPF for desktop.ASP.NET Web-API services or WCF services.Custom .NET libraries and layers.Inversion of control containers and DI.Entity framework POCO Codefirst.Service bus (Azure or server).Workflow foundation.SQL Server.Windows Server or Windows Azure.
SPA (single page applications).LightSwitch HTML5 client.Continuous services – backend.ASP.NET Web-API services.Windows Azure services and DB.
ApproachesNative or Web client.Mash-up apps consuming services.Differentiators based on client side.Need services as backend.
Select architecture approaches technologies depending on your specific application’s priorities.
In large applications, when selecting architectural approaches, think about subsystems/bounded-contexts rather than the whole application.
Modernize your established applications with decoupled subsystems/bounded contexts.
Takeaways
msdn
Resources for Developers
http://microsoft.com/msdn
Learning
Microsoft Certification & Training Resources
www.microsoft.com/learning
TechNet
Resources
Sessions on Demand
http://channel9.msdn.com/Events/TechEd
Resources for IT Professionals
http://microsoft.com/technet
Cesar de la Torre.NET Product ManagerMicrosoft [email protected]: cesardelatorre
© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows 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.