OperationContractAttribute クラス

定義

メソッドが、Windows Communication Foundation (WCF) アプリケーションのサービス コントラクトの一部である操作を定義することを示します。Indicates that a method defines an operation that is part of a service contract in a Windows Communication Foundation (WCF) application.

public ref class OperationContractAttribute sealed : Attribute
public sealed class OperationContractAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
type OperationContractAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
継承
OperationContractAttribute
属性

次のコード例は、1 つの操作を持つ単純なサービスを示しています。The following code example shows a simple service contract with one operation.

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

次の例は、3 つの操作を指定する暗黙のサービス コントラクトを実装するサービスです。The following example is a service that implements an implicit service contract that specifies three operations. 操作のうちの 2 つは双方向操作であり、戻り値の内容に関係なく、基になる応答メッセージを呼び出し元に返します。Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. 3 つ目の操作は、呼び出しと基になる受信メッセージを受信しますが、基になる応答メッセージは返しません。The third operation receives a call, an underlying inbound message, but returns no underlying response message.

[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;  
  }  
}  

注釈

OperationContractAttribute をメソッドに適用して、そのメソッドが、サービス操作を (ServiceContractAttribute 属性によって指定される) サービス コントラクトの一部として実装することを示します。Apply the OperationContractAttribute to a method to indicate that the method implements a service operation as part of a service contract (specified by a ServiceContractAttribute attribute).

OperationContractAttribute プロパティを使用して、操作の構造とメタデータ内に表現される値を制御します。Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • Action プロパティは、この操作を一意に識別するアクションを指定します。The Action property specifies the action that uniquely identifies this operation. WCF は、アクションに基づいて要求メッセージをメソッドにディスパッチします。WCF dispatches request messages to methods based on their action.

  • AsyncPattern プロパティは、この操作が、Begin/End メソッド ペアを使用して実装される、または非同期呼び出しが可能であることを示します。The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • HasProtectionLevel プロパティは、ProtectionLevel プロパティが明示的に設定されているかどうかを示します。The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • IsOneWay プロパティは、この操作が、単一の入力メッセージのみで構成されることを示します。The IsOneWay property indicates that the operation only consists of a single input message. この操作には、関連付けられた出力メッセージがありません。The operation has no associated output message.

  • IsInitiating プロパティは、この操作が、セッションの最初の操作になることができるかどうかを指定します。The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • プロパティは、 IsTerminating 操作の完了後に、WCF が現在のセッションを終了するかどうかを指定します。The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • ProtectionLevel プロパティは、操作が実行時に必要とするメッセージ レベルのセキュリティを指定します。The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • ReplyAction プロパティは、この操作に対する応答メッセージのアクションを指定します。The ReplyAction property specifies the action of the reply message for the operation.

OperationContractAttribute 属性は、メソッドがサービス コントラクト内の操作であることを宣言します。The OperationContractAttribute attribute declares that a method is an operation in a service contract. OperationContractAttribute 属性を設定したメソッドだけが、サービス操作として公開されます。Only methods attributed with the OperationContractAttribute are exposed as service operations. OperationContractAttribute でマークされたメソッドを持たないサービス コントラクトには、公開される操作がありません。A service contract without any methods marked with the OperationContractAttribute exposes no operations.

プロパティは、 AsyncPattern メソッドとメソッドのペアが、 Begin <methodName> End <methodName> 非同期的に実装された単一の操作 (クライアントまたはサービスであるかどうか) を形成することを示します。The AsyncPattern property indicates that a pair of Begin<methodName> and End<methodName> methods form a single operation implemented asynchronously (whether on the client or the service). サービスが操作を非同期に実装する能力はサービス実装の詳細であり、メタデータ (Web サービス記述言語 (WSDL) など) には公開されません。The ability of a service to implement operations asynchronously is a service implementation detail and is not exposed in metadata (such as Web Services Description Language (WSDL)).

