Aracılığıyla paylaş


Nasıl yapılır: COM+ Hizmet Ayarlarını Yapılandırma

COM+ Hizmet Yapılandırması aracı kullanılarak bir uygulama arabirimi eklendiğinde veya kaldırıldığında, Web hizmeti yapılandırması uygulamanın yapılandırma dosyasında güncelleştirilir. COM+ barındırılan modunda Application.config dosyası Uygulama Kök Dizinine yerleştirilir (%PROGRAMFILES%\ComPlus Applications\{appid} varsayılandır). Web'de barındırılan modlardan birinde, Web.config dosyası belirtilen vroot dizinine yerleştirilir.

Not

İleti imzalama, bir istemci ile sunucu arasındaki iletilerin oynanmasından korunmak için kullanılmalıdır. Ayrıca, bir istemci ile sunucu arasındaki iletilerden bilgilerin açığa çıkmasına karşı koruma sağlamak için ileti veya aktarım katmanı şifrelemesi kullanılmalıdır. Windows Communication Foundation (WCF) hizmetlerinde olduğu gibi eşzamanlı çağrı, bağlantı, örnek ve bekleyen işlem sayısını sınırlamak için azaltmayı kullanmanız gerekir. Bu, kaynakların aşırı tüketimini önlemeye yardımcı olur. Azaltma davranışı, hizmet yapılandırma dosyası ayarları aracılığıyla belirtilir.

Örnek

Aşağıdaki arabirimi uygulayan bir bileşeni düşünün:

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

Bileşen bir Web hizmeti olarak kullanıma sunulduysa, kullanıma sunulan ve istemcilerin uyması gereken ilgili hizmet sözleşmesi aşağıdaki gibidir:

[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);  
}  

Not

IID, sözleşmenin ilk ad alanının bir parçasını oluşturur.

Bu hizmeti kullanan istemci uygulamalarının bu sözleşmeye uyması ve uygulama yapılandırmasında belirtilenle uyumlu bir bağlama kullanması gerekir.

Aşağıdaki kod örneği varsayılan yapılandırma dosyasını gösterir. Windows Communication Foundation (WCF) Web hizmeti olarak, bu standart hizmet modeli yapılandırma şemasına uygundur ve diğer WCF hizmetleri yapılandırma dosyalarıyla aynı şekilde düzenlenebilir.

Tipik değişiklikler şunlardır:

  • Uç nokta adresini varsayılan ApplicationName/ComponentName/InterfaceName formundan daha kullanılabilir bir forma değiştirme.

  • Hizmetin ad alanını varsayılan http://tempuri.org/InterfaceID formdan daha ilgili bir forma değiştirme.

  • Uç noktayı farklı bir aktarım bağlaması kullanacak şekilde değiştirme.

    COM+barındırılan durumda, adlandırılmış kanallar aktarımı varsayılan olarak kullanılır, ancak bunun yerine TCP gibi bir makine dışı aktarım kullanılabilir.

<?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>  

Ayrıca bkz.