Architecture
Application Server consists of a single Windows service—Application Host (OCSAppServerMaster.exe)—and one or more instances of another Windows service—OCSAppServerHost.exe. Each instance of OCSAppServerHost.exe on a server hosts an Application Server application unique to that server. There will never be multiple instances of any particular Application Server application on a server.
In the Enterprise Edition consolidated pool topology, all Front End Servers run identical instances of each Application Server application selected at the time of Office Communications Server installation.
The Application Server applications themselves are written as .NET Framework 3.5 managed assemblies. All OCSAppServerHost.exe process instances and the OCSAppServerMaster.exe process run under the RTCComponentService account security context.
Each Application Server application leverages the following Office Communications Server 2007 R2 components:
- WMI – Each application uses the lcwmi WMI provider to
store/retrieve global and pool settings. For each Application
Server application, all instances in a pool use a common set of
settings stored in the backend RTCConfig database. Global settings
are stored in Active Directory Domain Services.
- Unified Communications Managed APIs (UCMA) 2.0 –Application
Server applications interface these APIs to access the SIP and
media stack on each front end server. Communications between the
Application Server applications and other SIP endpoints all route
through a SIP Proxy in the same pool as the application (but not
necessarily on the same physical server).
- Contact Objects/Trusted Services – Application Server
applications are SIP Application Endpoints and as such require a
SIP Address of Record (AOR) in the form of a SIP URI or Tel URI.
This is accomplished by assigning an Active Directory Domain
Services Contact object to each application and setting the
application as a Trusted Service. These assignments enable the
application to act as a SIP User Agent without having to
authenticate or register, and enables them to subscribe to the
presence of registered users and publish presence on behalf of
registered users.
- Management – The Office Communications Server 2007 R2
Management Console exposes service start-up and shut-down control
of the Application Server services on a per-server basis in the
same way it provides control of the other Office Communications
Server 2007 R2 services, such as the Front End services or
Conferencing Servers. If an Application Server application requires
pool-level configuration, the Management Console can list the
application under the new
Applicationsoption under the pool’s
Propertiesmenu in Office Communications Server 2007 R2. This
will launch a new snap-in for managing that application’s pool
level settings. (In R2, only the Response Group feature requires
pool-level configuration.) The Management Console also can expose
property sheets on the Forest container as needed to configure
global properties associated with the Application Server
application. In Office Communications Server 2007 R2, Communicator
2007 R2 Attendant is the only Application Server application that
requires configuration at this level. Because all Application
Server application instances in a pool are identical, configuration
of Application Server applications on a per-server basis is
unnecessary.
- Installation/Activation – the Application Server environment
and each Application Server application are packaged as Windows
installer (.MSI) files called from the main Office Communications
Server installation program (if one or more Application Server
applications were selected for installation). After you install it,
they are activated or deactivated in AD DS using lcscmd.exe
/server:<appserver> /action:Activate|Deactivate
/Role:AppServer.
- Logging –Application Server applications can expose new
components to the Office Communications Server 2007 R2 Logging Tool
(OCSLogger.exe) for tracing communications with the application.
Other Key Application Server Characteristics
Distributed Workload
The Office Communications Server Application Host process does not listen on the network at all, but like the Office Communications Server Conferencing Servers, each Application Server application has a TCP port assigned to it. All servers in the pool listen on those assigned ports for each the specific Application Server application they host, and the hardware load balancer also listens on those ports and distributes inbound traffic to Application Server application instances on a server in the pool. All SIP communications with an Application Server application occurs over TLS between a SIP Proxy in its pool using the pool’s SSL certificate, even if the Application Server application instance happens to be on the same physical server as the SIP Proxy. As with other UC endpoints, media communications are direct between the client and the Application Server application instance that took the call. For example, once a call has been routed to a Conferencing Attendant instance, the audio media flows directly between it and the Mediation Server that handled the call.
Stateless
Application Server applications are stateless in that they do not persist data between sessions, and each instance operates autonomously of the other instances of that application in the pool or across pools.
All Application Server instances of a particular application are equivalent across servers in pool and do not communicate with each other or another server process (unlike the Conferencing Servers, which communicate state information to the Conferencing Server Factory). Furthermore, Application Server applications do not register with the SIP Registrar and thereby do not support multiple points-of-presence. A call to an Application Server application is routed to only one Application Server instance and the other instance remain unaware of that call.
The Office Communications Server Application Host service (OCSAppServerMaster.exe) also does not monitor the state of the Application Server applications on its server, other than monitoring whether the instances are running and if it detects an unhandled exception in the application, it will restart it automatically.