Bagikan melalui


Spesifikasi Fitur Windows Workflow Foundation

.NET Framework 4 menambahkan sejumlah fitur ke Windows Workflow Foundation. Dokumen ini menjelaskan sejumlah fitur baru, dan memberikan detail tentang skenario di mana fitur tersebut mungkin berguna.

Aktivitas Olahpesan

Aktivitas olahpesan (Receive, , SendReplySend, ReceiveReply) digunakan untuk mengirim dan menerima pesan WCF dari alur kerja Anda. Receive dan SendReply aktivitas digunakan untuk membentuk operasi layanan Windows Communication Foundation (WCF) yang diekspos melalui WSDL sama seperti layanan web WCF standar. Send dan ReceiveReply digunakan untuk menggunakan layanan web yang mirip dengan WCF ChannelFactory; pengalaman Tambahkan Referensi Layanan juga ada untuk Workflow Foundation yang menghasilkan aktivitas yang telah dikonfigurasi sebelumnya.

Memulai Kegiatan Pesan

  • Di Visual Studio 2012, buat proyek Aplikasi Layanan Alur Kerja WCF. Sepasang Receive dan SendReply akan ditempatkan di kanvas Anda.

  • Klik kanan pada proyek dan pilih Tambahkan Referensi Layanan. Arahkan penunjuk ke WSDL layanan web yang telah ada dan klik OK. Bangun proyek Anda untuk menampilkan aktivitas yang dihasilkan (diimplementasikan menggunakan Send dan ReceiveReply) di kotak alat Anda.

  • Dokumentasi layanan alur kerja

Skenario Contoh Aktivitas Pesan

Layanan BestPriceFinder memanggil beberapa layanan maskapai penerbangan untuk menemukan harga tiket terbaik untuk rute tertentu. Menerapkan skenario ini akan mengharuskan Anda untuk menggunakan aktivitas pesan untuk menerima permintaan harga, mengambil harga dari layanan back-end, dan membalas permintaan harga dengan harga terbaik. Ini juga akan mengharuskan Anda untuk menggunakan kegiatan lain yang sudah tersedia untuk membuat logika bisnis dalam menghitung harga terbaik.

WorkflowServiceHost

WorkflowServiceHost adalah host workflow bawaan yang mendukung beberapa instans, konfigurasi, dan pengiriman pesan WCF (meskipun alur kerja tidak diwajibkan menggunakan pengiriman pesan untuk dihosting). Ini juga terintegrasi dengan persistensi, pelacakan, dan kontrol instans melalui serangkaian perilaku layanan. Sama seperti WCF ServiceHost, WorkflowServiceHost dapat dihost sendiri di konsol/WinForms/WPF aplikasi atau layanan Windows, atau dihosting web (sebagai file .xamlx) di IIS atau WAS.

Memulai Host Layanan Alur Kerja

Skenario WorkflowServiceHost

Layanan BestPriceFinder memanggil beberapa layanan maskapai penerbangan untuk menemukan harga tiket terbaik untuk rute tertentu. Menerapkan skenario ini akan mengharuskan Anda untuk menghosting alur kerja di WorkflowServiceHost. Ini juga akan menggunakan aktivitas pesan untuk menerima permintaan harga, mengambil harga dari layanan back-end, dan membalas permintaan harga dengan harga terbaik.

Korelasi

Korelasi adalah salah satu dari dua hal:

  • Cara mengelompokkan pesan bersama-sama; yaitu, hubungan antara pesan permintaan dan balasannya.

  • Cara memetakan sepotong data ke instans layanan

Memulai Langkah Awal

  • Untuk memulai korelasi, buat proyek baru di Visual Studio. Buat variabel jenis CorrelationHandle.

  • Contoh korelasi yang digunakan untuk mengelompokkan pesan bersama-sama adalah korelasi Request-Reply yang mengelompokkan pesan bersama-sama.

  • Contoh pemetaan sepotong data ke instans layanan adalah korelasi berbasis konten yang memetakan sepotong data (misalnya, ID pesanan) ke instans alur kerja tertentu.

    • Pada aktivitas olahpesan apa pun, klik pada properti CorrelationInitializers dan tambahkan QueryCorrelationInitializer menggunakan variabel CorrelationHandle yang telah dibuat sebelumnya. Klik dua kali pada properti yang diinginkan pada pesan (misalnya OrderID) dari menu drop-down. Atur properti CorrelatesWith pada variabel CorrelationHandle yang digunakan di atas.
  • Dokumentasi Konseptual Korelasi

