Welcome to MSDN Blogs Sign in | Join | Help

Welcome to The Metaverse

Navigating the service-oriented, identity aware metaverse

News

  • Disclaimer:
    The content of this blog are my own personal opinions and do not necessarily represent Microsoft's position, commitments or strategy. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.




    Add to Technorati Favorites
On the road to Indigo - Is .NET Remoting Dead? [Updated]

'Is .NET Remoting Dead?' [Updated]

 

No! Nope! Niet! Non! Negative! Nuh-huh! [shake head vigorously]!!!

 

This has been SUCH a hard message to communicate, so let’s make this VERY clear:

 

.NET Remoting as we know it in the current .NET frameworks is NOT going away. It is NOT going to be removed from the .NET frameworks when Indigo ships. There are NO plans to remove it from the .NET frameworks. .NET Remoting will be here for some time to come!

 

So where does the confusion arise from?

The simple statement “.NET Remoting will be depricated once Indigo is released

 

What we mean by this statement is that when Indigo is released, the semantics of object remoting will be supported through the Indigo infrastructure rather than the current .NET Remoting infrastructure. This will help overcome a number of the limitations that .NET Remoting currently suffers (such as having to share assemblies with callers), whilst extending the many benefits of Indigo to developers requiring Remote object semantics.

 

Does this mean that existing .NET Remoting applications will need to be modified in order to work correctly when Indigo is released?

No … unless you want your EXISTING Remoted components to be interoperable with new Indigo Services on the wire. This is because .NET Remoting will not interoperate with Indigo on the wire and vice-versa. Remoting uses RPC/Encoded SOAP whereas Indigo and ASMX align with WS-I Base Profile reqiurements around Doc/literal (default for ASMX) or RPC/literal encoding.

 

In order for your remoted components to be interoperable and callable by, or from, Indigo Services, you have two options:

1)     Port your .NET Remoting Components source code to Indigo and host them as Indigo Services. This will, of course, necessitate modifying all your caller applications, but provides the optimal technical solution.

2)     Wrap your existing .NET Remoting components with an Indigo proxy Service that you create which calls the existing remoted components on the caller’s behalf. This is a stepping-stone approach since it means that existing applications can continue to access the Remoting components as normal, but that new code can access the Indigo Service. The existing callers can then be ported over a period of time, easing the migration process.

 

If you were to choose option 2, why would you migrate your existing applications to Indigo if they work fine. Arguably this is a business decision, but by porting your code to Indigo, you are then able to leverage all the advanced features of Indigo such as enhanced communications security, reliability, flexibility and control.

 

Option 1 is our recommended approach – port your Remoting components to Indigo and expose them as services as soon as possible after the launch of Indigo. You will gain huge benefits in terms of security and your services will be able to achieve unmatched levels of reliability and availability (through the use of features such as Indigo’s reliable messaging infrastructure).

 

How much change will be required to your existing source code?

In practice, very little! Converting your existing Remoting code to Indigo, will largely involve renaming some namespaces and attributes and changing a few inheritance points.

 

However, with .NET Remoting components, there is one large caveat to this: If you have developed custom channels and sinks to, for example, support a custom wire-format, then this code may require some considerable modification. The reason for this is that Indigo has a different architecture to support such extensibility and you’ll need to convert your custom code to Indigo Channel Providers.

 

However, if you have implemented some advanced feature (such as a reliable messaging protocol) you may well find that you will be able to just throw this code away and adopt Indigo’s advanced, standards based protocol / feature support instead!

 

“So, should I continue to use remoting in my applications today?“

Remoting as a technology has some useful capabilities in niche areas. In particular:

  • Use .NET Remoting for calling between components hosted in different app-domains inside the same process
  • Use .NET Remoting for handling custom wire protocols and formats.

However, we recommend minimizing your use of .NET Remoting to these niche areas, and suggest that you utilize Enterprise Services for the development of components inside your services, and ASMX/WSE for exposing your services at your boundaries. This will help you develop Service Oriented systems today that migrate to Indigo as smoothly as possible in the future.

 

