von Damir Dobric
WCF-Entwickler dürften sich einig sein, dass die WCF-Konfiguration komplex und nicht besonders intuitiv ist. Ohne falsche Hoffnungen zu wecken, daran wird sich in der WCF-Welt in Zukunft nichts Grundlegendes ändern. Es gibt allerdings Neuerungen, die zu Vereinfachungen führen werden und genau um diese Neuerungen soll es in diesem Artikel gehen.
Listing 1 zeigt einen Service mit dem Namen „Service1“. Es enthält einen
Service- und einen
Data-Contract. Die dazugehörige WCF 3.5-Konfiguration ist in Listing 2 zu sehen. Die Konfiguration enthält ein ServiceElement mit einem Endpoint. Das ServiceElement referenziert ein sog.
ServiceBehavior-Element, das das Verhalten des Service festlegt. Darüber hinaus gibt es ein Pflicht-Element mit dem Namen Endpoint, das eine Adresse, ein Binding und einen Contract (manchmal ABC genannt) festlegt. Das ist beinahe die einfachste Konfiguration, die es bei WCF 3.5 geben kann.
Listing 1: Sample Service- und Data-Contracts
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Runtime.Serialization;
usingSystem.ServiceModel;
usingSystem.Text;
namespaceSimpleConfigSample
{
[
ServiceContract]
public interface IService1
{
[
OperationContract]
string GetData(int value);
[
OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
[
DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[
DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[
DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
Listing 2: WCF 3.5 Beispiel Konfiguration
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<system.web>
<compilationdebug="true"/>
</system.web>
<system.serviceModel>
<services>
<servicename="WcfServiceLibrary1.Service1"
behaviorConfiguration="WcfServiceLibrary1.Service1Behavior">
<host>
<baseAddresses>
<addbaseAddress= "http://localhost:8080/Service1/"/>
</baseAddresses>
</host>
<endpointaddress=""binding="wsHttpBinding" contract="WcfServiceLibrary1.IService1">
<!--
<identity>
<dnsvalue="localhost"/>
</identity>
</endpoint>
<endpointaddress="mex"binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<serviceBehaviors>
<behaviorname="WcfServiceLibrary1.Service1Behavior">
<serviceMetadatahttpGetEnabled="True"/>
<serviceDebugincludeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
| Seite 1 von 9 | Nächste Seite » |

