Service Contract
Der Service Contract stellt eine funktionelle Beschreibung des zu implementierenden Webservices in Form eines Interfaces dar. Der Contract enthält die Deklarationen der Methoden, die der Webservice implementieren soll.
Name
Name des Service Contracts, standardmäßig beginnend mit einem großen I (Interface). Auch im IntelliSense ist der Service Contract unter diesem Namen zu finden.
Type
Es gibt zwei Arten von Service Contracts:
Userdefined Contract
Ein vom Programmierer erstellter Service Contract. Dieser Service Contract enthält ausschließlich diejenigen Methoden, die auf der Registerkarte Operations angelegt wurden.
External Contract
Wenn ein Service Contract aus einer externen Assembly implementiert wird, der an den Framework Studio Service Contract gebunden wird, ist dieser als External Contract gekennzeichnet.
Registerkarte General
Service Contract Attributes
In dieser Textbox können zusätzliche Attribute für den WCF Service Contract definiert werden. Das Attribut [Service Contract] wird automatisch hinzugefügt und muss nicht manuell angegeben werden.
Binden eines externen Service Contracts
Es besteht die Möglichkeit, in externen Assemblies untergebrachte WCF Service Contracts direkt in Framework Studio einzubinden. Hierzu kann über den Button Bind Contract eine .NET-Dll importiert werden.
Importieren eines Service Contracts aus einer Assembly:
Mit dem Button Add Assembly kann nach einer gewünschten Assembly auf dem System gesucht werden. Nach dem Import wird die Assembly automatisch nach Interfaces mit dem Attribut [Service Contract] durchsucht und diese in der Combobox Choose Contract angezeigt.
Die importierte Assembly wird als Ressource in Framework Studio eingebunden und bei einem Anwendungsstart oder Publish in das /bin-Verzeichnis des Brokers herausgeschrieben.
Die Verbindung zum WCF Service Contract kann über einen Klick auf den Button Unbind Contract wieder gelöscht warden. Dann fungiert der Service Contract wieder als Userdefined Contract und es können manuell Methoden deklariert werden.
Im Textfeld External Contract Information werden alle verfügbaren Methoden des WCF Service Contracts aus der externen Assembly angezeigt.
Solange ein externer WCF Service Contract gebunden ist, steht die Registerkarte Operations nicht zur Verfügung.
Registerkarte Operations
Hier werden die Methoden deklariert, welche der Webservice später implementieren soll. Mit Rechtsklick in das Grid -> New -> Operation wird eine neue Methode angelegt. Anschließend werden in der Textbox Declaration Rückgabewert, Methodenname und optional Übergabeparameter definiert. Der Access Level der Methode wird automatisch auf public gesetzt.
In der Textbox Attributes können zusätzliche Attribute für die Operation definiert werden. Das Attribut [OperationContract] wird automatisch hinzugefügt und muss nicht manuell angegeben werden.
In der Liste Fault Contracts können zur derzeit ausgewählten Operation Fault Contracts hinzugefügt werden, die später im Service als Type für eine FaultException<T>
verwendet werden können. Mehr Information hierzu im Kapitel Fault Contracts.
Generieren eines Services aus einem Service Contract
Im Menüpunkt Edit befindet sich der Eintrag New service implementing this contract. Damit wird auf Basis des ausgewählten Service Contracts ein Service-Element (Service) im selben Namespace generiert, welches den Service Contract implementiert. Dies erspart dem Programmierer das Anlegen eines Service-Elements und das manuelle Einbinden des zugehörigen Service Contracts zum Service-Element.
Customizen von Service Contracts
Service Contracts können in Framework Studio nur gecustomized werden. Es besteht die Möglichkeit, den Service Contract um Methoden zu erweitern. Das Ableiten von Service Contracts ist nicht möglich.
Methoden aus der Basis werden ausgegraut dargestellt. Werden in der Ableitung oder Customization Attribute am Service Contract oder an dessen Methoden definiert, werden diese als zusätzliche Attribute in den Code generiert. Attribute aus der Basis werden demnach NICHT überschrieben.