Within the last ten years a lot of changes have happened in the way software has been designed and developed. Until about five years ago, it might have been sufficient to provide a monolithic client application that connected directly to a database server to perform its tasks.
Later, architects and managers alike demanded applications built from reusable components to provide improved abstraction, reusability, and maintainability. COM and Visual Basic did a great job of providing developers with the means to achieve these goals in an easy way.
The introduction of the Microsoft DNA concept along with MTS introduced a further layer of abstraction and enabled developers to centralize business logic on servers to develop scalable systems.
Nowadays the world starts to get connected. Architects and managers again place new demands on developers. Parts of your centralized business logic need to be "opened" and interfaces need to be provided to third parties—to other companies in your enterprise or even to business partners. On the other hand, your applications have to incorporate services provided by other companies, such as address verification or creditworthiness-rating services.
Visual Basic up to version 6.0 did a great job for the developer working in a closed LAN-environment, but can hardly be judged as a "connected" language. The SOAP Toolkit and the MSXML parser provided a first glimpse into the world of open and connected systems, but implementation still remained too labor intensive to be a practical approach for opening a lot of interfaces to third parties. Stability, security, versioning, and transfer of object-oriented structures were not supported by these technologies.
The Microsoft .NET Framework, on the other hand, has been designed with these requirements in mind. This starts with the IL and CLR, which provide an easy way to integrate different programming languages, and reaches up to .NET Remoting, which provides a comfortable way to interconnect different applications and components in an object-oriented manner. It also allows for far greater extensibility than DCOM, for example, did before.
This is what Advanced .NET Remoting will teach you, and I hope you will consider it a valuable resource for your work on distributed .NET applications. Read on to find out in detail what this book covers and who will benefit most from it.
This book covers the means of cross-process and cross-machine interaction of applications developed with the .NET Framework. It will provide you with an indepth understanding of the remoting capabilities that are built into the .NET Framework.
.NET Remoting is different from most other means of remote object access because it can be as easy as writing COM components in Visual Basic 6, yet also gives you the option to extend remoting to include virtually any protocol on any transportation layer you will come across.
The first part of the book gives you a thorough introduction to .NET Remoting basics and how you can use .NET Remoting "out of the box." This gives you a whole range of possibilities, from fast binary transfer protocol to a cross-platform SOAP protocol, with the potential to switch between both without changing a single line in your code. At the end of this part, you will be able to design and develop remoteable components and know just what you have to do to achieve your goals. This part also deals with objects' lifetimes, security, versioning, marshalling, and deployment.
The second part covers the advanced features of .NET Remoting and its extensibility model. At the end of the second part you will have an in-depth understanding of the inner workings of remoting and will know how to extend the framework to meet your requirements. You should not be afraid, especially as you go through the sample code in the second part of the book, to either hit F1 or to insert a breakpoint and examine the Locals window in your custom channel sink to see the exact contents of the objects that get passed as parameters to your methods.