51
“Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation [email protected] WSV302

“Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation [email protected] Joe Long Product Unit Manager

Embed Size (px)

Citation preview

Page 1: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

“Indigo”: Connected Application Technology Roadmap

Joe LongProduct Unit ManagerMicrosoft [email protected]

WSV302

Page 2: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 3: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 4: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 5: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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?

Page 6: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

6

Using Indigo With Existing SystemsA.k.a., Wire Interop

Using Indigo With Existing SystemsA.k.a., Wire Interop

Page 7: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 8: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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.)

Page 9: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 10: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 11: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 12: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

12

COM+ Binary Interop DrilldownCOM+ Binary Interop Drilldown

Page 13: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 14: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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+

Page 15: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 16: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 17: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

17

MSMQ Binary Interop DrilldownMSMQ Binary Interop Drilldown

Page 18: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 19: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 20: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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!

Page 21: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 22: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

22

Migrating Existing Code To IndigoMigrating Existing Code To Indigo

Page 23: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 24: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

24

Managed Code Migration DetailsManaged Code Migration Details

Page 25: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 26: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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();

Page 27: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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)]

Page 28: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 29: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 30: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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();

Page 31: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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;

Page 32: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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;

Page 33: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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”

Page 34: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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)

Page 35: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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;

Page 36: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 37: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 38: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 39: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 40: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 41: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 42: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

42

Prescriptive GuidancePrescriptive Guidance

Page 43: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 44: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 45: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 46: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 47: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 48: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

48

DiscussionDiscussion

Page 49: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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

Page 50: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager

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.

Page 51: “Indigo”: Connected Application Technology Roadmap Joe Long Product Unit Manager Microsoft Corporation joelong@microsoft.com Joe Long Product Unit Manager