Skenario Korelasi

Alur kerja pemrosesan pesanan digunakan untuk menangani pembuatan pesanan baru dan memperbarui pesanan yang ada yang sedang dalam proses. Menerapkan skenario ini akan mengharuskan Anda untuk menghosting alur kerja di WorkflowServiceHost dan menggunakan aktivitas olahpesan. Ini juga akan memerlukan korelasi berdasarkan orderId untuk memastikan bahwa pembaruan dilakukan pada alur kerja yang benar.

Konfigurasi yang Disederhanakan

Skema konfigurasi WCF rumit dan memberi pengguna banyak fitur yang sulit ditemukan. Di .NET Framework 4.6.1, kami telah berfokus untuk membantu pengguna WCF mengonfigurasi layanan mereka dengan fitur-fitur berikut:

  • Menghapus kebutuhan akan konfigurasi eksplisit per layanan. Jika Anda tidak mengonfigurasi elemen layanan< apa pun >untuk layanan Anda, dan layanan Anda tidak menentukan titik akhir apa pun secara terprogram, maka sekumpulan titik akhir akan secara otomatis ditambahkan ke layanan Anda, satu per alamat dasar layanan dan per kontrak yang diterapkan oleh layanan Anda.

  • Memungkinkan pengguna menentukan nilai default untuk pengikatan dan perilaku WCF, yang akan diterapkan ke layanan tanpa konfigurasi eksplisit.

  • Titik akhir standar menentukan titik akhir yang dapat digunakan kembali yang telah dikonfigurasi sebelumnya, yang memiliki nilai tetap untuk satu atau beberapa properti titik akhir (alamat, pengikatan, dan kontrak), dan memungkinkan penentuan properti kustom.

  • Terakhir, ConfigurationChannelFactory<TChannel> memungkinkan Anda untuk melakukan manajemen pusat konfigurasi klien WCF, berguna dalam skenario di mana konfigurasi dipilih atau diubah setelah waktu pemuatan domain aplikasi.

Memulai Langkah Awal

Skenario Konfigurasi yang Disederhanakan

  • Pengembang ASMX berpengalaman ingin mulai menggunakan WCF. Namun, WCF tampaknya terlalu rumit! Apa saja informasi yang perlu saya tulis dalam file konfigurasi? Di .NET 4, Anda bahkan dapat memutuskan untuk tidak memiliki file konfigurasi sama sekali.

  • Serangkaian layanan WCF yang ada sangat sulit untuk dikonfigurasi dan dikelola. File konfigurasi memiliki ribuan baris kode XML yang sangat berbahaya untuk disentuh. Bantuan diperlukan untuk mengurangi jumlah kode tersebut menjadi sesuatu yang lebih mudah dikelola.

Pemecah Kontrak Data

Dalam .NET Framework 3.5, ada beberapa batasan dalam desain jenis yang diketahui:

  • Menambahkan jenis yang diketahui secara dinamis, selama serialisasi atau deserialisasi, tidak dimungkinkan.

  • Serializer tidak dapat menangani informasi xsi:type yang tidak dikenali.

  • Pengguna tidak dapat menentukan xsi:type apa yang ingin mereka munculkan pada kabel, misalnya, membuat ukuran instans serialisasi pada kawat lebih kecil.

DataContractResolver memecahkan masalah ini di .NET Framework 4.5.

Memulai Langkah Awal

Skenario Pemecah Kontrak Data

  • Menghindari harus mendeklarasikan puluhan KnownTypeAttribute objek dalam layanan.

  • Mengurangi ukuran blob XML.

Diagram Alur

Diagram alur adalah paradigma terkenal untuk mewakili masalah domain secara visual. Ini adalah gaya aliran kontrol baru yang kami perkenalkan di .NET Framework 4. Karakteristik inti Bagan Alur adalah bahwa hanya satu aktivitas yang dijalankan pada waktu tertentu. Diagram alur dapat mengekspresikan perulangan dan hasil alternatif, tetapi tidak dapat secara default mengekspresikan eksekusi simultan dari beberapa simpul.

Memulai Langkah Awal

Skenario Diagram Alur

