Configurando serviços COM+ com CServiceConfig
A classe CServiceConfig é usada para configurar os serviços COM+ que podem ser usados sem componentes. Ele agrega o marshaler de rosca livre, para que possa ser usado em diferentes apartamentos. Para configurar um serviço individual, você deve chamar QueryInterface para a interface associada ao serviço e, em seguida, chamar métodos nessa interface para estabelecer a configuração apropriada. A tabela a seguir descreve as interfaces que são implementadas por meio da classe CServiceConfig .
Interface | Descrição |
---|---|
IServiceInheritanceConfig |
A interface padrão para a classe. Ele é usado para inicializar rapidamente muitos dos serviços COM+. |
IServiceComTIIntrinsicsConfig |
Usado para configurar as informações intrínsecas do COMTI (COM Transaction Integrator). O COMTI permite que os desenvolvedores integrem programas de transação baseados em mainframe com aplicativos baseados em componentes. |
IServiceIISIntrinsicsConfig |
Usado para configurar as informações intrínsecas dos Serviços de Informações da Internet (IIS). |
IServicePartitionConfig |
Usado para configurar como as partições COM+ são usadas com os serviços. |
IServiceSxSConfig |
Usado para configurar montagens lado a lado. |
IServiceSynchronizationConfig |
Usado para configurar serviços de sincronização COM+. |
IServiceThreadPoolConfig |
Usado para configurar o pool de threads para o serviço COM+. O pool de threads pode ser configurado somente ao usar a função CoCreateActivity. |
IServiceTrackerConfig |
Usado para configurar a propriedade Tracker. O Tracker é um mecanismo de relatório usado pelo código de monitoramento para observar qual código está sendo executado quando. |
IServiceTransactionConfig |
Usado para configurar o serviço de transação COM+. |
Ferramenta administrativa de serviços de componentes
Não se aplica.
Visual Basic
Não se aplica.
C/C++
O fragmento de código a seguir ilustra como criar e configurar um objeto CServiceConfig para usar transações COM+.
// Create a CServiceConfig object.
HRESULT hr = CoCreateInstance(CLSID_CServiceConfig, NULL, CLSCTX_INPROC_SERVER,
IID_IUnknown, (void**)&pUnknownCSC);
if (FAILED(hr)) throw(hr);
// Query for the IServiceInheritanceConfig interface.
hr = pUnknownCSC->QueryInterface(IID_IServiceInheritanceConfig,
(void**)&pInheritanceConfig);
if (FAILED(hr)) throw(hr);
// Inherit the current context before using transactions.
hr = pInheritanceConfig->ContainingContextTreatment(CSC_Inherit);
if (FAILED(hr)) throw(hr);
// Query for the IServiceTransactionConfig interface.
hr = pUnknownCSC->QueryInterface(IID_IServiceTransactionConfig,
(void**)&pTransactionConfig);
if (FAILED(hr)) throw(hr);
// Configure transactions to always create a new one.
hr = pTransactionConfig->ConfigureTransaction(CSC_NewTransaction);
if (FAILED(hr)) throw(hr);
// Set the isolation level of the transactions to ReadCommitted.
hr = pTransactionConfig->IsolationLevel(
COMAdminTxIsolationLevelReadCommitted);
if (FAILED(hr)) throw(hr);
// Set the transaction time-out to 1 minute.
hr = pTransactionConfig->TransactionTimeout(60);
if (FAILED(hr)) throw(hr);