Postupy: Konfigurace nastavení služby modelu COM+
Při přidání nebo odebrání aplikačního rozhraní pomocí nástroje Konfigurace služby modelu COM+ se konfigurace webové služby aktualizuje v rámci konfiguračního souboru aplikace. V režimu hostovaného com+ je soubor Application.config umístěn v kořenovém adresáři aplikace (%PROGRAMFILES%\ComPlus Applications\{appid} je výchozí). V některém z režimů hostovaných webem se soubor Web.config umístí do zadaného adresáře vroot.
Poznámka:
Podepisování zpráv by mělo být použito k ochraně před manipulací zpráv mezi klientem a serverem. Šifrování vrstvy zpráv nebo přenosové vrstvy by také mělo být použito k ochraně před únikem informací ze zpráv mezi klientem a serverem. Stejně jako u služeb WCF (Windows Communication Foundation) byste měli omezit počet souběžných volání, připojení, instancí a čekajících operací pomocí omezování. To pomáhá zabránit nadměrné spotřebě prostředků. Chování omezování se určuje prostřednictvím nastavení konfiguračního souboru služby.
Příklad
Zvažte komponentu, která implementuje následující rozhraní:
[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")]
public interface IFinances
{
string Debit(string accountNo, double amount);
string Credit(string accountNo, double amount);
}
Pokud je komponenta vystavena jako webová služba, odpovídající kontrakt služby, který je vystavený a že klienti by potřebovali splňovat, je následující:
[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);
}
Poznámka:
IID tvoří součást počátečního oboru názvů smlouvy.
Klientské aplikace, které používají tuto službu, by potřebovaly splňovat tento kontrakt spolu s použitím vazby, která je kompatibilní s vazbou zadanou v konfiguraci aplikace.
Následující příklad kódu ukazuje výchozí konfigurační soubor. Jedná se o webovou službu WCF (Windows Communication Foundation), která odpovídá standardnímu schématu konfigurace modelu služby a dá se upravovat stejným způsobem jako jiné konfigurační soubory služeb WCF.
Mezi typické úpravy patří:
Změna adresy koncového bodu z výchozího formuláře ApplicationName/ComponentName/InterfaceName na použitelnější formulář
Úprava oboru názvů služby z výchozího
http://tempuri.org/InterfaceID
formuláře na relevantnější formulářZměna koncového bodu tak, aby používal jinou přenosovou vazbu.
V případě hostovaného modelu COM+se ve výchozím nastavení používá přenos pojmenovaných kanálů, ale místo toho je možné použít přenos mimo počítač, jako je 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>