Anvisningar: Konfigurera COM+ Service Inställningar
När ett programgränssnitt läggs till eller tas bort med hjälp av com+-tjänstkonfigurationsverktyget uppdateras webbtjänstkonfigurationen i programmets konfigurationsfil. I com+-värdbaserat läge placeras filen Application.config i programrotkatalogen (%PROGRAMFILES%\ComPlus Applications\{appid} är standard). I något av de webbaserade lägena placeras filen Web.config i den angivna vroot-katalogen.
Kommentar
Meddelandesignering bör användas för att skydda mot manipulering av meddelanden mellan en klient och en server. Kryptering på meddelande- eller transportnivå bör också användas för att skydda mot att information avslöjas från meddelanden mellan en klient och en server. Precis som med WCF-tjänster (Windows Communication Foundation) bör du använda begränsning för att begränsa antalet samtidiga anrop, anslutningar, instanser och väntande åtgärder. Detta hjälper till att förhindra överförbrukning av resurser. Begränsningsbeteende anges via inställningar för tjänstkonfigurationsfil.
Exempel
Överväg en komponent som implementerar följande gränssnitt:
[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")]
public interface IFinances
{
string Debit(string accountNo, double amount);
string Credit(string accountNo, double amount);
}
Om komponenten exponeras som en webbtjänst är motsvarande tjänstkontrakt som exponeras och som klienterna skulle behöva följa enligt följande:
[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);
}
Kommentar
IID utgör en del av det ursprungliga namnområdet för kontraktet.
Klientprogram som använder den här tjänsten skulle behöva följa det här kontraktet, tillsammans med en bindning som är kompatibel med den som anges i programkonfigurationen.
I följande kodexempel visas en standardkonfigurationsfil. Eftersom det är en WCF-webbtjänst (Windows Communication Foundation) överensstämmer detta med konfigurationsschemat för standardtjänstmodellen och kan redigeras på samma sätt som andra konfigurationsfiler för WCF-tjänster.
Typiska ändringar skulle vara:
Ändra slutpunktsadressen från standardformuläret ApplicationName/ComponentName/InterfaceName till ett mer användbart formulär.
Ändra namnområdet för tjänsten från standardformuläret
http://tempuri.org/InterfaceID
till ett mer relevant formulär.Ändra slutpunkten så att den använder en annan transportbindning.
I fallet COM+-värd används den namngivna rörtransporten som standard, men en transport utanför datorn som TCP kan användas i stället.
<?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>