51
Develop Distributed Applications using .NET Remoting Kate Gregory Regional Director Gregory Consulting Limited [email protected]

Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited [email protected]

Embed Size (px)

Citation preview

Page 1: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Develop Distributed Applications using .NET Remoting

Kate GregoryRegional Director

Gregory Consulting [email protected]

Page 2: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

What we will cover Introduction to .NET Remoting

Not Exhaustive

Compare to DCOM and Web Services Configuring .NET Remote Applications Hosting .NET Remote Applications What about Indigo?

Page 3: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Who likes DCOM? You know DCOM’s a pain if:

You've ever wanted to control the channel or format, or anything else about the DCOM messages.

You've ever wanted to trace or log DCOM messages.

You've wanted to easily use DCOM over the internet with a variety of clients.

You’ve ever wanted to quickly change configuration settings such as ports and channels.

Page 4: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 5: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and TerminologyIntro to Remoting

Communication between Application Domains Usually Between Servers Replacement for DCOM Low Level Control

Page 6: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and Terminology Remoting Terminology

Application Domains Channels Formatters Server Activated Objects (Wellknown) Client Activated Objects

Page 7: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and Terminology Channels

Transport Data Two Default Formats- http:// or tcp://

Http:// - good for firewalls Tcp:// - high speed, binary

Port Agnostic Create Your Own

Page 8: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and Terminology Formatters

Turn Message Into Stream Binary Soap 1.1 Compliant

Page 9: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and Terminology .NET to Non-.NET

SOAP 1.1 Specification Http:// Simple Datatypes

int float string

Page 10: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Architecture and Terminology.NET to .NET

Rich Functionality Almost any CLS Object

DataSets Hashtables Custom Objects

Binary Fast

Page 11: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Demo 1

Remoting Concepts

Page 12: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 13: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Web Services

Web Services

Any Application IIS WinForm Windows® Service Console Application

Multiple Protocols Http:// Tcp:// Custom

Binary or Soap

Only IIS Only Http:// WSDL

Remoting

Page 14: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

DCOM DCOM

Choose Protocol Create Protocol Firewall Friendly

Custom Ports Define Protocol

Tighter Security Custom IIS NT

RPC Protocol Not Firewall Friendly Pings for Lifetime

Remoting

Page 15: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 16: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsServer Activated Objects

Well-known SingleCall Singleton Marshaling Configuration

Page 17: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsWell-Known

Client Must Know The Endpoint Server Controls Object <wellknown> RegisterWellKnownServiceType()

Page 18: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsSingleCall

Object Created On Each Call One Instance Per Client Request No State Server Farm Friendly mode=“SingleCall”

Page 19: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsSingleton

One Object On Server Has Lifetime

Default 5 Minutes Can Override

Shared Between Multiple Clients

Page 20: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsMarshaling

Marshall by Value Object Serialized Attribute [Serializable] Implement ISerializable

Marshall by Reference Inherit System.MarshalByRefObject Proxy Class

Page 21: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Server Activated ObjectsServer Configuration

Config file<wellknown

mode=“SingleCall” or “Singleton”

type=“type,assembly”

objectUri=“myobject” /> Programmatic

Create Wellknown Type Register

Page 22: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Demo 2

Single Call vs Singleton State

Page 23: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 24: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Client Activated Objects Client Activated Object (CAO)

Created by Calling Client Client Controls Lifetime

Lease State For Individual Client Tracking Services

Page 25: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Client Activated Objects Client Activation

New() Configuration File <activated />

Activator.CreateInstance() Overloaded Pass In Url, Assembly Attributes

Page 26: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Client Activated Objects Configuration Properties

Config file<activated

type="type,assembly" />

Programmatic UrlAttribute Activator.CreateInstance

Page 27: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Client Activated Objects Properties

Lease Time Default 5 Minutes Set 0 to Infinite

Sponsors Listens from Server Application GetLifeTimeService() Renewal()

Page 28: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Client Activated Objects Tracking

Implement ITrackingHandler DisconnectedObject () MarshaledObject () UnmarshaledObject ()

RegisterTrackingHandler( ITrackingHandler)

Page 29: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Demo 3

Client Activated Objects Lease State

Page 30: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 31: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration File Configuration

XML Easy To Read Easy To Modify Simple To Code No Need to Recompile

Page 32: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration File Format

<configuration>

<System.Runtime.Remoting>

