OperationContractAttribute Osztály

Definíció

Azt jelzi, hogy egy metódus egy szolgáltatásszerződés részét képező műveletet határoz meg egy Windows kommunikációs alaprendszer (WCF) alkalmazásban.

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Öröklődés
OperationContractAttribute
Attribútumok

Példák

Az alábbi példakód egy egyszerű szolgáltatási szerződést mutat be egy művelettel.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
      return "The service greets you: " + msg;
  }

  #endregion
  }
}
Imports System.Net.Security
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="Microsoft.WCF.Documentation")> _
  Public Interface ISampleService
    ' This operation specifies an explicit protection level requirement.
    <OperationContract(ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Called with: {0}", msg)
       Return "The service greets you: " & msg
  End Function

  #End Region
  End Class
End Namespace

Az alábbi példa egy olyan szolgáltatás, amely egy implicit szolgáltatási szerződést valósít meg, amely három műveletet határoz meg. A műveletek közül kettő kétirányú művelet, amely az alapul szolgáló válaszüzeneteket adja vissza a hívónak, függetlenül attól, hogy mi a visszatérési érték. A harmadik művelet fogad egy hívást, egy mögöttes bejövő üzenetet, de nem ad vissza mögöttes válaszüzenetet.

[ServiceContractAttribute]
public class OneAndTwoWay
{
  // The client waits until a response message appears.
  [OperationContractAttribute]
  public int MethodOne (int x, out int y)
  {
    y = 34;
    return 0;
  }

  // The client waits until an empty response message appears.
  [OperationContractAttribute]
  public void MethodTwo (int x)
  {
    return;
  }

  // The client returns as soon as an outbound message
  // is dispatched to the service; no response
  // message is generated or sent from the service.
  [OperationContractAttribute(IsOneWay=true)]
  public void MethodThree (int x)
  {
    return;
  }
}

Megjegyzések

Alkalmazza a OperationContractAttribute metódust arra, hogy jelezze, hogy a metódus egy szolgáltatási szerződés részeként valósít meg egy szolgáltatási műveletet (amelyet egy ServiceContractAttribute attribútum határoz meg).

A tulajdonságok segítségével OperationContractAttribute szabályozhatja a művelet szerkezetét és a metaadatokban kifejezett értékeket:

  • A Action tulajdonság azt a műveletet adja meg, amely egyedileg azonosítja ezt a műveletet. A WCF a műveletük alapján küld üzeneteket a metódusok számára.

  • A AsyncPattern tulajdonság azt jelzi, hogy a művelet implementálva van, vagy aszinkron módon meghívható egy Begin/End metóduspár használatával.

  • A HasProtectionLevel tulajdonság azt jelzi, hogy a ProtectionLevel tulajdonság explicit módon lett-e beállítva.

  • A IsOneWay tulajdonság azt jelzi, hogy a művelet csak egyetlen bemeneti üzenetből áll. A művelethez nincs társított kimeneti üzenet.

  • A IsInitiating tulajdonság azt határozza meg, hogy ez a művelet lehet-e a munkamenet kezdeti művelete.

  • A IsTerminating tulajdonság azt határozza meg, hogy a WCF megkísérli-e megszakítani az aktuális munkamenetet a művelet befejezése után.

  • A ProtectionLevel tulajdonság azt az üzenetszintű biztonságot adja meg, amelyet egy művelet futásidőben igényel.

  • A ReplyAction tulajdonság a művelet válaszüzenetének műveletét adja meg.

Az OperationContractAttribute attribútum azt deklarálja, hogy a metódus egy szolgáltatásszerződésben szereplő művelet. Csak azokkal OperationContractAttribute a metódusokkal társított metódusok vannak közzétéve szolgáltatásműveletként. Egy olyan szolgáltatási szerződés, amely nem rendelkezik a műveletekkel megjelölt metódusokkal OperationContractAttribute .

A AsyncPattern tulajdonság azt jelzi, hogy a Begin< és>End< metóduspár > egyetlen, aszinkron módon implementált műveletet alkot (akár az ügyfélen, akár a szolgáltatáson). A szolgáltatás aszinkron módon történő implementálásának képessége a szolgáltatás implementálásának részlete, és nem jelenik meg metaadatokban (például Web Services Description Language (WSDL)).

Hasonlóképpen az ügyfelek dönthetnek úgy, hogy a szolgáltatásmetódus implementálásától függetlenül aszinkron módon meghívják a műveleteket. A szolgáltatásműveletek aszinkron meghívása az ügyfélben akkor ajánlott, ha egy szolgáltatásmetódus némi időt vesz igénybe, de az adatokat közvetlenül az ügyfélnek kell visszaadnia. További részletekért lásd: AsyncPattern.

A IsOneWay tulajdonság azt jelzi, hogy egy metódus egyáltalán nem ad vissza értéket, beleértve egy üres mögöttes válaszüzenetet sem. Ez a módszer az értesítések és az eseménystílusú kommunikáció szempontjából hasznos. Az ilyen típusú metódusok nem küldhetnek válaszüzenetet, ezért a metódus deklarációjának vissza kell térnie void.

Important

Ha programozott módon beolvassa az adattárat ebben az attribútumban, használja az osztályt tükröződés ContractDescription helyett.

Note

Ha a IsOneWay tulajdonság falseértéke az , (alapértelmezett), akkor a visszaadott void metódusok is kétirányú metódusok a mögöttes üzenet szintjén. Ebben az esetben az infrastruktúra létrehoz és küld egy üres üzenetet, amely jelzi a hívónak, hogy a metódus vissza lett adva. Ezzel a módszerrel az alkalmazás és az infrastruktúra hibainformációkat (például SOAP-hibát) küldhet vissza az ügyfélnek. IsOneWay A válaszüzenet létrehozását és elküldését csak a beállítással true lehet megakadályozni. További információ: One-Way Services.

A Action tulajdonságok és ReplyAction tulajdonságok nem csak a SOAP-üzenetek alapértelmezett műveletének módosítására, hanem a felismeretlen üzenetek kezelőinek létrehozására, illetve a közvetlen üzenetprogramozási műveletek hozzáadásának letiltására is használhatók. A tulajdonság használatával megakadályozhatja, hogy az IsInitiating ügyfelek más műveletek előtt meghívjanak egy adott szolgáltatásműveletet. A tulajdonság használatával a IsTerminating WCF bezárja a csatornát, miután az ügyfelek meghívnak egy adott szolgáltatásműveletet. További információ: Munkamenetek használata.

A ProtectionLevel tulajdonsággal megadhatja a műveleti szerződésben, hogy a műveleti üzenetek aláírtak, titkosítottak vagy aláírtak és titkosítottak-e. Ha egy kötés nem tudja biztosítani a szerződés által megkövetelt biztonsági szintet, a rendszer futásidőben kivételt vet ki. További információkért lásd ProtectionLevel a védelmi szintet, és ismerje meg a védelmi szintet.

Konstruktorok

Name Description
OperationContractAttribute()

Inicializálja a OperationContractAttribute osztály új példányát.

Tulajdonságok

Name Description
Action

Lekéri vagy beállítja a kérésüzenet WS-címzési műveletét.

AsyncPattern

Azt jelzi, hogy a művelet aszinkron módon van implementálva egy Begin< és >End<> metóduspár használatával egy szolgáltatási szerződésben.

HasProtectionLevel

Olyan értéket kap, amely jelzi, hogy a művelet üzeneteinek titkosítva, aláírva vagy mindkettővel kell-e rendelkeznie.

IsInitiating

Lekéri vagy beállít egy értéket, amely jelzi, hogy a metódus végrehajt-e egy olyan műveletet, amely elindíthat egy munkamenetet a kiszolgálón (ha létezik ilyen munkamenet).

IsOneWay

Lekéri vagy beállít egy értéket, amely jelzi, hogy egy művelet válaszüzenetet ad-e vissza.

IsTerminating

Lekéri vagy beállít egy értéket, amely jelzi, hogy a szolgáltatásművelet miatt a kiszolgáló bezárja-e a munkamenetet a válaszüzenet elküldése után, ha van ilyen.

Name

Lekéri vagy beállítja a művelet nevét.

ProtectionLevel

Lekéri vagy beállít egy értéket, amely meghatározza, hogy egy művelet üzeneteit titkosítva, aláírva vagy mindkettővel kell-e ellátni.

ReplyAction

Lekéri vagy beállítja a SOAP művelet értékét a művelet válaszüzenetéhez.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)

A következőre érvényes: