Interview
.NET Remoting: Ingo Rammer talks .NET
.NET Remoting: Ingo Rammer talks .NET
Nov. 11, 2003 08:00 AM
.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.
-INTERVIEWED BY JON BOX, MOBILITY EDITOR FOR .NETDJ
NETDJ: How did you get
started in software development?
IR: 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?
IR: 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
www.saurik.com/net/exemplar).]
.NETDJ: Most people do not write
a popular book on the first
attempt. What made your book
so successful?
IR: 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?
IR: 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?
IR: 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?
IR: 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?
IR: 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.
IR: 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?
IR: 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?
IR: 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.
IR: 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?
IR: 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 www.ingorammer.com/BookBlog, 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 (www.ingorammer.com/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?
IR: 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 www.aisto.com/roeder/dotnet to download Reflector
and other valuable .NET utilities.]
About Jon BoxJon 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 http://blogs.msdn.com/jonbox/default.aspx.