This book is aimed at developers and interface designers using COM, Micro-soft Transaction Server (MTS), or COM+ from C++ or Visual Basic. It assumes that the reader has a working knowledge of COM, such as can be found in
Essential COM by Don Box or in
Programming Distributed Applications with COM+ and Microsoft Visual Basic 6.0 by Ted Pattison.
What to Expect
This book is divided into two parts. The first six chapters describe the various constructs available in IDL using fully formed sentences with subjects, verbs, and adjectives. The IDL constructs are shown along with the client-side call sequences and method implementations. Each chapter other than the first concludes with a list of guidelines for using the IDL constructs discussed. The last four chapters provide a tabular reference for IDL types, modifiers, keywords, and attributes.
Chapter 1: Hello, IDL
Many COM developers are either unaware of the existence of IDL or unsure as to why it exists. Chapter 1 describes the fundamentals of IDL and the reasons for its existence along with the basics of defining interfaces.
Chapter 2: Structure of an IDL file
The MIDL compiler can output two forms of type information. Which one is generated often depends on the position of a given IDL construct within the IDL file. Chapter 2 covers the details of generating type information and building proxy-stub DLLs, local and remote interfaces, and the various file management constructs.
Chapter 3: Data types and interface issues
Using the proper data types is critical to interface design and component integration. Chapter 3 deals with the details of the primitive IDL types and also covers object references; user-defined types; and enums, structures, and unions. Information about how to ensure that the correct information is present in any generated type library is also presented. This chapter also provides a discussion of interface inheritance.
Chapter 4: Pointers and arrays
Many interfaces need to support output parameters, while others need support for arrays of data. Chapter 4 deals with the details of pointers in IDL, including the different ways that IDL and the COM interception layer treat top-level and embedded pointers. It also covers various array types, including fixed arrays, conformant arrays, and SAFEARRAYs.
Chapter 5: Aliasing
IDL provides support for method and type aliasing, both of which allow inter-face designers to inject arbitrary code into the COM interception layer. Chapter 5 details how to use both types of aliasing, including two approaches to type aliasing: transmit_as and wire_marshal.
Chapter 6: Asynchronous COM
Windows 2000 provides support for asynchronous COM calls from both client and server perspectives. Chapter 6 describes the IDL attribute that makes this possible, along with the details of writing the client-side and server-side code.
Chapter 7: IDL Types
IDL provides certain built-in, primitive types, and the system IDL files provide several constructed types. Chapter 7 is a reference for all the primitive IDL types plus the constructed types BSTR,SAFEARRAY,VARIANT,and VARIANT _BOOL. It provides information such as the size of each type, the type library and Oicf mappings for each type, and the C++ and Visual Basic mappings.
Chapter 8: IDL Type Modifiers
IDL allows types to be qualified with certain type modifiers including, const, signed, and unsigned. Chapter 8 is a reference to all the modifiers supported by IDL and includes information such as whether or not a given modifier is rep-resented in a type library and the data types to which the modifier can be applied.
Chapter 9: IDL Keywords
IDL provides a large number of keywords with various uses from defining inter-faces and structures to importing other IDL files. Chapter 9 is a reference for all the IDL keywords from coclass to union. The information presented includes the forms of type information that represent the keyword, which attributes are mandatory, and which are optional.
Chapter 10: IDL Attributes
The keywords and other constructs in IDL can be annotated with various attributes. Chapter 10 is a reference for all the IDL attributes related to marshaling, plus some others, and includes information about whether a given attribute is present in the type library along with the keywords and constructs to which the attribute is applicable.
Virtually all COM projects should begin with IDL, because defining interfaces is the key to successfully designing any COM project. Essential IDL is the first book that focuses entirely on IDL, providing in-depth explanations of both the language and its applications. Essential IDL starts by explaining why IDL exists, what it is for, and what can be done with it. All aspects of IDL syntax are covered: basic interface definition, complex data types, array handling, marshalling issues, and more. From start to finish, the focus is pragmatic. Expert COM developer Martin Gudgin presents extensive IDL code samples and resulting C++, Java, and VB language mappings, demonstrating exactly how to use IDL constructs sensibly and efficiently in both client-side and server-side projects. Gudgin takes a top-down approach, starting with interfaces, then drilling down into simple data types, complex types, pointers and arrays; and finishing with aliasing and other esoteric IDL constructs. The second half of the book is a complete reference guide to all of IDL's data types, modifiers, keywords and attributes.