Related Topics: Online Shopping

Online Shopping: Article

.NET Remoting: Ingo Rammer talks .NET

.NET Remoting: Ingo Rammer talks .NET

.NET Developer's JournalMobility Editor Jon Box recently chatted with Ingo Rammer, consultant, instructor, and best-selling author of books on .NET. In this exclusive interview, Rammer discusses .NET Remoting, his programming roots, and the book he wishes he had when he was starting out.


NETDJ: How did you get started in software development?
I've been programming computers for as long as I can remember, but my start in commercial software development was just an issue of being at the right place at the right time. In 1994 a friend of mine complained about the price and lack of flexibility of an online shopping system his company had bought. I thought that I could do better, went to the local book store, bought Teach Yourself CGI Programming in 21 Days, and it took me something like 21 hours to learn Perl, learn about CGI, and reimplement the complete application, including the missing features. I went back to him two days after our first meeting, showed him the app, and he got me an instant appointment with his boss's boss, the CEO of this enterprise. To make a long story short, I was 15 back then and I stayed with this company as a freelance developer for the next five years while finishing high school. I must have written something like 150,000 lines of code in various programming languages for Windows applications in invoicing, ledger management, POS, and several Internet applications for various corporations of this enterprise.

.NETDJ: Your book came out pretty early in the .NET lifetime. How did you learn about .NET Remoting?
Two words: ILDASM, and later in the production cycle, Anakrino. All in all, I guess these tools and my previous work with other distributed application environments like DCOM, SOAP, MSMQ, and Java RMI made it possible. The learning process was therefore basically a mix between reverse engineering the framework and comparing it with previous technologies.