Aktivitas diagram alur dapat digunakan untuk mengimplementasikan permainan tebakan. Permainan menebak sangat sederhana: komputer memilih angka acak dan pemain harus menebak angka itu. Ketika pemain mengirimkan setiap tebakan, komputer menunjukkan petunjuk ("cobalah angka yang lebih rendah"). Jika pemain menemukan angka dalam kurang dari 7 upaya, mereka menerima ucapan selamat khusus dari komputer. Game ini dapat diimplementasikan dengan kombinasi aktivitas prosedural berikut:

Aktivitas prosedural (Urutan, Jika, ForEach, Switch, Menetapkan, DoWhile, While)

Aktivitas prosedural menyediakan mekanisme untuk memodelkan alur kontrol berurutan menggunakan konsep yang akrab bagi pemrogram. Aktivitas ini memungkinkan konstruksi bahasa pemrograman terstruktur secara tradisional dan, jika sesuai, menyediakan paritas bahasa dengan bahasa prosedural umum seperti C# dan Visual Basic.

Memulai Langkah Awal

Skenario Aktivitas Prosedural

  • Parallel: Sistem manajemen dokumen intranet memiliki alur kerja persetujuan dokumen. Dokumen perlu disetujui oleh orang-orang di beberapa departemen sebelum dapat diterbitkan ke intranet. Tidak ada urutan yang ditetapkan untuk persetujuan; mereka dapat terjadi kapan saja saat dokumen berada dalam fase "persetujuan tertunda". Saat pengguna mengirimkan dokumen untuk ditinjau, dokumen tersebut harus disetujui oleh manajer langsung mereka, administrator intranet, dan manajer komunikasi internal.

  • ParallelForEach<T>: Aplikasi WF mengelola pembelian korporasi di dalam perusahaan besar. Aturan perusahaan menentukan bahwa sebelum merencanakan operasi pembelian apa pun, valuasi tiga vendor yang berbeda diperlukan. Seorang karyawan dari departemen pembelian memilih tiga vendor dari daftar vendor perusahaan. Setelah vendor ini dipilih dan diberi tahu, perusahaan akan menunggu proposal ekonomi mereka. Proposal dapat datang dalam urutan apa pun. Untuk menerapkan skenario ini di WF, kami menggunakan ParallelForEach<T> yang akan melakukan iterasi melalui koleksi vendor kami dan meminta proposal ekonomi mereka. Setelah semua penawaran dikumpulkan, yang terbaik dipilih dan ditampilkan.

InvokeMethod

Aktivitas ini InvokeMethod memungkinkan pemanggilan metode publik pada objek atau tipe yang ada dalam cakupan. Ini mendukung pemanggilan instans dan metode statis dengan atau tanpa parameter (termasuk array parameter), dan metode generik. Ini juga memungkinkan metode eksekusi secara sinkron dan asinkron.

Memulai Langkah Awal

  • Di Visual Studio 2012, buat aplikasi konsol alur kerja. InvokeMethod Tambahkan aktivitas di perancang alur kerja, dan konfigurasikan metode statis dan instans di atasnya.

  • Dokumentasi Desainer: Perancang Aktivitas InvokeMethod

Skenario InvokeMethod

  • Metode dalam objek di dalam cakupan perlu dipanggil. Misalnya, nilai perlu ditambahkan ke kamus. Metode Add pada instance dari kamus dipanggil, dan kunci serta nilai disediakan.

  • Metode perlu dipanggil pada objek CLR lama. Alih-alih membuat aktivitas kustom untuk membungkus panggilan ke kelas warisan tersebut, jika berada dalam cakupan selama eksekusi alur kerja, InvokeMethod dapat digunakan.

Aktivitas penanganan kesalahan

