OperationContractAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menunjukkan bahwa metode mendefinisikan operasi yang merupakan bagian dari kontrak layanan dalam aplikasi Windows Communication Foundation (WCF).
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
- Warisan
- Atribut
Contoh
Contoh kode berikut menunjukkan kontrak layanan sederhana dengan satu operasi.
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
Contoh berikut adalah layanan yang menerapkan kontrak layanan implisit yang menentukan tiga operasi. Dua operasi adalah operasi dua arah, yang mengembalikan pesan respons yang mendasar kepada pemanggil tidak peduli apa nilai pengembaliannya. Operasi ketiga menerima panggilan, pesan masuk yang mendasar, tetapi tidak mengembalikan pesan respons yang mendasar.
[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;
}
}
Keterangan
OperationContractAttribute Terapkan ke metode untuk menunjukkan bahwa metode menerapkan operasi layanan sebagai bagian dari kontrak layanan (ditentukan oleh ServiceContractAttribute atribut).
OperationContractAttribute Gunakan properti untuk mengontrol struktur operasi dan nilai yang dinyatakan dalam metadata:
Properti Action menentukan tindakan yang mengidentifikasi operasi ini secara unik. WCF mengirimkan pesan permintaan ke metode berdasarkan tindakan mereka.
Properti AsyncPattern menunjukkan bahwa operasi diimplementasikan atau dapat dipanggil secara asinkron menggunakan pasangan metode Begin/End.
Properti HasProtectionLevel menunjukkan apakah ProtectionLevel properti telah diatur secara eksplisit.
Properti IsOneWay menunjukkan bahwa operasi hanya terdiri dari satu pesan input. Operasi tidak memiliki pesan output terkait.
Properti IsInitiating menentukan apakah operasi ini dapat menjadi operasi awal dalam sesi.
Properti IsTerminating menentukan apakah WCF mencoba mengakhiri sesi saat ini setelah operasi selesai.
Properti ProtectionLevel menentukan keamanan tingkat pesan yang diperlukan operasi pada waktu proses.
Properti ReplyAction menentukan tindakan pesan balasan untuk operasi.
Atribut OperationContractAttribute menyatakan bahwa metode adalah operasi dalam kontrak layanan. Hanya metode yang dikaitkan dengan OperationContractAttribute yang diekspos sebagai operasi layanan. Kontrak layanan tanpa metode apa pun yang ditandai dengan OperationContractAttribute tidak mengekspos operasi.
Properti AsyncPattern menunjukkan bahwa sepasang<Begin metode methodName> dan End<methodName> membentuk satu operasi yang diimplementasikan secara asinkron (baik pada klien atau layanan). Kemampuan layanan untuk menerapkan operasi secara asinkron adalah detail implementasi layanan dan tidak terekspos dalam metadata (seperti Web Services Description Language (WSDL)).
Demikian pula, klien dapat memilih untuk memanggil operasi secara asinkron terlepas dari bagaimana metode layanan diterapkan. Memanggil operasi layanan secara asinkron di klien disarankan ketika metode layanan membutuhkan waktu tetapi harus mengembalikan informasi langsung ke klien. Untuk detailnya, lihat AsyncPattern.
Properti IsOneWay menunjukkan bahwa metode tidak mengembalikan nilai sama sekali, termasuk pesan respons yang mendasar kosong. Jenis metode ini berguna untuk pemberitahuan atau komunikasi gaya peristiwa. Metode semacam ini tidak dapat mengembalikan pesan balasan sehingga deklarasi metode harus mengembalikan void.
Penting
Saat mengambil penyimpanan informasi secara terprogram dalam atribut ini, gunakan ContractDescription kelas alih-alih refleksi.
Nota
IsOneWay Jika properti diatur ke false, (default), bahkan metode yang mengembalikan void adalah metode dua arah pada tingkat pesan yang mendasar. Dalam hal ini, infrastruktur membuat dan mengirim pesan kosong untuk menunjukkan kepada pemanggil bahwa metode telah dikembalikan. Menggunakan pendekatan ini memungkinkan aplikasi dan infrastruktur untuk mengirim informasi kesalahan (seperti kesalahan SOAP) kembali ke klien. Pengaturan IsOneWay ke true adalah satu-satunya cara untuk mencegah pembuatan dan pengiriman pesan balasan. Untuk informasi selengkapnya, lihat LayananOne-Way.
Properti Action dan ReplyAction dapat digunakan tidak hanya untuk memodifikasi tindakan default pesan SOAP tetapi juga untuk membuat handler untuk pesan yang tidak dikenali atau menonaktifkan penambahan tindakan untuk pemrograman pesan langsung. IsInitiating Gunakan properti untuk mencegah klien memanggil operasi layanan tertentu sebelum operasi lain. IsTerminating Gunakan properti agar WCF menutup saluran setelah klien memanggil operasi layanan tertentu. Untuk informasi selengkapnya, lihat Menggunakan Sesi.
Properti ProtectionLevel memungkinkan Anda menentukan pada kontrak operasi apakah pesan operasi ditandatangani, dienkripsi, atau ditandatangani dan dienkripsi. Jika pengikatan tidak dapat memberikan tingkat keamanan yang diperlukan oleh kontrak, pengecualian akan dilemparkan pada waktu proses. Untuk informasi selengkapnya, lihat ProtectionLevel dan Memahami Tingkat Perlindungan.
Konstruktor
| Nama | Deskripsi |
|---|---|
| OperationContractAttribute() |
Menginisialisasi instans baru dari kelas OperationContractAttribute. |
Properti
| Nama | Deskripsi |
|---|---|
| Action |
Mendapatkan atau mengatur tindakan WS-Addressing dalam pesan permintaan. |
| AsyncPattern |
Menunjukkan bahwa operasi diimplementasikan secara asinkron menggunakan |
| HasProtectionLevel |
Mendapatkan nilai yang menunjukkan apakah pesan untuk operasi ini harus dienkripsi, ditandatangani, atau keduanya. |
| IsInitiating |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah metode menerapkan operasi yang dapat memulai sesi di server (jika sesi seperti itu ada). |
| IsOneWay |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah operasi mengembalikan pesan balasan. |
| IsTerminating |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah operasi layanan menyebabkan server menutup sesi setelah pesan balasan, jika ada, dikirim. |
| Name |
Mendapatkan atau mengatur nama operasi. |
| ProtectionLevel |
Mendapatkan atau menetapkan nilai yang menentukan apakah pesan operasi harus dienkripsi, ditandatangani, atau keduanya. |
| ReplyAction |
Mendapatkan atau menetapkan nilai tindakan SOAP untuk pesan balasan operasi. |
| TypeId |
Ketika diimplementasikan dalam kelas turunan, mendapatkan pengidentifikasi unik untuk Attributeini. (Diperoleh dari Attribute) |
Metode
| Nama | Deskripsi |
|---|---|
| Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| IsDefaultAttribute() |
Ketika ditimpa dalam kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
| Match(Object) |
Saat ditimpa dalam kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |