Procedure: COM+ Service-Instellingen configureren
Wanneer een toepassingsinterface wordt toegevoegd of verwijderd met het hulpprogramma COM+ Service Configuration, wordt de webserviceconfiguratie bijgewerkt in het configuratiebestand van de toepassing. In de gehoste COM+-modus wordt het bestand Application.config geplaatst in de hoofdmap van de toepassing (%PROGRAMFILES%\ComPlus Applications\{appid} is de standaardinstelling). In een van de door het web gehoste modi wordt het bestand Web.config in de opgegeven vroot-map geplaatst.
Notitie
Berichtondertekening moet worden gebruikt om te beschermen tegen manipulatie van berichten tussen een client en een server. Bovendien moet bericht- of transportlaagversleuteling worden gebruikt om te beschermen tegen openbaarmaking van informatie tegen berichten tussen een client en een server. Net als bij WCF-services (Windows Communication Foundation) moet u beperkingen gebruiken om het aantal gelijktijdige aanroepen, verbindingen, exemplaren en in behandeling zijnde bewerkingen te beperken. Dit helpt te voorkomen dat resources te veel worden gebruikt. Beperkingsgedrag wordt opgegeven via de instellingen van het serviceconfiguratiebestand.
Opmerking
Overweeg een onderdeel dat de volgende interface implementeert:
[Guid("C551FBA9-E3AA-4272-8C2A-84BD8D290AC7")]
public interface IFinances
{
string Debit(string accountNo, double amount);
string Credit(string accountNo, double amount);
}
Als het onderdeel wordt weergegeven als een webservice, is het bijbehorende servicecontract dat beschikbaar wordt gemaakt en waaraan clients moeten voldoen, als volgt:
[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);
}
Notitie
IID maakt deel uit van de initiƫle naamruimte voor het contract.
Clienttoepassingen die deze service gebruiken, moeten voldoen aan dit contract, samen met het gebruik van een binding die compatibel is met de binding die is opgegeven in de toepassingsconfiguratie.
In het volgende codevoorbeeld ziet u een standaardconfiguratiebestand. Dit is een WCF-webservice (Windows Communication Foundation), dit voldoet aan het standaardconfiguratieschema voor het servicemodel en kan op dezelfde manier worden bewerkt als andere WCF-servicesconfiguratiebestanden.
Typische wijzigingen zijn onder andere:
Het eindpuntadres wijzigen van het standaardformulier ApplicationName/ComponentName/InterfaceName in een bruikbaarder formulier.
De naamruimte van de service wijzigen van het standaardformulier
http://tempuri.org/InterfaceID
in een relevanter formulier.Het eindpunt wijzigen om een andere transportbinding te gebruiken.
In het com+-hosted geval wordt het benoemde pijptransport standaard gebruikt, maar in plaats daarvan kan een transport buiten de machine, zoals TCP, worden gebruikt.
<?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>