The rest of this topic consists of a step-by-step checklist of every single one of the decisions that a programmer must make in developing a typical DCE application. Each set of decisions or choices is combined into one step. The combination of all these steps takes you from the initial coding stages into and through the normal course of execution of the application itself. The underlying intention of this arrangement is to give you a useful mental model of the overall code development process.
The four basic phases of DCE application development are as follows:
A. CLIENT and SERVER: Define the IDL interface [Steps A1 to A4]
B. SERVER: Set up and listen [Steps B1 to B8]
C. CLIENT: Bind to and invoke the server [Steps C1 to C4]
D. SERVER: Service request(s) [Steps D1 to D5]
Following is an overview list of all 21 steps, separated into the four main phases previously described. Each step's numeral is followed by a / (slash) and the terms Client and/or Server to indicate whether it applies to the application's server or client, or both.
A. CLIENT and SERVER: Define the IDL interface
A1/Client and Server: Generate the interface UUID
A2/Client and Server: Write the .idl file
A3/Client and Server: Write the .acf file (optional)
A4/Client and Server: Process the files with the IDL compiler
B. SERVER: Initialization
B1/Server: Set up for serviceability
B2/Server: Set up the server's objects
B3/Server: Set up security
B4/Server: Define the manager entry point vectors
B5/Server: Register the server
B6/Server: Specify multithreadedness
B7/Server: Listen for incoming service requests
B8/Server: Clean up when server terminates
C. CLIENT: Bind to and invoke the server
C1/Client: Multithreaded client design
C2/Client: Import the binding information from the namespace (CDS)
C3/Client: Annotate the binding handle for security
C4/Client: Invoke an RPC interface operation
D. SERVER: Service the request
D1/Server: Get the client's credentials
D2/Server: Get the object's access control list
D3/Server: Make the authorization decision
D4/Server: Service the request
D5/Server: Return the results to the client and resume listening