Bagikan melalui


Gambaran umum Korelasi

Korelasi adalah mekanisme untuk saling mengaitkan pesan layanan alur kerja atau ke status instans aplikasi, seperti balasan ke permintaan awal, atau ID pesanan tertentu ke status alur kerja pemrosesan pesanan yang bertahan. Topik ini menjelaskan ringkasan korelasi. Topik lain di bagian ini berisi informasi tambahan untuk setiap jenis korelasi.

Jenis Korelasi

Korelasi bisa berbasis protokol atau berbasis konten. Korelasi berbasis protokol menggunakan data yang disediakan oleh infrastruktur pengiriman pesan untuk menyediakan pemetaan antar pesan. Pesan yang berkorelasi menggunakan korelasi berbasis protokol saling dikaitkan menggunakan objek dalam memori, seperti RequestContext, atau oleh token yang disediakan oleh protokol transportasi. Korelasi berbasis konten saling mengaitkan pesan menggunakan data yang ditentukan aplikasi. Pesan yang berkorelasi menggunakan korelasi berbasis konten saling dikaitkan oleh beberapa data yang ditentukan aplikasi dalam pesan, seperti nomor pelanggan.

Aktivitas yang terlibat dalam korelasi menggunakan CorrelationHandle untuk mengikat aktivitas olahpesan bersama-sama. Misalnya, Send yang digunakan untuk memanggil layanan dan Receive berikutnya yang digunakan untuk menerima panggilan balik dari layanan, berbagi CorrelationHandle yang sama. Pola dasar ini digunakan apakah korelasi tersebut berbasis konten atau berbasis protokol. Handel korelasi dapat diatur secara eksplisit pada setiap aktivitas atau aktivitas dapat dimuat dalam aktivitas CorrelationScope. Aktivitas yang terkandung dalam CorrelationScope memiliki handel korelasi yang dikelola oleh CorrelationScope dan tidak mengharuskan CorrelationHandle diatur secara eksplisit. Cakupan CorrelationScope menyediakan manajemen CorrelationHandle untuk korelasi permintaan-balasan dan satu jenis korelasi tambahan. Layanan alur kerja yang di-host menggunakan WorkflowServiceHost memiliki manajemen korelasi default yang sama dengan aktivitas CorrelationScope. Manajemen korelasi default ini umumnya berarti bahwa dalam banyak skenario, aktivitas olahpesan dalam CorrelationScope layanan alur kerja atau tidak mengharuskan CorrelationHandle-nya diatur kecuali jika beberapa aktivitas olahpesan paralel atau tumpang tindih, seperti dua aktivitas Receive secara paralel, atau dua aktivitas Send yang diikuti oleh dua aktivitas Receive. Informasi selengkapnya tentang korelasi default disediakan dalam topik di bagian ini yang mencakup setiap jenis korelasi tertentu. Untuk informasi selengkapnya tentang aktivitas olahpesan, lihat Aktivitas Olahpesan dan Cara: Membuat Layanan Alur Kerja dengan Aktivitas Olahpesan.

Korelasi Berbasis Protokol

Korelasi berbasis protokol menggunakan mekanisme transportasi untuk menghubungkan pesan satu sama lain dan instans yang sesuai. Beberapa korelasi protokol yang disediakan sistem meliputi korelasi permintaan-balasan dan korelasi berbasis konteks. Korelasi permintaan-balasan digunakan untuk menghubungkan pasangan aktivitas olahpesan tunggal untuk membentuk operasi dua arah, seperti Send yang dipasangkan dengan ReceiveReply, atau Receive yang dipasangkan dengan SendReply. Perancang Alur Kerja Visual Studio juga menyediakan serangkaian templat aktivitas untuk menerapkan pola ini dengan cepat. Korelasi berbasis konteks didasarkan pada mekanisme pertukaran konteks yang dijelaskan dalam Spesifikasi Protokol Pertukaran Konteks .NET. Untuk menggunakan korelasi berbasis konteks, pengikatan berbasis konteks seperti BasicHttpContextBinding, WSHttpContextBinding, atau NetTcpContextBinding harus digunakan pada titik akhir.

Untuk informasi selengkapnya tentang korelasi protokol, lihat Dupleks Tahan Lama dan Permintaan-Balasan. Untuk informasi selengkapnya tentang menggunakan templat aktivitas Perancang Alur Kerja Visual Studio, lihat Aktivitas Olahpesan. Untuk sampel kode, lihat sampel NetContextExchangeCorrelation.

Korelasi Berbasis Konten

Korelasi berbasis konten menggunakan beberapa informasi dalam pesan untuk mengaitkannya ke instans tertentu. Tidak seperti korelasi berbasis protokol, korelasi berbasis konten mengharuskan penulis aplikasi untuk dinyatakan secara eksplisit di mana data ini dapat ditemukan di setiap pesan terkait. Aktivitas yang menggunakan korelasi berbasis konten menentukan data pesan ini dengan menggunakan MessageQuerySet. Korelasi berbasis konten berguna saat berkomunikasi dengan layanan yang tidak menggunakan salah satu pengikatan konteks seperti BasicHttpContextBinding.

Lihat juga