"For anyone involved in the .NET community, it's hard to not have heard of Christian Nagel. Christian is a true heavyweight of .NET in general, and Enterprise Services in particular. By taking a relatively trivial application and architecting it in a way that would allow it to scale without any rework, users will find that using the techniques employed in this book will be of benefit to virtually any company that is running distributed or enterprise applications."
—William G. Ryan, Microsoft MVP, Senior Software Developer, TiBA Soutions, LLC
"Whether you are a seasoned architect or a new developer, distributed application development can be difficult, since it covers such a wide range of complex technologies. Until now there was precious little in the way of guidance—let alone a consolidated reference. Christian has provided that reference and more—going from the individual technologies to the big picture on how to architect and develop scalable distributed applications. Technical goodness through and through!"
—Clayton Burt, Managing Partner, Onzo, LLC
"Making the transition to distributed application architecture introduces many issues in security and deployment and requires a new way of thinking about events, transactions, and messaging. This book shows developers and architects alike how to use .NET Enterprise Services to create robust, secure, and maintainable applications in a distributed environment. This book is an excellent guide to the sometimes overwhelming field of .NET Enterprise Services."
—Brian Davis, Director of Software Development, InfoPro Group, Inc., Co-Creator, KnowDotNet.com
Enterprise Services with the .NET Framework is the only book that experienced .NET developers need to learn how to write distributed, service-oriented applications. Filled with clear examples in C# (with Visual Basic .NET examples available on the Web), this book will quickly get you up to speed on building distributed applications with serviced components. You'll also learn about Indigo, Microsoft's next-generation technology for building distributed applications, and how it compares to Enterprise Services.
Microsoft Regional Director, MVP, and veteran author Christian Nagel introduces and clearly explains the four major services included in Enterprise Services: Automatic Transactions, Queued Components, Loosely Coupled Events, and Role-Based Security. From his in-depth coverage, you'll learn
How to create a serviced component, how serviced objects are activated, and how to use the different kinds of object contexts
How to manage concurrency and synchronization for serviced components to achieve optimal performance and data integrity
How to integrate COM components with the .NET Framework
How to use serviced components over a network with DCOM, SOAP Services, and ASP.NET Web services
How to use .NET Enterprise Services transactions to achieve Atomicity, Consistency, Isolation, and Durability
How to build a compensating resource manager to allow your own resources to participate in Enterprise Services transactions
How to maintain application state in a client application, in a serviced component, in shared properties, or in a database
How to create and use Loosely Coupled Events using COM+
How to secure a distributed solution using authorization, authentication, impersonation, and confidentiality
How to deploy and configure Enterprise Services applications
Table of Contents:
About the Author
1. Introducing .NET Enterprise Services.
Logical Tiers and Physical Systems
The History of Application Services
COM and .NET
Microsoft Transaction Server
.NET Enterprise Services
Applications and Components
Loosely Coupled Events
New Features with COM+ 1.5
2. Object Activation and Contexts.
.NET Remoting Contexts
Contexts with Serviced Components
Mixing .NET and COM+ Contexts
Creating a Serviced Component
Signing the Assembly
Global Assembly Cache
Just-in-Time Activation (JITA)
JITA and Object Disposing
More Synchronization Options
.NET Enterprise Services Synchronization
Selecting the Synchronization Option
Services Without Components
Using a New Activity
Starting a New Context
4. COM Interop.
.NET Clients Without COM Interop
COM Callable Wrappers and Runtime Callable Wrappers
Default COM Configuration
Generated Type Library
COM Interface Types
Private and Shared Assemblies
COM Registry Entries
COM and .NET Requirements
Visual Basic 6 Clients
C++ COM Clients
Calling a COM Object
Runtime Callable Wrapper
DCOM Transport Protocols
Creating an Application Proxy
Installing the Application Proxy
Creating a DCOM Client Application
.NET Remoting Overview
Creating a Serviced Component Using .NET Remoting
Configuring the Server Application
Creating a .NET Remoting Client
Disadvantages of SOAP Services
Implementing a Web Service with ASP.NET
Creating a Proxy
6. Data Access.
Calling Stored Procedures
7. Transaction Services.
Automatic Transaction Example
Setting the Transactional Vote
Transactions with Services Without Components
Transactions Support with ASP.NET
Potential Transaction Isolation Problems
Transaction Isolation Levels
Monitoring the DTC
Transactions with .NET 2.0
8. Compensating Resource Management.
CRM Application Classes
CRM Application Example
9. State Management.
Stateful or Stateless Components
Databases and Files
Shared Property Manager
Shared Property Group Manager
Shared Property Group
SPM State Characteristics
ASP.NET State Management
Accessing ASP.NET State from Within Serviced Components
ASP.NET State Characteristics
Client State Management
.NET Remoting Call Contexts
10. Queued Components.
Message Queuing Server
Message Queuing Client
Message Queuing Features
Creating a Queued Component
The CourseControl Class
11. Loosely Coupled Events.
Using LCEs Across the Network
Event Class Proxies
LCE and Queued Components
Event Classes as Queued Components
Subscribers as Queued Components
Internet Information Server
ASP.NET Web Applications
ASP.NET Web Services
Enabling Access Checks
Defining Role Access
Checking Roles Within Methods
Authentication Levels and Impersonation
Reading the Identity of the Caller
Enterprise Services and .NET Remoting
13. Deployment and Configuration.
Creating a Custom Installer
Creating an Installation Package
Configuring the Application as a Service
14. The Future of Distributed Applications.
Web Services Specifications
Moving from Enterprise Services to Indigo
15. Case Study.
Use Case-Course Management
The CourseManagement Database
CourseManager-Windows Forms Client