I discuss this subject much further in my posting on “Prescriptive Guidance for Today's Technologies

 

In Summary:

 

  • .NET Remoting is NOT going away or being removed from the .NET frameworks.
  • .NET Remoting remain available for the foreseeable future (if not for ever!)
  • Indigo is the strategic platform of choice for developing secure, flexible and powerful services and fully supports remote object semantics
  • Migrating your .NET Remoting code to Indigo or fronting your Remoting components with Indigo Services will be required in order for your Remoting components to be interoperable with Indigo
  • Migrating your existing .NET Remoting code to Indigo will be simple …
    • … Although you will have to do work to port any necessary custom channel/sink code to Indigo Channel Providers
  • Migrating your components to Indigo will give you many advantages and capabilities that would previously not have been possible or very hard to achieve!
  • Use .NET Remoting for in-process, cross-app-domain communicaitons and for handling custome wire protocols and formats.
    • Use Enterprise Services for in-service component development
    • Use ASMX / WSE to expose your services

 

Posted: Friday, March 05, 2004 11:00 AM by RichTurner666

Comments

Paul Wilson said:

Very nicely put. Of course that 666 in your name does make one wonder . . .
# March 5, 2004 12:24 PM

RichTurner666's WebLog said:

# March 5, 2004 4:03 PM

RichTurner666's WebLog said:

# March 5, 2004 5:20 PM

Jeff Key said:

# March 7, 2004 8:18 PM

Roman Kiss said:

RemoteObject Service doesn't support the "SingleCall" feature of the .Net Remoting.

- How the Indigo model will handle a stateless call to the endpoint in one round trip (creating the instance and invoking the method)?


Thanks

Roman
# March 8, 2004 1:42 PM

On the road to Indigo said:

# March 16, 2004 6:46 PM

Nicholas Paldino [.NET/C# MVP] said:

Rich,

I am having a hard time determining what your updates to old posts are. If you could highlight updates in some way, it would be appreciated.

Other than that, keep up the good work.

- Nick
# March 17, 2004 5:56 AM

Rich Turner said:

Thanks for the note Nick. Alas, this is one of the problems with using a blog as a way of centrally publishing a message that may evolve over time! I don't want readers to read an evolving thread in case they miss future, important updates, so have opted to update the original posting instead. I take your point though and will color highlight new/changed bits as I go along.

Thanks for reading ... keep the feedback coming y'all! :D
# March 17, 2004 9:59 AM

Fallon Massey said:

What about IIS remoting. Will it still be supported and fall under the umbrella of all other remoting.
# March 26, 2004 11:55 PM

Keith Hill said:

With this guidance, does this mean that the recommendation for application scripting either on the same host or different host is to use ASMX now? I still don't quite get what the .NET replacement is for the typical automation server/object model you find in apps like Excel, Word, etc. I would have guessed .NET Remoting but that doesn't seem to be the recommendation here.
# May 6, 2004 9:57 PM

Richard Turner said:

Ermmmm ... .NET Remoting is nothing to do with OLE Automation in applications like Word. In the future, I think it will be safe to expect applications to expose their functionality via .NET assemblies. I think it relatively unlikely that apps like Word will publish their capabilities as Web Services, although I don't work for the Office team, so I may be wrong ;) There is a new command-line/scripting environment under development - although I don't have details on this just yet.
# May 21, 2004 1:40 PM

On the road to Indigo said:

# June 8, 2004 1:13 PM

Michele Leroux Bustamante said:

<a href="http://www.dasblonde.net/PermaLink.aspx?guid=e7a878ff-8ee3-4681-b0fe-3db28b7c6acb">.NET Remoting, Enterprise Services and the Future - Indigo</a>
# June 17, 2004 8:56 AM

Just Coding said:

# July 2, 2004 8:31 AM

Rich Turner said:

I am not entirely sure what you're alluding to here Alex. Since when did COM+ disappear? If you look at Microsoft's product support plans, Windows technologies are supported for 5 years from the date of release + 5 years extended support. This applies to COM+, DCOM, .NET Remoting etc.

Let's say that Longhorn ships in late 2006 (this may or may not happen - we'll just as this date as an illustration). Longhorn will ship new versions of COM+, .NET Fx (including Remoting , etc) as well as Indigo. That means that this release of these technologies will be supported until 2016.

