Packages are collections of components that perform related application functions. They are the primary unit of administration and trust in MTS. Packages straddle the line between application development and application deployment. Certain decisions about packages should be defined by developers; others should be deferred until deployment.
Developers should decide which components should be packaged together, based on application requirements and implementation constraints. The four primary factors influencing package design are activation, shared resources, fault isolation, and security isolation. Developers should also define roles, set the authentication level, and define transaction requirements for their components.
In general, developers should avoid decisions that would unduly constrain application deployment. Packages should be designed to give a system administrator the flexibility to tune deployment for best overall system performance. Decisions about role membership and which user identities to run packages as should be deferred until deployment.
Developers should produce exported packages, suitable for server installation. The physical design documentation should be updated to reflect the actual package design as well as any recommendations for or constraints on deployment. We will return to packages and application deployment in Chapter 14.