Aktivitas ini TryCatch menyediakan mekanisme untuk menangkap pengecualian yang terjadi selama eksekusi serangkaian aktivitas yang terkandung (mirip dengan konstruksi Try/Catch di C# dan Visual Basic). TryCatch menyediakan penanganan pengecualian di tingkat alur kerja. Ketika pengecualian tidak tertangani terjadi, alur kerja dibatalkan dan blok Finally tidak akan dijalankan. Perilaku ini konsisten dengan C#.

Memulai Langkah Awal

Skenario penanganan kesalahan

Serangkaian aktivitas perlu dijalankan, dan logika tertentu perlu dijalankan ketika kesalahan terjadi. Jika selama logika penanganan kesalahan ditemukan bahwa kesalahan tidak dapat dipulihkan, pengecualian akan dilemparkan kembali, dan aktivitas induk (atau host) akan menangani masalah.

Pilih aktivitas

Pick Aktivitas menyediakan pemodelan alur kontrol berbasis peristiwa di WF. Pick berisi banyak cabang di mana setiap cabang menunggu peristiwa tertentu terjadi sebelum berjalan. Dalam penyiapan ini, Pick berperilaku mirip dengan Switch<T> di mana aktivitas hanya akan menjalankan salah satu dari serangkaian peristiwa yang dipantau. Setiap cabang digerakkan oleh peristiwa dan peristiwa yang terjadi menjalankan cabang yang sesuai terlebih dahulu. Semua cabang lainnya membatalkan dan berhenti mendengarkan acara.

Memulai Langkah Awal

Pilih Skenario

Pengguna perlu dimintai masukan. Dalam keadaan normal, pengembang akan menggunakan panggilan metode seperti ReadLine meminta input pengguna. Masalah dengan penyetelan ini adalah bahwa program menunggu sampai pengguna memasukkan sesuatu. Dalam skenario ini, penghentian sementara diperlukan untuk mengatasi aktivitas yang memblokir. Skenario umum adalah skenario yang mengharuskan tugas diselesaikan dalam durasi waktu tertentu. Menghentikan sementara aktivitas pemblokiran adalah skenario di mana Pick menambahkan banyak nilai.

Layanan Perutean WCF

Layanan Perutean dirancang untuk menjadi router perangkat lunak generik yang memungkinkan Anda mengontrol bagaimana pesan WCF mengalir di antara klien dan layanan Anda. Layanan Perutean memungkinkan Anda untuk memisahkan klien Anda dari layanan Anda, yang memberi Anda lebih banyak kebebasan dalam hal konfigurasi yang dapat Anda dukung dan fleksibilitas yang Anda miliki saat mempertimbangkan cara menghosting layanan Anda. Dalam .NET Framework 3.5, klien dan layanan digabungkan dengan erat; klien harus tahu tentang semua layanan yang perlu diajak bicara dan di mana mereka berada. Selain itu, WCF dalam .NET Framework 3.5 memiliki batasan berikut:

  • Penanganan kesalahan itu kompleks, karena logika ini harus dikodekan secara permanen ke klien.

  • Klien dan layanan harus selalu menggunakan pengikatan yang sama.

  • Layanan jarang diperhitungkan dengan baik: lebih mudah untuk meminta klien berbicara dengan satu layanan yang mengimplementasikan semuanya, daripada perlu memilih antara beberapa layanan.

Layanan perutean di .NET 4 dirancang untuk mempermudah penyelesaian masalah ini. Layanan perutean baru memiliki fitur berikut:

  1. Perutean berbasis konten (MessageFilter objek memeriksa pesan untuk menentukan di mana harus dikirim.)

  2. Bridging protokol (transportasi & pesan)

  3. Penanganan kesalahan (router menangkap pengecualian komunikasi dan failover ke titik akhir cadangan)

  4. Pembaruan Dinamis (dalam memori) MessageFilterTable<TFilterData> dan Konfigurasi Perutean.

Memulai Langkah Awal

  1. Dokumentasi: Perutean

  2. Sampel: Layanan Perutean [Sampel WCF]

  3. Blog: Aturan Perutean!

Skenario Pengarutan

Layanan perutean berguna dalam skenario berikut:

  • Pelanggan dapat berbicara dengan beberapa layanan tanpa harus menghubungi mereka semua secara langsung.

  • Klien dapat melakukan logika tambahan pada permintaan klien untuk menentukan tempat merutekannya

  • Menguraikan operasi yang dilakukan klien ke dalam beberapa implementasi layanan tanpa merefaktor klien.

  • Klien dan layanan dapat menggunakan ikatan yang berbeda dengan pengaturan keamanan yang berbeda.

  • Klien dapat diaktifkan agar lebih kuat terhadap kegagalan atau tidak tersedianya layanan.

Penemuan WCF (Windows Communication Foundation)

WCF Discovery adalah teknologi kerangka kerja yang memungkinkan Anda menggabungkan mekanisme penemuan ke infrastruktur aplikasi Anda. Anda dapat menggunakan ini untuk membuat layanan Anda dapat ditemukan, dan mengonfigurasi klien Anda untuk mencari layanan. Klien tidak perlu lagi dikodekan secara permanen dengan titik akhir, membuat aplikasi Anda lebih kuat dan toleran terhadap kesalahan. Discovery adalah platform sempurna untuk membangun kemampuan konfigurasi otomatis dalam aplikasi Anda.

Produk ini dibangun di atas standar WS-Discovery. Ini dirancang untuk dapat dioperasikan, dapat diperluas, dan generik. Produk ini mendukung dua mode operasi:

  1. Terkelola: di mana ada entitas di jaringan yang berpengetahuan luas tentang layanan yang ada, klien mengkuerinya langsung untuk informasi. Ini dianalogikan dengan Direktori Aktif.

  2. Ad-hoc: tempat klien menggunakan pesan multicast untuk menemukan layanan.

Selain itu, pesan penemuan tidak bergantung pada protokol jaringan; Anda dapat menggunakannya dengan protokol apa pun yang mendukung persyaratan mode. Misalnya, pesan multicast penemuan dapat dikirim melalui saluran UDP atau jaringan lain yang mendukung pesan multicast. Titik desain ini, dikombinasikan dengan fleksibilitas fitur, memungkinkan Anda untuk menyesuaikan penemuan secara khusus dengan solusi Anda.

Memulai Langkah Awal

Skenario Eksplorasi

Seorang pengembang tidak ingin menggunakan titik akhir yang di-hardcode, karena belum diketahui kapan layanan mereka akan tersedia. Sebagai gantinya, pengembang ingin memilih layanan pada waktu proses. Diperlukan lebih banyak pemisahan, ketahanan, dan konfigurasi otomatis antara komponen dalam aplikasi.

Pelacakan

Pelacakan alur kerja memberikan wawasan tentang eksekusi instans alur kerja. Peristiwa pelacakan dipancarkan dari alur kerja pada tingkat instans alur kerja dan ketika aktivitas dalam alur kerja dieksekusi. Peserta pelacakan alur kerja perlu ditambahkan ke host alur kerja untuk berlangganan rekaman pelacakan. Rekaman pelacakan difilter menggunakan profil pelacakan. .NET Framework menyediakan partisipan pelacakan ETW (Pelacakan Peristiwa untuk Windows), dan profil dasar diinstal pada file machine.config.

Memulai Langkah Awal

  1. Di Visual Studio 2010, buat proyek Aplikasi Layanan Alur Kerja WCF. Pasangan Receive dan SendReply akan ditempatkan di kanvas Anda untuk memulai.

  2. Buka web.config dan tambahkan perilaku penelusuran ETW tanpa profil.

    1. Profil default digunakan.

    2. Buka penampil peristiwa dan aktifkan saluran analitik di simpul berikut: Pemandang Peristiwa, Log Aplikasi dan Layanan, Microsoft, Windows, Application Server-Applications. Klik kanan Analitik dan pilih Aktifkan Log.

    3. Jalankan layanan alur kerja.

    4. Amati peristiwa pelacakan alur kerja di penampil peristiwa.

  3. Sampel: Pelacakan

  4. Dokumentasi konseptual: Pelacakan dan Penelusuran Alur Kerja

Penyimpanan Instans Alur Kerja SQL

SqlWorkflowInstanceStore adalah implementasi berbasis SQL Server dari penyimpanan instans. Penyimpanan instans menyimpan status instans yang sedang berjalan bersama dengan semua data yang diperlukan untuk memuat dan melanjutkan instans tersebut. Host layanan menginstruksikan penyimpanan instans untuk menyimpan status instans jika alur kerja berlangsung, dan menginstruksikan penyimpanan instans untuk memuat status instans saat pesan tiba untuk instans tersebut atau saat aktivitas penundaan kedaluwarsa.

Memulai Langkah Awal

  1. Di Visual Studio 2012, buat Alur Kerja yang berisi aktivitas implisit atau eksplisit Persist . Tambahkan perilaku SqlWorkflowInstanceStore ke host layanan alur kerja Anda. Ini dapat dilakukan dalam kode atau dalam file konfigurasi aplikasi.

  2. Sampel: Persistensi

  3. Dokumentasi konseptual: Penyimpanan Instans Alur Kerja SQL.