With the arrival of .NET remoting, any programmer who wants to work with distributed objects can benefit from Advanced .NET Remoting, a solid tour of basic and expert techniques for working with distributed code on Microsoft's newest platform.
This title's concise, code-centered approach, backed up by judicious discussion of the finer technical points of .NET, is what helps make it a success. After touring the history of standards used for distributed computing over the years, from DCE/RPC to CORBA to COM and related Microsoft technologies, the author zeroes in on .NET remoting. Short, digestible examples highlight the relevant objects and APIs useful to create and invoke objects remotely. From the basics, the book moves forward with other possibilities for designers, whether using by value or reference arguments for objects, client-activated vs. server-activated objects, and a useful section on asynchronous processing for remote function calls. Early examples use the APIs and strategies you'll need to work on your own, and the author highlights "best practices" like using class factories.
Detailed discussion of deployment options (using XML) is followed by a quick discussion of security and authentication and then managing object lifetimes (including programmatic options through leasing and sponsors). Coverage of using strongly named assemblies (for the Global Assembly Cache, GAC) and versioning stresses the finer points of how different versions of .NET components can be invoked on the same server.
For experts, there's a fine section that covers .NET remoting internals, explains the details of making distributed calls in .NET, and shows off how messages are formatted and passed between systems through proxies. Excellent use of sequence diagrams showing these features at work will make this chapter invaluable for the advanced reader (though you still use the sample code without having to master these .NET internals).
The book returns to its pragmatic focus with some interesting sample code for compressing and encrypting .NET remote messages with built-in support classes in .NET. A highly developed chapter demonstrates how you use custom transport channel to make remote calls via e-mail (through SMTP and POP3), showing off the flexibility of the .NET programming model. For the truly adventurous developer, a final chapter explores several (undocumented) features for examining and using context objects used in the .NET remoting model.
Overall, this concisely packaged book mixes the right level of sample code, detailed explanation, and advanced material that will let C# developers get going fast with .NET remoting, which can greatly simplify distributed programming on the new Windows platform. --Richard Dragan
Topics covered: Introduction to .NET remoting, history of distributed computing mechanisms (including DCE/RPC, CORBA, and COM to .NET), advantages of .NET remoting (and architecture), a simple getting started program using .NET remoting with a server and client, adding validation, types of remoting (passing objects by value and reference, singletons, published objects), using factories to create objects, server-activated vs. client-activated objects, lifetime management, synchronous vs. asynchronous function calls, multi-server programming, shared assemblies (and the soapsuds utility and proxies), configuration (XML config. files and standard options), deployment (console vs. Windows services vs. IIS), security issues (authentication and checking roles), using SSL and encryption, object lifetime management (lease time and managers, server-side sponsors), versioning for .NET components (strong naming and the Global Assembly Cache, GAC), delegate and events (tips for event handling), .NET remoting internals (proxies, messages, message sinks, formatters, and transport channels), internals of asynchronous processing, advanced sink programming (client-, server-side, and dynamic sinks), extending .NET remoting (including message compression and encryption support), custom transport channels (using POP3/SMTP), and undocumented techniques for working with .NET remoting context objects.