Delen via


Contracten

In deze sectie wordt beschreven hoe u WCF-contracten (Windows Communication Foundation) definieert en implementeert. Een servicecontract geeft aan wat een eindpunt communiceert met de buitenwereld. Op een concreter niveau is het een verklaring over een reeks specifieke berichten die zijn ingedeeld in basispatronen voor het uitwisselen van berichten (MEP's), zoals aanvraag/antwoord, eenrichtings- en duplexberichten. Als een servicecontract een logisch gerelateerde set berichtenuitwisseling is, is een servicebewerking één berichtuitwisseling. Een Hello bewerking moet bijvoorbeeld duidelijk één bericht accepteren (zodat de beller de begroeting kan aankondigen) en een bericht wel of niet retourneert (afhankelijk van de beleefdheid van de bewerking).

Zie Basisconcepten van Windows Communication Foundation voor meer informatie over contracten en andere kernconcepten van WCF. Dit onderwerp is gericht op het begrijpen van servicecontracten. Zie wcF-clientoverzicht voor meer informatie over het bouwen van clients die servicecontracten gebruiken om verbinding te maken met services. Zie Clients voor meer informatie over clientkanalen, de clientarchitectuur en andere clientproblemen.

Overzicht

Dit onderwerp biedt een conceptuele oriëntatie op hoog niveau voor het ontwerpen en implementeren van WCF-services. Subonderwerpen bieden gedetailleerdere informatie over de specifieke kenmerken van het ontwerpen en implementeren. Voordat u uw WCF-toepassing ontwerpt en implementeert, wordt u aangeraden het volgende te doen:

  • Begrijpen wat een servicecontract is, hoe het werkt en hoe u er een kunt maken.

  • Begrijp dat contracten minimale vereisten voor runtimeconfiguratie of de hostingomgeving mogelijk niet ondersteunen.

Servicecontracten

Een servicecontract is een instructie die informatie biedt over:

  • De groepering van bewerkingen in een service.

  • De handtekening van de bewerkingen in termen van berichten die worden uitgewisseld.

  • De gegevenstypen van deze berichten.

  • De locatie van de bewerkingen.

  • De specifieke protocollen en serialisatie-indelingen die worden gebruikt om succesvolle communicatie met de service te ondersteunen.

Een inkoopordercontract kan bijvoorbeeld een CreateOrder bewerking hebben die een invoer van ordergegevenstypen accepteert en geslaagde of mislukte informatie retourneert, inclusief een order-id. Het kan ook een GetOrderStatus bewerking hebben die een order-id accepteert en informatie over de orderstatus retourneert. Een servicecontract van dit type geeft het volgende op:

  • Dat het inkoopordercontract bestond uit CreateOrder en GetOrderStatus bewerkingen.

  • Dat de bewerkingen invoerberichten en uitvoerberichten hebben opgegeven.

  • De gegevens die deze berichten kunnen bevatten.

  • Categorische instructies over de communicatie-infrastructuur die nodig is om de berichten te verwerken. Deze details omvatten bijvoorbeeld of en welke vormen van beveiliging nodig zijn om een geslaagde communicatie tot stand te brengen.

Om dit soort informatie over te brengen naar toepassingen op andere platforms (inclusief niet-Microsoft-platforms), worden XML-servicecontracten openbaar uitgedrukt in standaard-XML-indelingen, zoals WSDL (Web Services Description Language) en XML-schema (XSD) onder andere. Ontwikkelaars voor veel platforms kunnen deze informatie over openbare contracten gebruiken om toepassingen te maken die kunnen communiceren met de service, zowel omdat ze de taal van de specificatie begrijpen en omdat deze talen zijn ontworpen om interoperation mogelijk te maken door de openbare formulieren, indelingen en protocollen te beschrijven die de service ondersteunt. Zie Metagegevens voor meer informatie over hoe WCF dit soort informatie verwerkt.

Contracten kunnen echter op veel manieren worden uitgedrukt en hoewel WSDL en XSD uitstekende talen zijn om services op een toegankelijke manier te beschrijven, zijn ze moeilijk te gebruiken talen, in elk geval zijn het slechts beschrijvingen van een service, geen implementaties van servicecontracten. WCF-toepassingen maken daarom gebruik van beheerde kenmerken, interfaces en klassen om de structuur van en het implementeren van een service te definiëren.

Het resulterende contract dat in beheerde typen is gedefinieerd, kan worden geconverteerd (ook wel geëxporteerd) als metagegevens (WSDL en XSD), indien nodig door clients of andere service-implementeerfuncties, met name op andere platforms. Het resultaat is een eenvoudig programmeermodel dat kan worden beschreven met behulp van openbare metagegevens voor elke clienttoepassing. De details van de onderliggende SOAP-berichten, zoals transport- en beveiligingsgerelateerde informatie, kunnen worden overgelaten aan WCF, waarmee automatisch de benodigde conversies naar en van het servicecontracttypesysteem naar het XML-typesysteem worden uitgevoerd.

Zie Servicecontracten ontwerpen voor meer informatie over het ontwerpen van contracten. Zie Servicecontracten implementeren voor meer informatie over het implementeren van contracten.

Daarnaast biedt WCF ook de mogelijkheid om servicecontracten volledig op berichtniveau te ontwikkelen. Zie Message Contracts gebruiken voor meer informatie over het ontwikkelen van servicecontracten op berichtniveau. Zie Interoperabiliteit met POX-toepassingen voor meer informatie over het ontwikkelen van services in niet-SOAP XML.

Inzicht in de hiërarchie van vereisten

Een servicecontract groept de bewerkingen; geeft de MEP, berichttypen en gegevenstypen die berichten bevatten; en geeft categorieën van runtimegedrag aan die een implementatie moet ondersteunen van het contract (het kan bijvoorbeeld vereisen dat berichten worden versleuteld en ondertekend). Het servicecontract zelf geeft echter niet precies aan hoe aan deze vereisten wordt voldaan, alleen dat ze moeten zijn. Welk type versleuteling of hoe een bericht wordt geregistreerd, is de implementatie en configuratie van een compatibele service.

Let op de manier waarop het contract bepaalde dingen van de implementatie van het servicecontract en de runtimeconfiguratie vereist om gedrag toe te voegen. Aan de set vereisten waaraan moet worden voldaan om een service beschikbaar te maken voor gebruik, is gebaseerd op de voorgaande set vereisten. Als een contract vereisten voor de implementatie maakt, kan een implementatie nog meer configuraties en bindingen vereisen waarmee de service kan worden uitgevoerd. Ten slotte moet de hosttoepassing ook eventuele vereisten ondersteunen die door de serviceconfiguratie en bindingen worden toegevoegd.

Dit proces voor additieve vereisten is belangrijk om in gedachten te houden bij het ontwerpen, implementeren, configureren en hosten van uw WCF-servicetoepassing (Windows Communication Foundation). Het contract kan bijvoorbeeld opgeven dat het een sessie moet ondersteunen. Zo ja, dan moet u de binding configureren ter ondersteuning van die contractuele vereiste, anders werkt de service-implementatie niet. Of als voor uw service geïntegreerde Windows-verificatie is vereist en deze wordt gehost in Internet Information Services (IIS), moet voor de webtoepassing waarin de service zich bevindt geïntegreerde Windows-verificatie zijn ingeschakeld en anonieme ondersteuning is uitgeschakeld. Zie Hosting voor meer informatie over de functies en impact van de verschillende typen servicehosttoepassingen.

Zie ook