Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software...
Transcript of Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software...
Thomas Leung & Jonathan TongMicrosoft ServicesMicrosoft Hong KongSession Code: DEV383
Agenda
Framework & Architecture
Practical Architecture
Case Study 1
Case Study 2
Q&A
What exactly is a “Framework”?
A set of ideas, principles, agreements, or rules that provides the basis or outline for something intended to be more fully developed at a later stage (e.g. - providing a framework for next week's discussions)
A Software Framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an Application Programming Interface (API). [from Wikipedia]
What exactly is an “Architecture”?
Architecture is the activity of designing and constructing buildings and other physical structures by a person or a machine, primarily to provide socially purposeful shelter. [From Wikipedia]
From a software perspective, an Architecture is a design (or “blueprint”) of an application system, which may leverage one or more Frameworks. An Enterprise Architecture is an even higher level design that attempts to encompass multiple application system under a common overall design.
What comes first? Architecture or Framework(s)?
May depend on maturity of current organization:
• Do Frameworks already exist?
• Is a Partial or Full Architecture in place today?
• Are application building blocks in use today?
Architecture can be created without Frameworks in existence. However, the existence of well defined Frameworks can greatly enhance and simplify architecture and design.
Architecture can identify and drive the need for Frameworks. Therefore, it may be appropriate to develop and evolve
Architecture and Frameworks in parallel.
Why create and leverage Frameworks?
Simplifies common programming tasks (provide high level building blocks that programmers can leverage).
Enforces consistency and standards. All developers call the same framework API for application services.
May insulate applications from many changes that can be encompassed at the Framework level instead.
What types of functions may be best placed in Frameworks?
Caching Events (special handling) Security
Codes Exception Handling Session/State
Collections Globalization Storage Virtualization
Data Access Messaging Threading
Data and Work Flow Object Pooling Utilities
Diagnostics/Logging Remoting Transaction Demarcation
Doc. Management Resource Allocation Web Services
…and much more!
Example of a single Framework API from a functionality standpoint (logging)
SNMPFlat FileIDataSourceSMTPEvent LogMSMQ
Transport TramsportTransport Event Log Transport
Filter
Formatter Formatter Formatter
Transport Transport
Formatter Formatter
Filter Filter Filter Filter
Pre-Process Handlers
Formatter
Filter
Post-Process Handlers
Note: a lot of functionality can be exposed in a simple way
Question for You
An Application Architecture
Framework:WCF, WF, WPF,
AJAX, SilverLight,
Entity Framework, Enterprise Library, etc
An Enterprise Architecture
Start with Contoso Cash Flow
0
10
20
30
40
50
60
70
2008 2009 2010 2011 2012
$ (
In M
illi
on
s)
Revenue
Expenses• Failure of mortgage-
backed securities
• Nosedive of lenders, financial institutions and markets.
• Government Intervention & bailouts
Practical Architecture
Driving alignment between business and IT is more important than ever
Recession delivers unparalleled opportunities for innovation
Four Forces of Practical Architecture
0
10
20
30
40
50
60
70
2008 2009 2010 2011 2012
Do
llar
s
Revenue
Expenses
Driving Effective Architecture -Some best practices
Business Goals:
Maintain focus on the business
Use well-known patterns
Deliver “value-up” in small, rapid iterations
Value Up
User Goals:
Stay focused on users—ultimately they decide the fate of any IT project.
Intensify customer connected engineering Customer Advisory Board, Stories / Scenarios, Prioritization, Feedback (continuous communication)
Grow trust & build relationships
Constantly amaze! (set user expectation)
Technology Goals:
System performance depends on how parts interact, not on how they work separately
Taking a holistic approach can be more effective than addressing each subsystem individually
Recommended Reading:Architecture Journal 20: Architecture in Turbulent Times
Software Engineering with Visual Studio Team System
patterns & practices Application Architecture Guide 2.0
Pragmatic Patterns for Architects (Webcast Series)
Patterns of Enterprise Architecture, Martin Fowler
Patterns & Practices
Microsoft Operations Framework
Solution Accelerators
MSDN Architecture Center
Practical Projects: Creating Near-Term Efficiencies
Priority Area Metric Project
Optimize Current Infrastructure
Reduce cost per GB or DB
Data Warehousing
Reduce cost per server(s)
Server Consolidation
Reduce Friction Between Business Processes
Reduce number of steps
Process Integration
Increasetransactions per hour
ProcessOptimization
Optimize Current Infrastructure
Optimize Infrastructure Architecture
Automate data management
Virtualize and consolidate
Enable quicker response to changing business needs
Practical Projects: Help All Users Increase Productivity
Priority Area Metric Project
Deliver User-Focused Applications
Increase user satisfaction
Multi-Channel apps
Reduce time/cost per interaction
Wrapper legacy systems
Connect People and Teams
Increase output/reduce latency
Simplify collaboration
Increase software quality, productivity
Improved ALM
Deliver User-Focused Applications
Consider multi-channel architectures that support a range of presentation layers
Architecture Journal 10
Composite Application Guidance for WPF and Silverlight
Customer Care Framework
Codeplex: Managed Services Engine
Abstract complexity by wrapping existing systems—mainframes, SAP, etc.
Practical Projects: Find New Opportunities To Grow the Business
Priority Area Metric Project
Increase Customer Focus
Increase quality and usefulness
Data Integration
Increase accuracy and timeliness
Reporting and analytics
Improve OperationsInsight
Provide accurate and relevant KPIs
Performance Management
Increased visibility into processes
Business Activity Monitoring
Improve Business Insight
Improve customer focus: Create a single view of the customer
Improve customer insight with self-service reporting and analysis capabilities
Increase operations insight withKPIs, scorecards, dashboards and BAM
Read: Smart Business Intelligence Solutions with SQL Server 2008
Practical Architecture At-A-GlanceBusiness Goals Technology Goals User Goals
Maintain focus on the business
Take an agile approach
Use well-knownpatterns
Infra Apps ToolsIntensify user-centricity
Grow trust and build relationships
Constantly amaze!
Force Priority Area Metric Project
Optimization of Current Infrastructure
Reduce cost per GB or DB Data Warehousing
Reduce cost per server(s) Server Consolidation
Reduce Friction Between Business Processes
Reduce number of steps Process Integration
Increase transactions per hour Process Optimization
Increase Customer FocusIncreased quality and usefulness Data Integration
Increased accuracy and timeliness Reporting and Analytics
Improve operations insightProvide accurate and relevant KPIs Performance Management
Increased visibility into processes Business Activity Monitoring
Deliver User-Focused applications
Increase user satisfaction Multi-channel applications
Reduce time/cost per interaction Wrapper existing systems
Connect People and TeamsIncrease output/reduce latency Simplify collaboration
Increase developer productivity Improved ALM
Technology Considerations and Focus
ConsiderationsDomain Driven Design vsData Centric Design
O/RM Tools – NHibernate vsEntity Framework
Design and plan for technology roadmap
FocusMinimize changes due to technological evolution and user requirements
Layered architecture and layer isolation
Maintainability, Testability, and Supportability
Application Architecture
Technology Mapping• Windows Presentation Foundation (WPF)
• Pattern - Model-View-ViewModel (MVVM)Presentation Layer
• Windows Communication Foundation (WCF)
• Pattern - Remote Façade, Data Transfer Object Services Layer
• Domain objects
• Pattern - Domain ModelBusiness Layer
• O/RM Tools – NHibernate -> Entity Framework
• Pattern – RepositoryData (Access) Layer
• Local report generation on client sideReporting Layer
• WCF + BizTalk Server (ESB)Integration Layer
Technology Considerations and Focus
ConsiderationsPorting of code and business logic from legacy system
Support online and offline capability
Support both rich client and web based application
FocusTime to Market
Extensibility and Maintainability
Support country specific infrastructure
Application Architecture
Technology Mapping• Win Form + ASP.NET Web Form
• Pattern - Model-View-Controller (MVC)Presentation Layer
• Business entity objects
• Pattern – Table ModuleBusiness Layer
• Custom DAL + .NET Data Provider Framework
• Pattern – RepositoryData (Access) Layer
• SQL Server CE for standalone app (offline mode)
• SQL Server for web architecture (online mode)Data Store
• Local report generation on client sideReporting Layer
• WCF - integration with non-Microsoft platformServices Layer
Microsoft ServicesEnterprise Services Portfolio
TechnicalConsultingServices
TechnicalSupportServices
StrategyConsultingServices
Enterprise Strategy ConsultingIT Planning
Platform Value Realization
Enterprise-wide Architecture
Business Architecture
Program Planning & Management
Microsoft Consulting ServicesAssessment & Review Services
Planning, Architecture & Design Services
Operations Consulting
Customized Engagements
Microsoft Services Premier SupportDirect Support Relationship
Preventative Services
Problem Resolution Support
Knowledge Transfer and Workshops
http://microsoft.com/technet
Resources for IT Professionals
http://microsoft.com/msdn
Resources for Developers
www.microsoft.com/learning
Microsoft Certification & Training Resources
Resources
Complete an
evaluation on
CommNet and
enter to win!
© 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.