Each SubAppObject encapsulates a set of business logic deployed at a particular AppServer. It differs from an AppObject only in that it does not establish its own connection to an AppServer but shares the one established by its associated AppObject.
The associated AppObject defines a class factory method for creating each SubAppObject that shares its AppServer connection. This method exchanges no communications with the AppServer; rather, it only performs operations to instantiate the SubAppObject on the client.
SubAppObjects are less useful for session-free applications, especially for those that support SOAP Web services. For .NET and Java Open Clients, SubAppObjects can help to organize functionality for session-free application services. However, because of the implementation of SubAppObjects for Web services, SubAppObjects add complexity to Web service request management on the client that you might want to avoid. Therefore, if you intend your Open Client interface to define Web services, you might prefer to avoid the use of SubAppObjects and encapsulate the application service interface in the single AppObject for all Open Clients that use it. For more information on how SubAppObjects work with session-free Web services, see OpenEdge Development: Web Services.