Microsoft, SOA and the future : Microsoft, SOA and the future Daniel Akenine
Architect Evangelist
Microsoft
Systemutveckling - Trender : Systemutveckling - Trender Systemutveckling blir bara enklare och enklare…
Systemutveckling blir bara svårare och svårare…
Trend 1 Trend 2
Slide3 : Hypotes: Vi kan göra allt mer komplexa saker – därför gör vi det…
Evolution : Evolution Polymorphism
Encapsulation
Subclassing Message-based
Schema+Contract
Binding via Policy 1980s 2000s Interface-based
Dynamic Loading
Runtime Metadata 1990s Object-Oriented Service-Oriented Component-Based
Service orientation is a means for building distributed systems... : Service orientation is a means for building distributed systems... At its most abstract, service orientation views everything—from the mainframe application to the printer to the shipping dock clerk to the overnight delivery company—as a service provider... Service providers expose capabilities through interfaces. Service-oriented architecture maps these capabilities and interfaces so they can be orchestrated into processes The service model is "fractal": the newly formed process is a service itself, exposing a new, aggregated capability. Some SOA definitions
SOA är ett ägg : SOA är ett ägg En lantbrukare föreställer sig en kyckling En kock ser en omelett Ett barn ser ett ägg att måla på Vad ser du ?
Vad är SOA för Microsoft? : Vad är SOA för Microsoft? An approach to building systems using autonomous services which adhere to the 4 tenets of Service Orientation
Boundaries are Explicit
Services are Autonomous
Services share schema and contract, not class
Service compatibility is determined based on policy Tenet \Ten"et\, n.
Any opinion, principle, dogma, belief, or doctrine, which a person holds or maintains as true. Source: Webster's Revised Unabridged Dictionary, © 1996, 1998
The “service oriented world” : The “service oriented world”
.NET : .NET User Experiences Web Services PCs and
Smart
Devices Infrastructure Identity Notification Application Center 2000 BizTalk Server 2000 Commerce Server 2000 Exchange 2000 SQL Server 2000 ISA Server 2000 Mobile Information 2001 Server Host Integration Server 2000 VisualStudio.NET .NET Framework Developer
Tools
Services Distributed Objects : Services Distributed Objects Messages Agreements Programming
Language Object Model Application
Server Database Operating
System Database Operating
System Programming
Language Object Model Application
Server You Your
Partner Tightly coupled distributed object solution Service Oriented Architecture
Så hur passar objektorientering in ? : Så hur passar objektorientering in ? Object Orientation
Assume homogeneous platform and execution environment
Share classes, not schemas
Assume cheap, transparent communication
Are linked: Object identity and lifetime maintained by infrastructure
Typically require deployment of both client and server in sync
Are easy to talk about and become a natural path for customers to follow
Customers have 20+ years of experience and great intuition about what “object oriented is” Service Orientation
Assume heterogeneous platform and execution environment
Share schemas, not classes
Assume variable cost, explicit communication
Are autonomous: Security and failure isolation are a must
Ease “continuous deployment” of client and server separately
Builds on ideas from component software, distributed objects, and MOM
Dominant theme is to manage/reduce sharing between services
Objektorientering är här för att stanna !
Implementing SOA with Web Services : Implementing SOA with Web Services
Integration : Integration Windows CLR .NET Security Adapters Orchestration ES MSMQ Linux JVM J2EE Security JCA ebXML JTA JMS
Vad har SOA för nackdelar ? : Vad har SOA för nackdelar ?
Kräver mer design och modellering
Kräver mer av systemutvecklaren
Kräver mer teknik för säkerhet och transaktioner
Vad vill jag säga ? : Vad vill jag säga ?
Deployment
Säkerhet
Orkestrering
Change Management
Test
Profiling
Prestanda
Modellering
Slutsats:Utvecklingsverktygen MÅSTE hjälpa oss med att hantera den nya komplexiteten… : Slutsats: Utvecklingsverktygen MÅSTE hjälpa oss med att hantera den nya komplexiteten…
Outinvesting Industry PeersTotal R&D Investments : Outinvesting Industry Peers Total R&D Investments Siebel .3 Microsoft Dell IBM Sun Oracle Intel HP Cisco Nokia Microsoft Pfizer J&J Novartis AstraZeneca Merck Pharmacy Company R&D Spend
FY’03 (except Microsoft), $B Technology Company R&D Spend
FY’03 (except Microsoft), $B *Forecast for FY’04; SAP BEA .1 .5
Visual Studio Team System : Visual Studio Team System Visual Studio Team Foundation Visual Studio Team Architect Visual Studio Team Developer Visual Studio Team Test
Visual Studio Team System : Visual Studio Team System Visual Studio Team Foundation Visual Studio Team Architect Visual Studio Team Developer Visual Studio Team Test
Team Architect : Team Architect Distributed Application Designer
Whiteboard mode for application design
Web Services Enhancements (WSE) support
Validation against logical infrastructure
Logical Infrastructure Designer
Settings and constraints editor
SDM generation and compiler
Click-once support
Class Designer
Two-way code synchronization
Application Designer : Application Designer
Logical Infrastructure Designer : Logical Infrastructure Designer
Class Designer : Class Designer
Microsoft SOA Technology : Framtiden Indigo
Longhorn
Federation Server
Visual Studio 2007? (Orcas) Imorgon ASMX (VS2005 enhancements)
WSE 3.0
Indigo (Beta)
Visual Studio 2005
Longhorn (Beta)
SQL Server 2005 Idag Microsoft SOA Technology ASMX (aka ASP.NET Web Services)
Windows XP, Server 2003, .NET
Visual Studio 2003
WSE 2.0
Office System 2003
BizTalk Server 2004
SQL Server 2000
SOA Technology Roadmap : SOA Technology Roadmap Indigo kommer att ersätta nuvarande teknologier
Andra teknologier kommer att fortsätta stödjas Indigo ASMX Enterprise Services .NET Remoting Com(+) MSMQ ASMX WSE1 WSE2 WSE-n
Road to Indigo Secure, Reliable, Transacted – ASP.NET : Road to Indigo Secure, Reliable, Transacted – ASP.NET class EntityService {
[WebMethod]
public void AddEntity( string entity )
{
// Custom security
X509CertificateCollection collection = new X509CertificateCollection();
IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB)));
IntPtr data = (IntPtr)((int)blob +
Marshal.SizeOf(typeof(CRYPTOAPI_BLOB)));
. . .
// Custom reliable messaging
SeqAckRange range = new SeqAcknRange( id, low, high );
SeqAckRange[] ranges = { range };
ReliableQueue.ProcessAcks( ranges );
. . .
// Custom DTC transaction context
hr = pITxDispenser->BeginTransaction (NULL,
ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions,
&pITransaction);
. . .
}
}
Road to Indigo Secure, Reliable, Transacted – WSE : Road to Indigo Secure, Reliable, Transacted – WSE class EntityService {
[WebMethod]
public void AddEntity( string entity )
{
// Integrated WS-Security support
foreach ( SecurityToken token in requestContext.Security.Tokens )
{ X509SecurityToken x509 = token as X509SecurityToken;
. . .
}
// Custom reliable messaging
SeqAckRange range = new SeqAcknRange( id, low, high );
SeqAckRange[] ranges = { range };
ReliableQueue.ProcessAcks( ranges );
. . .
// Custom DTC transaction context
hr = pITxDispenser->BeginTransaction (NULL,
ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions,
&pITransaction);
. . .
}
}
Road to IndigoSecure, Reliable, Transacted – Indigo : Road to Indigo Secure, Reliable, Transacted – Indigo [Confidentiality]
[Reliability( Guarantees.ExactlyOnce | Guarantees.InOrder )]
[Service]
class EntityService
{
[TransactionCoupling( TransactionCouplingOptions.Required )]
[ServiceMethod]
void AddEntity( string entity )
{
. . .
}
}
Slutsatser : : Slutsatser : Alla IT leverantörer mobiliserar sig för SOA
Microsoft och IBM är drivande
Verktygen kommer att bli större, viktigare och hantera allt mer
Slide31 : Läs mer om SOA på:
http://msdn.microsoft.com/architecture/soa/
http://www.microsoft.se/arkitekt Daniel Akenine dakenine@microsoft.com
Visual Studio Team System : Visual Studio Team System Visual Studio Team Foundation Visual Studio Team Architect Visual Studio Team Developer Visual Studio Team Test
Team Developer : Team Developer Static code analysis
Support for managed and native code
Code profiling
Sequence view examines running threads
GC view of object allocation and lifetime
Caller-callee, callstack, and function views
Code coverage
Integrated unit testing and framework
Static Code Analysis : Static Code Analysis
Code Coverage : Code Coverage
Unit Testing : Unit Testing
Team DeveloperV2 Roadmap : Team Developer V2 Roadmap Runtime Analysis:
System level profiling and application monitoring
Integration of runtime analysis with operations
Static Analysis:
Editor integration (Squigglies)
More rules & targets
Visual Studio Team System : Visual Studio Team System Visual Studio Team Foundation Visual Studio Team Architect Visual Studio Team Developer Visual Studio Team Test
Team Test : Team Test Load testing
Web services load testing via protocol-based script
Perf counter collection and threshold monitoring
Test case management
Load Testing Creation : Load Testing Creation
Load Testing : Load Testing
Test Case Management : Test Case Management
Team TestV2 Roadmap : Team Test V2 Roadmap Functional UI Testing
For Avalon, Windows.Forms, Win32, and IE
Test Lab Management
Setup, tear down, distribution, and baselining
Historical Code Coverage Trends on a per-method basis
Test Case Prioritization
Visual Studio Team System : Visual Studio Team System Visual Studio Team Foundation Visual Studio Team Architect Visual Studio Team Developer Visual Studio Team Test
Team Foundation : Team Foundation Work Item management
Project management
Microsoft Project and Excel integration
Change management
Branching, changesets, shelving
Build Server
Reporting and analytics
Project portal
Project creation and navigation
Project Creation Wizard
Process editor for customized guidance
Work Items Everywhere : Work Items Everywhere
Change ManagementCheck In : Change Management Check In
Slide48 : Build Server
Reporting : Reporting
Project Portal : Project Portal
Project Creation : Project Creation
Vad är SOA för Microsoft? : Vad är SOA för Microsoft? An approach to building systems using autonomous services which adhere to the 4 tenets of Service Orientation
Boundaries are Explicit
Services are Autonomous
Services share schema and contract, not class
Service compatibility is determined based on policy Tenet \Ten"et\, n.
Any opinion, principle, dogma, belief, or doctrine, which a person holds or maintains as true. Source: Webster's Revised Unabridged Dictionary, © 1996, 1998
Tenet 1: Boundaries are Explicit : Tenet 1: Boundaries are Explicit You know where the boundaries are
Crossing service boundaries can be costly
Consciously opt in to SOA
Explicit message passing
Agnostic to platform, middleware, language choices
Tenet 2: Services are Autonomous : Tenet 2: Services are Autonomous Services in a system are deployed, managed, versioned independently
Topology of a system evolves over time
Services expect to run in the wild
Consuming apps can and will fail
Without notice or notification
Mitigate with transactions, queues
Assume probability of malformed or malicious messages
Require signing, authentication
Use trust relationships, not logins
Tenet 3: Services Share Schema and Contract, not Class : Tenet 3: Services Share Schema and Contract, not Class Services interact solely on
schemas for structures
contract for behaviors
Contracts and schema remain stable over time
Ergo, schema and contract must be flexible
Tenet 4: Service Compatibility is Determined Based on Policy : Tenet 4: Service Compatibility is Determined Based on Policy Structural compatibility (what we’ll say) separate from semantic compatibility (how we’ll say it)
Services express capabilities and requirements in terms of a machine readable policy expression