<application>

</application>

</System.Runtime.Remoting>

</configuration>

Page 33: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration File - Well-known Objects

<service>

<wellknown

type=“Namespace.Class, Assembly” objectUri=“Data” mode=“Singleton” />

</service>

Page 34: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration File - Client Activiated Objects<service>

<activated type=“Namespace.Class, Assembly” />

</service>

Page 35: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration RemotingConfiguration Class

Configure(“configuration file”) Method works for server and client configuration

Page 36: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration Programmatic Configuration

Hide Property Information Required Recompile Dynamic Easy To Deploy

Page 37: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration Programmatic Configuration

Create Channel Register Channel Create Remote Object Register Object with Remoting Configuration

Page 38: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration Programmatic Configuration - Server

ChannelServices.RegisterChannel(new HttpChannel(8080));

RemotingConfiguration.ApplicationName = "Data";

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject.DataAccess),"Data", WellKnownObjectMode.SingleCall);

Page 39: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Configuration Programmatic Configuration - Client

ChannelServices.RegisterChannel(new TcpServerChannel( 6789 ) );

ActivatedServiceTypeEntry obj = new ActivatedServiceTypeEntry( "RemoteObject.DataAccess", "RemoteObject");

RemotingConfiguration.RegisterActivatedServiceType( obj );

Page 40: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Demo 4

Programmatic Configuration

Page 41: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 42: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Hosting

Application Console Windows Start and Stop by hand Can display or control information

IIS Windows Service

Page 43: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Demo 5

Hosting in IIS Hosting in a Service

Page 44: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Agenda Architecture and Terminology Web Services/DCOM Comparison Server Activated Objects (SAO) Client Activated Objects (CAO) Configuration Hosting Futures

Page 45: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Other Cool Remoting Tricks

Raise an event on the server Handle it in a client Pass a parameter to the handler by

reference Get a response from the client that the

event was handled Publish-subscribe: server does not

managed list of clients

Page 46: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Web Services vs. Remoting Web Services

XML (SOAP) interfaces to binary objects Text-based; ideal for HTTP etc. Standardized messaging protocol Lightweight, easily deployable and accessible

.NET Remoting Binary proxy - stub model

Still SOAP 1.1 compatible

High performance Binary streams, still configurable over HTTP channel

Proprietary .NET required at both ends for straightforward use

Page 47: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

The (not so distant) future!Indigo

Page 48: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

class HelloService { [WebMethod] public String Hello(String Greeting) {

X509CertificateCollection collection = new X509CertificateCollection();IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CRYPTOAPI_BLOB))); IntPtr data = (IntPtr)((int)blob + Marshal.SizeOf(typeof(CRYPTOAPI_BLOB)));…

SeqAckRange range = new SeqAcknRange(id, low, high );SeqAckRange[] ranges = { range };ReliableQueue.ProcessAcks( ranges );…

hr = pITxDispenser->BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction);…

return Greeting; }}

20,379 lines for security

5,988 lines for reliable

messaging

25,507 lines for transactions

Total count: 56,296

4,442 lines for

infrastructure

Page 49: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

class HelloService { [WebMethod] public String Hello(String Greeting) {

foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecurityToken}…

SeqAckRange range = new SeqAcknRange(id, low, high );SeqAckRange[] ranges = { range };ReliableQueue.ProcessAcks( ranges );…

hr = pITxDispenser->BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction);…

return Greeting; }}

10 lines of security code

1,804 lines of reliable

messaging code

25,507 lines of transaction

code

Total count: 27,321

Page 50: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

[Confidentiality][Reliability(Guarantees.ExactlyOnce | Guarantees.InOrder)][Service]class HelloService { [TransactionCoupling(

TransactionCouplingOptions.Required)] [ServiceMethod] String Hello(String Greeting) { return Greeting; }}

1 line of security code

1 line of reliable messaging code

1 line of transaction

code

Total count: 3

Page 51: Develop Distributed Applications using.NET Remoting Kate Gregory Regional Director Gregory Consulting Limited kate@gregcons.com

Advanced web services Secure, reliable,

transacted Heterogeneous

interoperability

Powerful messaging capabilities

Programming model extends existing capabilities

Simplifies building services

Advanced web services Secure, reliable,

transacted Heterogeneous

interoperability

Powerful messaging capabilities

Programming model extends existing capabilities

Simplifies building services