Udostępnij za pośrednictwem


Instrukcje: konfigurowanie ustawień usługi COM+

Po dodaniu lub usunięciu interfejsu aplikacji za pomocą narzędzia COM+ Service Configuration konfiguracja usługi sieci Web zostanie zaktualizowana w pliku konfiguracji aplikacji. W trybie hostowanym COM+ plik Application.config jest umieszczany w katalogu głównym aplikacji (%PROGRAMFILES%\ComPlus Applications\{appid} jest wartością domyślną). W jednym z trybów hostowanych w sieci Web plik Web.config jest umieszczany w określonym katalogu vroot.

Uwaga

Podpisywanie komunikatów powinno służyć do ochrony przed manipulowaniem komunikatów między klientem a serwerem. Ponadto szyfrowanie warstwy komunikatów lub transportu powinno być używane do ochrony przed ujawnieniem informacji przed komunikatami między klientem a serwerem. Podobnie jak w przypadku usług Windows Communication Foundation (WCF), należy użyć ograniczania, aby ograniczyć liczbę współbieżnych wywołań, połączeń, wystąpień i oczekujących operacji. Pomaga to zapobiec nadmiernemu zużyciu zasobów. Zachowanie ograniczania przepływności jest określane za pośrednictwem ustawień pliku konfiguracji usługi.

Przykład

Rozważ składnik, który implementuje następujący interfejs:

[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")]  
public interface IFinances  
{  
    string Debit(string accountNo, double amount);  
    string Credit(string accountNo, double amount);  
}  

Jeśli składnik jest uwidoczniony jako usługa sieci Web, odpowiedni kontrakt usługi, który jest uwidoczniony, i że klienci muszą być zgodni z, jest w następujący sposób:

[ServiceContract(Session = true,  
Namespace = "http://tempuri.org/C551FBA9-E3AA-4272-8C2A-84BD8D290AC7",  
Name = "IFinances")]  
public interface IFinancesContract : IDisposable  
{  
    [OperationContract]  
    string Debit(string accountNo, double amount);  
    [OperationContract]  
    string Credit(string accountNo, double amount);  
}  

Uwaga

Identyfikator IID stanowi część początkowej przestrzeni nazw dla kontraktu.

Aplikacje klienckie korzystające z tej usługi będą musiały być zgodne z tą umową wraz z użyciem powiązania zgodnego z powiązaniem określonym w konfiguracji aplikacji.

Poniższy przykład kodu przedstawia domyślny plik konfiguracji. Jako usługa sieci Web programu Windows Communication Foundation (WCF) jest zgodna ze standardowym schematem konfiguracji modelu usług i może być edytowana w taki sam sposób, jak inne pliki konfiguracji usług WCF.

Typowe modyfikacje obejmują:

  • Zmiana adresu punktu końcowego z domyślnego formularza ApplicationName/ComponentName/InterfaceName na bardziej użyteczny formularz.

  • Modyfikowanie przestrzeni nazw usługi z formularza domyślnego http://tempuri.org/InterfaceID na bardziej odpowiedni formularz.

  • Zmiana punktu końcowego na użycie innego powiązania transportu.

    W przypadku modelu COM+-hosted transport nazwanych potoków jest używany domyślnie, ale zamiast tego można użyć transportu poza maszyną, takiego jak TCP.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <system.serviceModel>  
        <bindings>  
            <netNamedPipeBinding>  
                <binding name="comNonTransactionalBinding" />  
                <binding name="comTransactionalBinding" transactionFlow="true" />  
            </netNamedPipeBinding>  
        </bindings>  
        <comContracts>  
            <comContract contract="{C551FBA9-E3AA-4272-8C2A-84BD8D290AC7}"  
                name="IFinances" namespace="http://tempuri.org/C551FBA9-E3AA-4272-8C2A-84BD8D290AC7"  
                requiresSession="true">  
                <exposedMethods>  
                    <add exposedMethod="Debit" />  
                    <add exposedMethod="Credit" />  
                </exposedMethods>  
            </comContract>  
        </comContracts>  
        <services>  
            <service name="{DCDB24CC-0B19-4534-95CD-FBBFF4D67DD9},{C942B840-AD54-4A44-B5F7-928130980AB9}">  
                <endpoint address="IFinances" binding="netNamedPipeBinding" bindingConfiguration="comNonTransactionalBinding"  
                    contract="{C551FBA9-E3AA-4272-8C2A-84BD8D290AC7}" />  
                <host>  
                    <baseAddresses>  
                        <add baseAddress="net.pipe://localhost/ServiceModelDocSampleApp/ServiceModelDocSample.esFinance" />  
                    </baseAddresses>  
                </host>  
            </service>  
        </services>  
    </system.serviceModel>  
</configuration>  

Zobacz też