同様に、クライアントは、サービス メソッドの実装方法とは無関係に、操作を非同期で呼び出すことを選択できます。Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. クライアント内でのサービス操作の非同期での呼び出しは、サービス メソッドの実行に多少の時間がかかるが、情報をクライアントに直接返す必要がある場合に使用することをお勧めします。Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. 詳細については、「AsyncPattern」を参照してください。For details, see AsyncPattern.

IsOneWay プロパティは、メソッドが、基になる空の応答メッセージも含めてまったく値を返さないことを示します。The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. この種のメソッドは、通知やイベント スタイルの通信に便利です。This type of method is useful for notifications or event-style communication. この種のメソッドは応答メッセージを返すことができないため、メソッドの宣言では void を返す必要があります。Methods of this kind cannot return a reply message so the method's declaration must return void.

重要

プログラムによってこの属性の情報ストアを取得する場合は、リフレクションではなくクラスを使用し ContractDescription ます。When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

注意

IsOneWay プロパティが false (既定) に設定されている場合は、void を返すメソッドであっても、基になるメッセージ レベルでは双方向メソッドとなります。If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. この場合、インフラストラクチャは、空のメッセージを作成して送信することで、メソッドが戻ったことを呼び出し元に示します。In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. このアプローチを使用して、アプリケーションとインフラストラクチャは、エラー情報 (SOAP エラーなど) をクライアントに返信できます。Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. 応答メッセージの作成とディスパッチを回避する唯一の方法は、IsOneWaytrue に設定することです。Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. 詳細については、「 一方向サービス」を参照してください。For more information, see One-Way Services.

Action プロパティと ReplyAction プロパティを使用すると、SOAP メッセージの既定のアクションを変更するだけではなく、認識されないメッセージ用のハンドラーを作成したり、ダイレクト メッセージ プログラミングでのアクションの追加を無効にしたりできます。The Action and ReplyAction properties can be used not only to modify the default action of SOAP messages but also to create handlers for unrecognized messages or to disable adding actions for direct message programming. クライアントが他の操作の前に特定のサービス操作を呼び出すことができないようにするには、IsInitiating プロパティを使用します。Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. クライアントが IsTerminating 特定のサービス操作を呼び出した後に、WCF がチャネルを閉じるようにするには、プロパティを使用します。Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. 詳細については、「 セッションの使用」を参照してください。For more information, see Using Sessions.

ProtectionLevel プロパティを使用して、操作メッセージが署名、暗号化、または署名と暗号化の対象になるかどうかを操作コントラクトに対して指定できます。The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. コントラクトによって要求されるセキュリティ レベルがバインドで提供できない場合は、実行時に例外がスローされます。If a binding cannot provide the security level required by the contract, an exception is thrown at run time. 詳細については、「」 ProtectionLevel および「 保護レベルについて」を参照してください。For more information, see ProtectionLevel and Understanding Protection Level.

コンストラクター

OperationContractAttribute()

OperationContractAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the OperationContractAttribute class.

プロパティ

Action

要求メッセージの WS-Addressing アクションを取得または設定します。Gets or sets the WS-Addressing action of the request message.

AsyncPattern

Begin < methodName > End < methodName > サービスコントラクト内の methodname メソッドと methodname メソッドのペアを使用して、操作が非同期的に実装されることを示します。Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel

この操作のメッセージの暗号化、署名、または両方が必要かどうかを示す値を取得または設定します。Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating

メソッドが (セッションが存在する場合に) サーバー上でセッションを開始できる操作を実装するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server (if such a session exists).

IsOneWay

操作が応答メッセージを返すかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating

応答メッセージが存在する場合に、そのメッセージの送信後にセッションを終了するようにサービス操作がサーバーに指示するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent.

Name

操作の名前を取得します。値の設定も可能です。Gets or sets the name of the operation.

ProtectionLevel

操作のメッセージの暗号化、署名、または両方が必要かどうかを示す値を取得または設定します。Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction

操作の応答メッセージの SOAP アクションの値を取得または設定します。Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)

メソッド

Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(継承元 Attribute)
Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

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

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)

適用対象