Ich habe eine Assembly, die mehrere WCF-Dienste enthält, jeder mit einem eigenen Vertrag. Alles funktioniert gut. Die Dienstkonfiguration in der app.config für den Dienst sieht wie folgt aus:Können mehrere WCF-Dienste eine gemeinsame BaseAddress teilen?
<services>
<service behaviorConfiguration="WcfService.AlyzaServiceBehavior"
name="Sam.Alyza.WcfService.ServiceWebsites">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceWebsites">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/Websites/" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Sam.Alyza.WcfService.LogReaderServiceBehavior"
name="Sam.Alyza.WcfService.ServiceLogReader">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceLogReader">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/LogReader/" />
</baseAddresses>
</host>
</service>
<service behaviorConfiguration="Sam.Alyza.WcfService.ServiceSystemverwaltungBehavior"
name="Sam.Alyza.WcfService.ServiceSystemverwaltung">
<endpoint address="" binding="netTcpBinding" contract="Sam.Alyza.WcfInterface.IServiceSystemverwaltung">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8731/Design_Time_Addresses/SamAlyza/Systemverwaltung/" />
</baseAddresses>
</host>
</service>
[...]
</services>
Da ich ein größeres Projekt im Sinn haben, mit mehr Verträge, ich möchte einen Weg haben, um die Baseaddress zu teilen zwischen die verschiedenen Serviceverträge.
Wenn dies nur ein Dienst mit verschiedenen Verträgen und Endpunkten wäre, könnte ich eine allgemeine Basisadresse festlegen, aber wie lege ich eine gemeinsame Basisadresse für mehrere Dienste fest?
Natürlich würde ich etwas ähnliches für den Kunden brauchen.
Schöne Idee! Das einzige Problem ist: Die partielle ServiceAll-Klasse wird groß sein, mit vielen und vielen Methoden. – Sam
Das stimmt. Im Moment sehe ich keine andere Lösung, als auf Code-basierte Instanziierung umzusteigen. – Lars