Choosing
Communication Options in .NET - XML Web Services OR .NET Remoting
Host: Janakiram M.S.V. – Technical Specialist, Microsoft
India
June
13, 2002
KunalS_MS: Good Afternoon all of you
KunalS_MS: Welcome to another session of MSDN India Online Developer
Forums - Expert Chat Session.
KunalS_MS: Today's topic of chat is Choosing Communication Options
in .NET - XML Web Services OR .NET Remoting
KunalS_MS: and our expert host of the day is - Janakiram M.S.V. -
Technical Specialist, Microsoft India
Jani_MS: Hi Everyone
Moderator: (Saurabh) They say its better to use .NET Remoting over
XML Web Services, where performance is the key consideration, can
you highlight the performance difference between Remoting using SOAP
formatter and Web Services?
Jani_MS: Actually, There is no performance difference
between Web Services and Remoting with SOAP formatter except type
fidelity
Jani_MS: You will get performance gain in case of TCP
channel and Binary formatter
Moderator: (vijay) What is the basic difference between using XML
Web services and using .NET Remoting?
Jani_MS: XML Web services is basically for Interop and
to work across fire walls; Remoting gracefully replaces DCOM and RPC
like technologies
Moderator: (Saurabh) Whenever SOAP is needed as the messaging format
in the application, will it be better to build Web Services since
then you have a future option of interoperating with other systems
also?
Jani_MS: But, Incase your looking at multiple methods
on a stateful object, Web Services will not help
Moderator: (Kumar) The documentation talks about .NET Remoting being
the infrastructure used to design XML Webservices. Thus, XML Webservices
are an application of .NET remoting. Which scores over the other and
when?
Jani_MS: True. .NET internally uses Remoting as the core
infrastructure. But Web Service is more standards based and session
less
Jani_MS: thus, it is a better choice over the internet
Moderator: (Kumar) So, Jani, what you are saying is that webservices
are better platform for stateless components. Is that right?
Jani_MS: Absoultely.. Remember only stateless components
scale on the web
Moderator: (Kumar) So, how do we get to scale them better? MTS did
a decent job of the scaling stateless COMponents. Who does that for
webservices?
Jani_MS: MTS was always behind the firewall.. Web Services
will be the primary interface for calling components over the Internet
Jani_MS: As far as scaling goes.. We can implements NLBS
on IIS for web services
Moderator: (Kumar) I agree. But my query is about who has the responsibility
of scaling webservices? Now, isn't that talking basic network infrastructure?
Any programmatic entity, like MTS, that comes into play?
Jani_MS: Typically, Web Services are just wrappers to
stateless components running in COM+
Jani_MS: Web Services shouldn't actually contain any business
logic.. They should delegate the call to a component method
Moderator: (vijay) If I have my server machine inside an DMZ it will
be difficult to use Remoting. Is this assumption right?
Jani_MS: No.. Remoting can cross firewalls as long as
the port is 80 and format is SOAP
Jani_MS: Ok.. What I actually mean by COM+ is Serviced
components in .NET
Moderator: (Kumar) Remoting replaces DCOM. Good enough. But MS had
also put in CIS. How is remoting better over DCOM+CIS?
Jani_MS: DCOM + CIS was tunneling over HTTP and has some
known issues.. Remoting is performance oriented and works within DMZ
and across firewalls
Moderator: (Kumar) MTS did a decent job of the scaling stateless COMponents.
Who does that for webservices? So, how do we get to scale them better?
Jani_MS: Since Web Services are stateless, We can go for
traditional ways of load balancing via NLBS or any other architecture
Moderator: (michael) What are the various ways to manage the transactions
in .NET remoting?
Jani_MS: They need to be Serviced Components utilizing
the COM+ infrastructure.
Moderator: (Anand) Can I have callbacks implemented in serviced components?
Jani_MS: Yes. using the COM+ Loosely Coupled Events or
using delegates and events in Remoting
Jani_MS: Remeber Delegates/Events can work over remoting
making remote call backs
Moderator: (Anand) But I was having a problem doing so, infact i was
not able to do events if the component is a serviced component. [Suggest]
Jani_MS: Take a look at LCE. That should help you
Jani_MS: Loosely Coupled Events in COM+
Moderator: (michael) Is there any way to manage the transactions in
.NET remoting it without using COM+ because I want to avoid COM interop?
Jani_MS: At this point, .NET relies on COM+ for transactional
infastructure. You need to make your component a Serviced Component
to enjoy transactions
Moderator: (Kumar) Like MTS which used object pools and interception
for scaling, is there any analog entity in .NET for that?
Jani_MS: COM+ and Serviced Components.. Understand that
.NET doesn't completely replace COM+. Any feature of COM+ can be realized
via a Serviced Component in .NET.
Moderator: (Kumar) Does MS plan to have any .NET component management
environment in the future?
Jani_MS: No plans yet. But atleast for the near future,
I feel COM+ will be the underlying platform for core component services.
Moderator: (Anand) what about COM+ 1.5?
Jani_MS: .NET integrates well this COM+ 1.5. It supports
concurrency and other new features via the attributes
Moderator: (Anand) Will there be COM Interop when using a serviced
component using COM+ 1.5?
Jani_MS: No. System.EnterpriseServices will have an efficient
access to COM+ and it is much better than classic COM interop
Moderator: (Kumar) But there is interoperability, right ?
Jani_MS: I can't call it as Interop.. COM+ is an inherent
part of .NET..
Moderator: (Kumar) .NET remoting is about, in a part, having a TCP
listener. How is this different that a standard TCP port listener
that understands SOAP?
Jani_MS: .NET Remoting is all about pluggable channels
and formatters. At any point of time, the channel/formatter can switched
with out any impact at the server and the client.
Jani_MS: But technically it is the same as writing a custom
socket based program
Moderator: (Kumar) Can you explain, at what level and point does COM+
(i.e. native code), become an inherent part of .NET (managed code)?
Jani_MS: Since, This is beyond the scope of current session,
I will try to post a whitepaper to the forum on this topic.
Jani_MS: I want to share an article with you that points
out the key differences of Remoting and Web Services