all groups > dotnet remoting > august 2004 >
You're in the

dotnet remoting

group:

Channel relationship to RegisterWellKnownServiceType()


Channel relationship to RegisterWellKnownServiceType() Alex Maghen
8/27/2004 6:33:12 PM
dotnet remoting:
I'm confused about the relationship between Channels and Registered Well
Known Service Types.

Many of the sampes I've seen for Remoting server applications show the
following code for starting up the availability of a class to other
applications:

HttpChannel channel = new HttpChannel(8100);
ChannelServices.RegisterChannel(channel);

RemotingConfiguration.RegisterWellKnownServiceType(
typeof(ExposedClass),
"ExposedClass.soap",
WellKnownObjectMode.Singleton);

The first 2 lines create and "Register" a Channel. The NEXT line, Registers
a Well Kknow Service Type. But that RegisterWellKnownServiceType() call
doesn't take the newly created Channel as a parameter or anything. So how are
they connected to one another? If you've created a Channel on port 8100, what
does that have to do with the registration of a Well KNown Service Type?

Re: Channel relationship to RegisterWellKnownServiceType() Sam Santiago
8/27/2004 10:55:17 PM
A channel is a communication mechanism. You can register a well known type
without having a registered channel, but then you'll have no way to
communicate with it. You won't get a compile error or even a runtime error
on the server side, but when a client tries to connect to it an exception
will be thrown such as:

System.Runtime.Remoting.RemotingException: This remoting proxy has no
channel sink which means either the server has no registered server channels
that are listening, or this application has no suitable client channel to
talk to the server.

The Application Domain is the "container" for both. An App domain must have
a channel registered in order to communicate with other App domains. Well
known objects are objects that are accessible in an App domain via a known
URI. So in your typical URL:

http://myserver:port/MyObjectURI

the first part, http://myserver:port are strictly communication related -
protocol, destination server, and port (which will indirectly identify the
App domain) and the last part, MyObjectURI, is the URI for your remotely
available object. So without a registered channel your App domain cannot
communicate outside of its boundaries.

Check out this link:

Remoting Architecture
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconnetremotingarchitecture.asp

Thanks,

Sam
--
_______________________________
Sam Santiago
ssantiago@n0spam-SoftiTechture.com
http://www.SoftiTechture.com
_______________________________
[quoted text, click to view]

AddThis Social Bookmark Button