Upload
moris-shepherd
View
217
Download
0
Embed Size (px)
Citation preview
“Indigo”: Connected Application Technology Roadmap
Joe LongProduct Unit ManagerMicrosoft [email protected]
WSV302
2
Tools
Client Application Model
Avalon Windows Forms
Web & Service Application Model
ASP.NET / Indigo Win FSCompact
FrameworkYukon Mobile PC Optimized
System.HelpSystem.Help
System.DrawingSystem.Drawing
System.NaturalLanguageServicesSystem.NaturalLanguageServices
Data Systems Application Model
Presentation Data
Mobile PC & Devices Application Model
Communication
Command Line
NT Service
DataSetDataSet
MappingMapping
ObjectSpacesObjectSpaces
ObjectSpaceObjectSpace
QueryQuery
SchemaSchema
ItemItem
RelationshipRelationship
MediaMedia
AudioAudio
VideoVideo
ImagesImages
System.MessagingSystem.Messaging System.DiscoverySystem.Discovery
System.DirectoryServicesSystem.DirectoryServices
System.ServiceModelSystem.ServiceModel
System.Runtime.RemotingSystem.Runtime.Remoting
ActiveDirectoryActiveDirectory
UddiUddi
System.Web.ServicesSystem.Web.Services
Web.ServiceWeb.Service
DescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
System.MessageBusSystem.MessageBus
TransportTransport
PortPort
ChannelChannel
ServiceService
QueueQueue
PubSubPubSub
RouterRouter
System.TimersSystem.Timers
System.GlobalizationSystem.Globalization
System.SerializationSystem.Serialization
System.ThreadingSystem.Threading
System.TextSystem.Text
System.DesignSystem.Design
Base & Application Services
Fundamentals
System.ComponentModelSystem.ComponentModel
System.CodeDomSystem.CodeDom
System.ReflectionSystem.Reflection
System.EnterpriseServicesSystem.EnterpriseServices
System.TransactionsSystem.Transactions
Security
System.Windows.TrustManagementSystem.Windows.TrustManagement
System.Web.SecuritySystem.Web.Security
System.MessageBus.SecuritySystem.MessageBus.Security
AuthorizationAuthorization
AccessControlAccessControl
CredentialsCredentials
CryptographyCryptography
System.Web.ConfigurationSystem.Web.Configuration
System.MessageBus.ConfigurationSystem.MessageBus.Configuration
System.ConfigurationSystem.Configuration
System.ResourcesSystem.ResourcesSystem.ManagementSystem.Management
System.DeploymentSystem.Deployment
System.DiagnosticsSystem.Diagnostics
Configuration Deployment/Management
System.WindowsSystem.Windows System.WindowsSystem.WindowsSystem.Windows.FormsSystem.Windows.Forms
System.ConsoleSystem.Console
System.ServiceProcessSystem.ServiceProcess
System.Windows.FormsSystem.Windows.Forms System.WebSystem.Web System.StorageSystem.Storage System.Data.SqlServ
erSystem.Data.SqlServer
AnimationAnimation
ControlsControls
ControlControl
DesignDesign
PanelPanel
ControlsControls
DialogsDialogs
SideBarSideBar
NotificationNotification
System.WindowsSystem.Windows
DocumentsDocuments
Text ElementText Element
ShapesShapes
ShapeShape
InkInk
UI ElementUI Element ExplorerExplorer MediaMedia
System.Windows.FormsSystem.Windows.Forms
FormsForms
ControlControl
Print DialogPrint Dialog
DesignDesign
System.Web.UISystem.Web.UI
PagePage
ControlControl
HtmlControlsHtmlControls
MobileControlsMobileControls
WebControlsWebControls
AdaptorsAdaptors
DesignDesign
PortsPorts
InteropServicesInteropServices
System.RuntimeSystem.Runtime
System.IOSystem.IO
System.CollectionsSystem.Collections
GenericGeneric
System.SearchSystem.Search
AnnotationsAnnotations
MonitoringMonitoring
LoggingLogging
RelevanceRelevance
System.DataSystem.Data
SqlClientSqlClient
SqlTypesSqlTypes
SqlXMLSqlXML
OdbcClientOdbcClient
OleDbClientOleDbClient
OracleClientOracleClient
CoreCore
ContactContact
LocationLocation
MessageMessage
DocumentDocument
EventEvent
System.StorageSystem.Storage
System.WebSystem.Web
PersonalizationPersonalization
CachingCaching
SessionStateSessionState
System.XmlSystem.Xml
SchemaSchema
SerializationSerialization
XpathXpath
QueryQuery
PermissionsPermissions
PolicyPolicy
PrincipalPrincipal
TokenToken
System.SecuritySystem.Security
System.CollaborationSystem.Collaboration
RealTimeEndpointRealTimeEndpoint
TransientDataSessionTransientDataSession
SignalingSessionSignalingSession
MediaMedia
ActivitiesActivities
HttpWebRequestHttpWebRequest
FtpWebListenerFtpWebListener
SslClientStreamSslClientStream
WebClientWebClient
System.NetSystem.Net
NetworkInformationNetworkInformation
SocketsSockets
CacheCache
System.WebSystem.Web
AdministrationAdministration
ManagementManagement
NavigationNavigation
Peer GroupPeer Group
PolicyPolicy
SerializationSerialization
CompilerServicesCompilerServices
RecognitionRecognition
System.SpeechSystem.Speech
SynthesisSynthesis
3
Base Operating System Services CLR
Transactions Storage
Protocols
Network Services
Kernel M
ode
Base Class LibrariesBase Class Libraries
Memory ManagerMemory Manager
Hosting LayerHosting Layer
Code ExecutionCode Execution LoaderLoader SecuritySecurity SerializationSerialization
LightweightTransactionsLightweightTransactions
TransactionCoordinatorTransactionCoordinator
KernelTransactionManager
KernelTransactionManager
LoggingServiceLoggingService
KernelKernel
Hardware Abstraction LayerHardware Abstraction Layer
ProcessManagerProcessManager
SecurityReference Monitor
SecurityReference Monitor
LPCFacilityLPCFacility
MemoryManagerMemoryManager
PowerManagerPowerManager
ConfigManagerConfigManager
Plug andPlayPlug andPlay
TransactedNTFSTransactedNTFS
Cache ManagerCache
ManagerUniversalData Format
UniversalData Format
FilterEngineFilterEngine
TPC, UDPIPV4, IPV6TPC, UDPIPV4, IPV6 IPSECIPSEC QOSQOS HTTP
ListenerHTTPListener
Internet Connection FirewallInternet Connection Firewall
Demand Activation and Protocol HealthDemand Activation and Protocol Health
PNRPPNRP NativeWiFiNativeWiFi SIPSIP TCP
ListenerTCP Listener
UDP ListenerUDP Listener
IPC ListenerIPC Listener
Network Class LibraryNetwork Class Library
GDI/GDI+GDI/GDI+ WindowManagerWindowManager
GlobalAudio Engine
GlobalAudio Engine
DirectXGraphicsDirectXGraphics
Graphics driversGraphics drivers
DDIDDI InputManagerInputManager
AudioDriversAudioDrivers
DirectX GraphicsMini port
DirectX GraphicsMini port
RedirectorsRedirectors
SCSI/FCSCSI/FC 802.3802.3 802.11802.11 ....
Device Drivers
ManagementManagement
Presentation Data Communication
WinFS Indigo
Make the connection
Windows FormsAvalon ASP.NET
ObjectSpacesObjectSpaces
DataSetDataSet
SQL XMLSQL XML
ProvidersProviders
Fram
ework
Services Schemas
Data Model
ADO.NET
Connectivity
Synchronization(WinFS, Win32..)Synchronization(WinFS, Win32..)
InfoAgent(PreferenceRules..)InfoAgent(PreferenceRules..)
FileSystem Services(MetaDataHandlers..)FileSystem Services(MetaDataHandlers..)
CalendarCalendar MediaMedia
DocumentDocument ……
ItemsItems
RelationshipsRelationships
ExtensionsExtensionsCommunications Manager (Port)Communications Manager (Port)
Messaging Services
Transport Channels(IPC, HTTP, TCP…)Transport Channels(IPC, HTTP, TCP…)
IO ManagerIO Manager
Channels (Datagram, Reliable, Peer, …)
Channels (Datagram, Reliable, Peer, …)
Policy EnginePolicy Engine
MessageEncoderMessageEncoder
ChannelSecurityChannelSecurity
QueuingQueuing
EventingEventing
RoutingRouting
TransactionTransaction
Desktop ServicesDesktop Services
Desktop WindowManagerDesktop WindowManager
Presentation Object ManagerPresentation Object Manager
Desktop Composition EngineDesktop Composition Engine
Animation andCompositionAnimation andComposition
Media Services
Hardware RenderingHardware Rendering
MediaProcessingMediaProcessing
Capture and SourcingCapture and Sourcing
Software Renderingand SinksSoftware Renderingand Sinks
Adaptive UIEngineAdaptive UIEngine
Page/SiteCompositionPage/SiteComposition
Personalization andProfiling ServicesPersonalization andProfiling Services
Membership and Security ServicesMembership and Security Services
Designer ServicesDesigner Services
Controls Interop EngineControls Interop Engine
ControlsControls
Windows Forms
ApplicationServicesApplicationServices
Application DeploymentEngine (Click-Once)
Application DeploymentEngine (Click-Once)
PeoplePeople GroupGroup
Identity &SecuritySystem
Identity &SecuritySystem
Collaboration
People andGroupsPeople andGroups
CollaborationHistoryCollaborationHistory
Real-TimeActivitiesReal-TimeActivities
SignalingSignalingFederationFederation
System Services
FAT 16/32FAT 16/32
FilterManagerFilterManager
DistributedFile SystemDistributedFile System
Backup /RestoreBackup /Restore
File ReplicationServiceFile ReplicationService
Virtual DiskServiceVirtual DiskService
Models
ServiceServiceObjectObject T/SQLT/SQL XMLXMLDocumentDocument UIUI MediaMedia
Connector
Communications Manager (Port)Communications Manager (Port)
Transport Channels(IPC, HTTP, TCP…)Transport Channels(IPC, HTTP, TCP…)
Channels (Datagram, Reliable, Peer, …)Channels (Datagram, Reliable, Peer, …)
Policy EnginePolicy Engine
MessageEncoderMessageEncoder
ChannelSecurityChannelSecurity
Service Model
Hosting Environments
Instance ManagerInstance Manager
Context ManagerContext Manager
TypeIntegrationTypeIntegration
ServiceMethodsServiceMethods
DeclarativeBehaviorsDeclarativeBehaviors
TransactedMethodsTransactedMethods
ASP.NETASP.NET .container.container .exe.exe NT ServiceNT Service DllHostDllHost
Messaging Services
System Services
QueuingQueuing
RoutingRouting
EventingEventing
……
Transaction Transaction
Federation Federation
……
Indigo ArchitectureIndigo Architecture
5
AgendaAgenda
I have an application – how do I make the binary work with Indigo?Now how do I move the code to Indigo?If I start writing a new app today, what should I do to best set myself up to move to Indigo?
I have an application – how do I make the binary work with Indigo?Now how do I move the code to Indigo?If I start writing a new app today, what should I do to best set myself up to move to Indigo?
6
Using Indigo With Existing SystemsA.k.a., Wire Interop
Using Indigo With Existing SystemsA.k.a., Wire Interop
7
The ProblemThe Problem
Can not recompile or redeploy the client or server applicationNeed to allow incremental upgrades of clients and/or servers
Can not recompile or redeploy the client or server applicationNeed to allow incremental upgrades of clients and/or servers
Client
API API
Infrastructure Wire Protocol Infrastructure
Server
8
Solution SpaceSolution Space
Teach existing infrastructure new protocolsBetter support for Services
Build internet scale, secure, reliable, transacted applications that can span trust boundariesExpose internal applications to business partners and customers safely
Ride the WaveBetter routers, firewalls, tools, etc.
Teach new infrastructure existing protocolsThis becomes a new programming model for building apps using the existing infrastructureWill not solve any of the fundamental issues that the existing protocols have (e.g., interoperability, internet scale, etc.)
Teach existing infrastructure new protocolsBetter support for Services
Build internet scale, secure, reliable, transacted applications that can span trust boundariesExpose internal applications to business partners and customers safely
Ride the WaveBetter routers, firewalls, tools, etc.
Teach new infrastructure existing protocolsThis becomes a new programming model for building apps using the existing infrastructureWill not solve any of the fundamental issues that the existing protocols have (e.g., interoperability, internet scale, etc.)
9
Architectural SolutionsArchitectural Solutions
Client
API
Infrastructure Wire Protocol
API
Infrastructure
Server
New Wire ProtocolInfrastructure
New
Wir
e P
roto
col
Infrastructure
New
Wir
e P
roto
col
10Upgraded Infrastructure(LH Client, LH Server)
Existing Infrastructure(W2K, XP, or W2K03)
Wire Interop OptionsWire Interop Options
Existing ProtocolsWeb Service Protocols
Infrastructure Protocols Infrastructure
ClientBinaries
ServerBinaries
Upgraded Upgraded
ExistingExisting
ExistingUpgraded
Upgraded Upgraded
Existing Upgraded
11
Indigo And Existing Technology Binary InteroperabilityIndigo And Existing Technology Binary Interoperability
It Just Works – no changes requiredASP.NET Web Services (ASMX)The latest version of Web Services Enhancements (WSE)
Upgrade to Longhorn requiredCOM+ and MSMQ
No Binary Interop.NET RemotingOlder versions of WSE
It Just Works – no changes requiredASP.NET Web Services (ASMX)The latest version of Web Services Enhancements (WSE)
Upgrade to Longhorn requiredCOM+ and MSMQ
No Binary Interop.NET RemotingOlder versions of WSE
Existing Protocols (DCOM/MSMQ) will be fully supported in Longhorn
12
COM+ Binary Interop DrilldownCOM+ Binary Interop Drilldown
13
COM+ Migration FundamentalsCOM+ Migration Fundamentals
Existing binaries just work; No recompilation requiredFocus on bridging service environments; COM+ services will interact seamlessly with Indigo servicesCOM+ applications can be accessed from Indigo clientsIndigo Web services can be accessed from COM clients
Existing binaries just work; No recompilation requiredFocus on bridging service environments; COM+ services will interact seamlessly with Indigo servicesCOM+ applications can be accessed from Indigo clientsIndigo Web services can be accessed from COM clients
14
HTTP
Load
Bala
ncin
g
HTTP
HTTP
HTTP
IISCOM+
IISCOM+
IISCOM+
TDS
SQL
SQLTDS
TDS
Cluster
Firew
all
HTTP
COM+ Wire Interop – ASP AppCOM+ Wire Interop – ASP App
Upgraded Upgraded
Existing Upgraded
Expose as a Web Service
IISCOM+
IISCOM+
IISCOM+
COM+
COM+
COM+
15
COM+ Scenario: Rich ClientCOM+ Scenario: Rich Client
Rich Client
API
COM+ DCOM
API
COM+
Server
Web Services
COM+
Expose as a Web Service
COM+
Upgraded Upgraded
Existing Upgraded
16
COM+ Binary Migration Details COM+ Binary Migration Details
RequirementsUse a TLBBe installed in COM+Declare all co-classes and all interfaces on each co-class in the tlbDeclare explicit interface types as parameters
AvoidExplicit use of COSERVERINFO
Let config decide where the service lives
Using interface pointers in custom UCPsMarshal-by-value approach works better
Calling CoSetProxyBlanket after first use of proxy
Will not be supportedProxy/stub marshalling
RequirementsUse a TLBBe installed in COM+Declare all co-classes and all interfaces on each co-class in the tlbDeclare explicit interface types as parameters
AvoidExplicit use of COSERVERINFO
Let config decide where the service lives
Using interface pointers in custom UCPsMarshal-by-value approach works better
Calling CoSetProxyBlanket after first use of proxy
Will not be supportedProxy/stub marshalling
17
MSMQ Binary Interop DrilldownMSMQ Binary Interop Drilldown
18
MSMQ Server Wire InteropMSMQ Server Wire Interop
Client
API
MSMQ MSMQ / SRMP
API
MSMQ
Server
Web Services
MSMQ
Expose as a Web Service
MSMQ
Upgraded Upgraded
Existing Upgraded
19
MSMQ Binary Migration Details MSMQ Binary Migration Details
RequirementsUpgrade the platform
AvoidNothing: The full set of MSMQ features will interop
Will not be supportedNothing: The full set of MSMQ features will interop
RequirementsUpgrade the platform
AvoidNothing: The full set of MSMQ features will interop
Will not be supportedNothing: The full set of MSMQ features will interop
20
Other Programming ModelsOther Programming Models
ASMX: Indigo V1 will fully support ASMX wire protocol (SOAP 1.1 and SOAP 1.2)WSE: The last version of WSE will have wire interop with Indigo V1.NET Remoting: No binary interop supported
Stay tuned for a great code migration path!
ASMX: Indigo V1 will fully support ASMX wire protocol (SOAP 1.1 and SOAP 1.2)WSE: The last version of WSE will have wire interop with Indigo V1.NET Remoting: No binary interop supported
Stay tuned for a great code migration path!
21
Why Upgrade Your InfrastructureWhy Upgrade Your Infrastructure
Better support for servicesBuild internet scale, secure, reliable, transacted applications that can span trust boundariesExpose internal applications to business partners and customers safelyRich client server internet applications enabledApplication context (e.g., transactions and security) flows across boundaries
Ride the WaveBetter routersBetter firewallsBetter toolsEtc.
Allows new clients to talk to existing serversMigrate at your own speed
Better support for servicesBuild internet scale, secure, reliable, transacted applications that can span trust boundariesExpose internal applications to business partners and customers safelyRich client server internet applications enabledApplication context (e.g., transactions and security) flows across boundaries
Ride the WaveBetter routersBetter firewallsBetter toolsEtc.
Allows new clients to talk to existing serversMigrate at your own speed
22
Migrating Existing Code To IndigoMigrating Existing Code To Indigo
23
Migrating Managed Code To The Indigo Programming ModelMigrating Managed Code To The Indigo Programming Model
Existing Code Base Simple and Mechanical
ASMX (ASP.NET Web Services) .NET Remoting Enterprise Services WSE System.Messaging
Simple and Mechanical: Read a whitepaper and write a script
24
Managed Code Migration DetailsManaged Code Migration Details
25
General MigrationGeneral Migration
The code “inside the function” will work unmodifiedParameters work unmodifiedYou can always use Indigo and the existing stacks in the same App DomainAvoid or abstract existing extensibility models
The code “inside the function” will work unmodifiedParameters work unmodifiedYou can always use Indigo and the existing stacks in the same App DomainAvoid or abstract existing extensibility models
26
public class Client{ public static void Main(string[] args) {
using System.Web.Services;
ASMX To Indigo Client CodeASMX To Indigo Client Code
AccountingOperation credit = new AccountingOperation("Accounts payable", 100);
AccountingOperation debit = new AccountingOperation("Assets", 100);
accountingService.AddEntry(debit, credit); }}
Accounting accountingService = ServiceManager.CreateProxy<Accounting>();
using System.ServiceModel;
Accounting accountingService = new Accounting();
// using System.Web.Services;
// Accounting accountingService = new Accounting();
27
public int AddEntry(AccountingOperation debit, AccountingOperation credit) { // Add entry to internal accounting book // return id. }}
ASMX To Indigo Server CodeASMX To Indigo Server Code
using System.Web.Services; public class AccountingOperation{ public string AccountName; public long Amount; } public class Accounting : WebService{ [WebMethod(TransactionOption=TransactionOption.RequiresNew)]
using System.ServiceModel.Compat;
[Service]
[ServiceMethod][TransactionScope]
using System.ServiceModel;
// using System.Web.Services;
// [WebMethod(TransactionOption=TransactionOption.RequiresNew)]
28
ASMX Code MigrationASMX Code Migration
The code “inside the function” will work unmodifiedParameters work unmodifiedWebMethodAttribute and XML Serialization attributes fully supportedSOAPExtensions will be simple and mechanical to rewrite
The code “inside the function” will work unmodifiedParameters work unmodifiedWebMethodAttribute and XML Serialization attributes fully supportedSOAPExtensions will be simple and mechanical to rewrite
29
ASMX Code Migration – Caveats ASMX Code Migration – Caveats
HTTP Context object not supportedThe information is available to the developer only when running over HTTP
No ASP.NET application state support No ASP.NET session state that can survive process recycles
Indigo will not support the WSDL customization features of ASMX
But will support the full set of scenarios
HTTP Context object not supportedThe information is available to the developer only when running over HTTP
No ASP.NET application state support No ASP.NET session state that can survive process recycles
Indigo will not support the WSDL customization features of ASMX
But will support the full set of scenarios
30
public class Client{ public static void Main(string[] args) { RemotingConfiguration.Configure("Client.Config"); Accounting accounting = new Accounting();
.NET Remoting To Indigo Client Code.NET Remoting To Indigo Client Code
AccountingOperation credit =
new AccountingOperation("Accounts payable", 100); AccountingOperation debit =
new AccountingOperation("Assets", 100); accounting.AddEntry(debit, credit); }}
Accounting accountingService = ServiceManager.CreateProxy<Accounting>();
using System.ServiceModel;
// using System.Runtime.Remoting;
using System.Runtime.Remoting;
// RemotingConfiguration.Configure("Client.Config");// Accounting accounting = new Accounting();
31
Console.WriteLine("Host is ready to process remote messages.");Console.ReadLine();
}}
public class Host{ public static void Main(string[] args) { RemotingConfiguration.Configure("Server.Config");
.NET Remoting To IndigoHost Code.NET Remoting To IndigoHost Code
using System.ServiceModel;
ServiceManager manager = new ServiceManager("http://pdc-svr");manager.Services.Add("/Accounting", typeof(Accounting));
// RemotingConfiguration.Configure("Server.Config");
// using System.Runtime.Remoting;
using System.Runtime.Remoting;
32
.NET Remoting to Indigo Server Object Code .NET Remoting to Indigo Server Object Code
using System.Runtime.Remoting; public class AccountingOperation{ public string AccountName; public long Amount; } public class Accounting : MarshalByRefObject{ public int AddEntry(AccountingOperation debit, AccountingOperation credit) { // Add entry to internal accounting book // return id. }}
using System.ServiceModel;
[RemoteObject]
// using System.Runtime.Remoting;
33
.NET Remoting Code Migration.NET Remoting Code Migration
The code “inside the function” will work unmodifiedParameters work unmodifiedFully support the transparent remoting programming model
Except for “new”
The code “inside the function” will work unmodifiedParameters work unmodifiedFully support the transparent remoting programming model
Except for “new”
34
.NET Remoting Migration – Caveats.NET Remoting Migration – Caveats
Channels and Sinks are implemented in a new way in Indigo and do not move forward
Plumbing that was built to support features missing in .NET Remoting (such as security) may be in Indigo and this code can just be thrown awayPlumbing that was built to support features not in Indigo will have to be rewritten using Indigo extensibility
The SynchronizationAttribute is no longer needed nor recognized in Indigo (there is no ContextBoundObject in Indigo)
Channels and Sinks are implemented in a new way in Indigo and do not move forward
Plumbing that was built to support features missing in .NET Remoting (such as security) may be in Indigo and this code can just be thrown awayPlumbing that was built to support features not in Indigo will have to be rewritten using Indigo extensibility
The SynchronizationAttribute is no longer needed nor recognized in Indigo (there is no ContextBoundObject in Indigo)
35
using System.EnterpriseServices;
public class Accounting{
public void AddCreditEntry(string creditAccount, int creditAmount) { }}
[ComponentAccessControl][SecureMethod][Transaction(TransactionOption.Required)]
: ServicedComponent
EnterpriseServices to Indigo (1 of 3)EnterpriseServices to Indigo (1 of 3)
using System.ServiceModel.Compat;
// using System.EnterpriseServices;
36
public class Accounting{
public void AddCreditEntry(string creditAccount, int creditAmount) { }}
using System.EnterpriseServices;[ComponentAccessControl][SecureMethod][Transaction(TransactionOption.Required)][RemoteObject]
// using System.EntepriseServices;// [ComponentAccessControl]// [SecureMethod]// [Transaction(TransactionOption.Required)]
: ServicedComponent
EnterpriseServices to Indigo (2 of 3)EnterpriseServices to Indigo (2 of 3)
using System.ServiceModel;
[TransactionScope][SecurityRole("PostGroup")]
: MarshalByRefObject // ServicedComponent
37
public class Accounting{
public void AddCreditEntry(string creditAccount, int creditAmount) { }}
using System.EnterpriseServices;[ComponentAccessControl][SecureMethod][Transaction(TransactionOption.Required)][Service]
// using System.EntepriseServices;// [ComponentAccessControl]// [SecureMethod]// [Transaction(TransactionOption.Required)]
: ServicedComponent
EnterpriseServices to Indigo (3 of 3)EnterpriseServices to Indigo (3 of 3)
using System.ServiceModel;
[ServiceMethod][TransactionScope][SecurityRole("PostGroup")]
//:ServicedComponent
38
Enterprise Services Code MigrationEnterprise Services Code Migration
Most Enterprise Services code is simple and mechanical to migrateFully integrated with .NET config and hosting modelAttributes for Transactions, Security, Lifetime management are fully supported
Most Enterprise Services code is simple and mechanical to migrateFully integrated with .NET config and hosting modelAttributes for Transactions, Security, Lifetime management are fully supported
39
Enterprise Services Code Migration – Caveats Enterprise Services Code Migration – Caveats
QC, LCE, and CRM will not be migrated
All of the scenarios are supported with new programming model
Attributes that configure the COM+ catalog or the COM+ process model will no longer be needed nor recognized by Indigo
QC, LCE, and CRM will not be migrated
All of the scenarios are supported with new programming model
Attributes that configure the COM+ catalog or the COM+ process model will no longer be needed nor recognized by Indigo
40
WSE Code MigrationWSE Code Migration
WSE is a vehicle for early adopters to take advantage of leading edge Service Oriented technologyWSE should be used when gaining a first mover advantage is more important than having code portability to the next major revision of the platformMigrating WSE code to Indigo may require a non-trivial development investmentWe will provide whitepapers on how to migrate WSE code to Indigo
WSE is a vehicle for early adopters to take advantage of leading edge Service Oriented technologyWSE should be used when gaining a first mover advantage is more important than having code portability to the next major revision of the platformMigrating WSE code to Indigo may require a non-trivial development investmentWe will provide whitepapers on how to migrate WSE code to Indigo
41
System.Messaging Code MigrationSystem.Messaging Code Migration
No plan to implement System.Messaging on top of IndigoNo plan to implement System.Messaging on top of Indigo
42
Prescriptive GuidancePrescriptive Guidance
43
Application ArchitecturesApplication Architectures
Object OrientationAssume homogeneous platform and execution environmentShare types, not schemasAssume cheap, transparent communicationAre linked: Object identity and lifetime maintained by infrastructureTypically require deployment of both client and server in syncAre easy to talk about and become a natural path for customers to followCustomers have 20+ years of experience and great intuition about what “object oriented is”
Object OrientationAssume homogeneous platform and execution environmentShare types, not schemasAssume cheap, transparent communicationAre linked: Object identity and lifetime maintained by infrastructureTypically require deployment of both client and server in syncAre easy to talk about and become a natural path for customers to followCustomers have 20+ years of experience and great intuition about what “object oriented is”
Service OrientationAssume heterogeneous platform and execution environmentShare schemas, not typesAssume variable cost, explicit communicationAre autonomous: Security and failure isolation are a mustEase “continuous deployment” of client and server separatelyBuilds on ideas from component software, distributed objects, and MOMDominant theme is to manage/reduce sharing between services
Service OrientationAssume heterogeneous platform and execution environmentShare schemas, not typesAssume variable cost, explicit communicationAre autonomous: Security and failure isolation are a mustEase “continuous deployment” of client and server separatelyBuilds on ideas from component software, distributed objects, and MOMDominant theme is to manage/reduce sharing between services
44
Application BoundariesApplication Boundaries
Application boundariesPlatformDeploymentTrust
Objects are appropriate within boundariesServices are appropriate across and within boundaries
Application boundariesPlatformDeploymentTrust
Objects are appropriate within boundariesServices are appropriate across and within boundaries
45
Today’s Prescriptive GuidanceToday’s Prescriptive Guidance
Build services using ASMXEnhance your ASMX service with WSE if you need the WSE feature set and you can accept the support policy
Use object technology in a service’s implementation
Use Enterprise Services ifYou need ES rich feature setYou are communicating between components on the local machine and have performance issues with ASMX or WSE
Use .NET Remoting ifYou need to integrate with an existing proprietary protocolYou are communicating in-process, cross app domain
Use System.Messaging if you need the reliable messaging and queuing features in MSMQ
Build services using ASMXEnhance your ASMX service with WSE if you need the WSE feature set and you can accept the support policy
Use object technology in a service’s implementation
Use Enterprise Services ifYou need ES rich feature setYou are communicating between components on the local machine and have performance issues with ASMX or WSE
Use .NET Remoting ifYou need to integrate with an existing proprietary protocolYou are communicating in-process, cross app domain
Use System.Messaging if you need the reliable messaging and queuing features in MSMQ
46
Today’s CaveatsToday’s Caveats
ASMX Avoid or abstract using low-level extensibility such as the HTTP Context object
.NET RemotingAvoid or abstract using low-level extensibility such as .NET Remoting sinks and channels
Enterprise ServicesAvoid passing object references inside of ES
Do not use COM+ APIs – use System.EnterpriseServicesDo not use MSMQ APIs – use System.Messaging
47
Customer Migration SummaryCustomer Migration Summary
We will make Indigo work well with COM+, MSMQ, WSE, and ASMX appsNew Indigo nodes can be easily integrated into existing systemsThere is an easy migration path to Indigo from today’s RPC style programming modelsUnderstand and follow the prescriptive guidance for writing distributed applications
We will make Indigo work well with COM+, MSMQ, WSE, and ASMX appsNew Indigo nodes can be easily integrated into existing systemsThere is an easy migration path to Indigo from today’s RPC style programming modelsUnderstand and follow the prescriptive guidance for writing distributed applications
48
DiscussionDiscussion
49
For More InformationFor More Information
Come see meImmediately after this sessionWeb/Services Lounge: 309 Foyer
MSDN “Longhorn” DevCenter http://msdn.microsoft.com/longhornNewsgroup
microsoft.public.windows.developer.winfx.indigo
At PDCHands on labs: On-site or download from CommNetAsk The Experts: Tuesday 7 P.M. – 9 P.M. Hall G, HPDC Weblogs: http://pdcbloggers.net
Come see meImmediately after this sessionWeb/Services Lounge: 309 Foyer
MSDN “Longhorn” DevCenter http://msdn.microsoft.com/longhornNewsgroup
microsoft.public.windows.developer.winfx.indigo
At PDCHands on labs: On-site or download from CommNetAsk The Experts: Tuesday 7 P.M. – 9 P.M. Hall G, HPDC Weblogs: http://pdcbloggers.net
50© 2003-2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.