[Editor's note: ILDASM is a .NET utility that shows the contents of an assembly, including the manifest, dependencies, and the IL. Anakrino is a decompiler similar to ILDASM, except that the IL is shown as C# (see]

.NETDJ: Most people do not write a popular book on the first attempt. What made your book so successful?
The most important factor in making Advanced .NET Remoting such a tremendous success was the right timing and the right level of technical depth. The development community wanted to know about Remoting, they wanted to know which options, apart from Web services, that they have in the .NET Framework - and MSDN wasn't a great help at this time. When I started writing the book during the beta cycle, whenever you'd hit the F1 key, the only thing that would come back was "Topic to be supplied".

.NETDJ: Some developers learn a technology and then use it in every project because that is what they know. Should Remoting be used in every project?
No way. There are a whole lot of distributed application technologies in the .NET Framework, some of which are well documented and some that are more or less hidden: MSMQ, Remoting, ASP.NET Web services, WSE Web services, Enterprise Services/COM+, old-style DCOM, TCP sockets, UDP datagrams, SQL XML, and so on. Remoting is everything but a cureall solution for all kinds of applications - application designers and developers absolutely have to understand their application, the different technologies, and the implications of choosing a certain one before making this choice. I believe it is wrong to say "use Remoting for all your apps," in the same way that saying "use HTTP Web services in every case" is wrong.

.NETDJ: If you had a chance to change or enhance Remoting or anything else in .NET, what would you do?
One of the main issues today is the lack of a security layer that is independent of any chosen transport protocol. This doesn't mean that .NET Remoting today is insecure - after all, you can host it in IIS to get full support for SSL and authentication - but it would be great if we'd see some support for authentication and encryption based on the TCP Channel.

.NETDJ: What do you see people doing wrong with Remoting today?
A number of features in Remoting are actually targeted at singlemachine usage. Things like events and callbacks should normally not be used in a networked environment because these techniques are not tremendously scalable. Another thing I notice quite often is that people are fighting with SoapSuds.exe and its issues while their life could be so much easier by just defining interfaces in a shared DLL.

[Editor's note: SoapSuds is a .NET utility that generates an assembly based on the metadata of a remote server object and is consumed by a client application. See Chapter 3 of Advanced .NET Remoting for more information.]

.NETDJ: What's next for you as an author? Will there be a second edition on Remoting?
Yes, there will be a second edition on Remoting, and it will be timed for Whidbey - the next major release of the .NET Framework and Visual Studio .NET. There are just too few changes in Remoting in Version 1.1 to justify a completely new edition.

Right now though, I'm working on a different new book about architecture and design of .NET applications. It will approach this topic in a very pragmatic, down-to-earth way.

.NETDJ: Give us some background on this new book.
This book will be aimed at developers who get to the task of defining an application's architecture and design, and at architects who want to read about another point of view regarding application architecture. I truly believe that a serious number of developers - especially in smaller shops - see architecture as a way-too- complex and unimportant topic, so they don't routinely work on improving their application's design. After all, we all want our solution to get out of the door!

In this book, I will focus on how slight changes in your architecture can actually reduce the time-to-market of your application and how you can improve your design to create more maintainable applications. For example, I'll discuss distributed applications in general, layers and tiers (and what this means for your application), the difference between scalability and performance (and how you can improve each), the future of Web services (and how they fit into an enterprise architecture), and so on. The book is set in a practical environment and discusses a lot of the underlying whys, instead of just the hows. All in all, I'm in the lucky position to basically write the book that I wished I had in the first five or so years of my career. It would have helped me to avoid many of the wrong turns I took during the design of my first applications.

.NETDJ:We know that you are an author. What other activities are you involved in?
On the business side, I run a consulting practice and work with my clients on application design and architecture. I've helped companies throughout Europe - mostly ISVs or Fortune 500s moving to .NET - during the first phases of their projects with creating or validating their application's design and architecture. I also work directly with their teams during the implementation of prototypes and frameworks. Apart from this I also travel around the world and speak at various conferences in Europe, the U.S., and Africa. One of my goals for the year 2004 is to also fill my map with speaking engagements in Asia and Australia. I'm also working closely with Microsoft, and have recently been appointed Microsoft Regional Director for Austria - about which I'm really excited. It gives me the opportunity to exchange ideas with a number of peers - like you, Jon - who work in similar settings.

.NETDJ: Are there any other technologies out there today that the developer community is not utilizing?
I would guess that the use of asynchronous messaging with MSMQ could improve a lot of applications. It is one of my favorite technologies because it allows me to easily map asynchronous business processes to asynchronous technical processes instead of forcing them into synchronous RPCs.

[Editor's note: MSMQ is an acronym for Microsoft Message Queuing. This technology provides a queue so that an application (the sender) can drop off a message that another application (the receiver) can retrieve at a later time. The benefit is that the two applications are not required to operate simultaneously.]

.NETDJ: Tell us about your home in Europe and what you do for fun.
Right now I'm still living in a flat in downtown Vienna, which basically equates to living in walking distance of all major sights of this city. Even though Vienna is a really great city, I've been looking forward to moving back to the countryside. And this is exactly what Katja - my fiancée who is managing all the preparation work for the move - and I will do soon. I'm really looking forward to moving to this house, as it will allow me to read, work, and write articles and books sitting in my garden on 802.11b.

The question about what I do for fun is one that's easily answered by anyone who's ever been to my home: reading. You'll usually see stacks of books everywhere, as I tend to have my nose in about 5 to 10 books at the same time, in a multithreaded way (whereas I have to admit that the thread-switching time approximates to a couple of hours). These books are mostly nontechnical, like science fiction in the style of Gibson, Sterling, and Stephenson; current bestsellers - yes, I do like Potter - and even business and management books. When I'm hired as a consultant, I tend to read books about the client's business to better understand what they are trying to accomplish.

.NETDJ: What do you think about blogging?
That's a tough one. I blog to allow others to get some information on what I'm currently doing. For instance, I recently started a book-blog at, which allows the curious mind to peek behind the scenes of a book in progress. Whenever I write articles or want to share some other information about .NET, I post them on my normal weblog ( As I really like to communicate with developers, I also publish a monthly newsletter about distributed .NET programming. In general, however, I think that I spend more time reading blogs than posting.

.NETDJ: What do you do to increase your knowledge of .NET?
I use it - daily. That, a good dose of curiosity, and a copy of Reflector at hand, and there are nearly no questions left unanswered.

[Editor's note: From Lutz Roeder, Reflector is another decompiler tool. It not only decompiles to C# but also VB.NET, plus some other cool features. See to download Reflector and other valuable .NET utilities.]

More Stories By Jon Box

Jon Box is an Architect Evangelist in Developer & Platform Evangelism with the Microsoft Corporation. He coauthored Building Solutions with the Microsoft .NET Compact Framework, published by Addison-Wesley, and blogs at

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.