There next version of our OS Blackcomb will also ship these technologies and just taking a wild-stab at a 2011 release date will see support expiring in 2021.

I think you can extrapolate the next steps.

As you can see - none of this technology is disappearing any time soon.
# July 18, 2004 11:54 AM

J.net said:

# November 16, 2004 3:10 PM

Frankie Fresh's Blog said:

# November 16, 2004 3:27 PM

Frankie Fresh's Blog said:

# November 16, 2004 3:29 PM

Deep Thoughts... said:

# November 16, 2004 6:22 PM

Willy-Peter Schaub said:

# January 21, 2005 3:13 AM

Xtreme.Net's Blog said:

Check this writing about .Net Remoting&nbsp;from Richard Turner's Blog
# April 2, 2005 4:24 AM

Garrett Serack said:

I'm a tad concerned about the statement:

" The simple statement '.NET Remoting will be depricated once Indigo is released' "

and

"Use .NET Remoting for calling between components hosted in different app-domains inside the same process"

Now, I'm using .NET remoting for this purpose, but you used the "deprecated" word. Is that truly it? or just de-emphasized? Indigo is obviously overkill for inter-appdomain communication, but is remoting going to seem like the lame duck in 5 years for inter-appdomain communication?

Seems funny to me given the push towards remoting a few years back. (jeez, is it alread 2005?)

Garrett


# July 6, 2005 3:08 PM

Rich Turner said:

Hey Garrett - just stumbled onto your question - I don't get notified of general comments posted to the blog so please forgive my slow reply.

I understand your concern. While you can remain confident that .NET Remoting (or any of our other distributed technologies) is not being removed from the platfrom, it is also very important to understand that it will not be recieving any significant engineering after we ship .NET Frameworks 2.0 (which has added a few nice-to-have's to Remoting).

Indigo V1 doesn't provide a cross-app-domain communications channel a la .NET Remoting, but it's on the cards for vNext! No guarantees, but it's on the requested features list!

The bottom line is that if you're using Remoting today, your app will doubtlessly be able to run for many years to come, but if you're looking to the future, Indigo is the strategic way forwards.
# July 11, 2005 5:08 PM

gserack said:

Rich, Thanks for getting back to me :).

I wasn't really worried about the future compatability, as Microsoft has done me no wrong with that sort of thing before. I am very excited to see that you folks have been thinking about the use of Indigo in the future with cross app-domain communications. That fact alone confirms my faith in the process ;)

My only other concern at this point is maintaining the simpicity that Remoting provided to jr Developers. In some ways, not having to declare a separate interface was kinda nice. It tended to confuse the kids less :)

Anyway, thanks for the reply.

Garrett
# July 12, 2005 9:26 AM

Benny said:

Super site!
# September 2, 2005 3:06 PM

Dennis Forbes said:

# September 13, 2005 12:09 AM

On the road to Indigo said:

I have just made a small change to my posting about Remoting, including details of WHY Indigo won't interop...
# September 16, 2005 3:02 PM

Welcome to The Metaverse said:

Long-time followers of my blog will no doubt remember when I started this blog in Feb 2004. I began by...
# February 17, 2006 6:43 PM

Julie Lerman Blog said:

# February 19, 2006 9:24 AM

Kent Brown said:

# May 22, 2006 10:05 PM

Only Human | Devoted to technology v.2.0 said:

W lutym w ramach propozycji pytań do Steve'a Sinofsky dostałem parę propozycji, kt&#243;rych jak na złość

# April 21, 2008 12:12 PM
Anonymous comments are disabled
Page view tracker