Pertanyaan Perbandingan antara Stateless (di google code) dan Windows Workflow [tertutup]


Saya mulai berpikir bahwa saya harus membuang Windows WF demi sesuatu yang lebih sederhana. Saya tidak perlu menghentikan eksekusi alur kerja untuk waktu yang lama dan mengembalikannya nanti. Saya ingin kerangka kerja mesin negara sederhana yang memiliki dasar menangguhkan / melanjutkan / membatalkan (tanpa serialisasi), namun.

Saya sudah mengunduh Kerangka Stateless dari Google Code dan saya akan mulai bermain dengannya, tetapi akan senang mendengar apa yang digunakan para programmer NET lainnya di luar sana.

EDIT Tanpa kewarganegaraan tampaknya sangat sederhana untuk diterapkan, tetapi saya bertanya-tanya apakah itu hal yang tepat untuk mesin permen. Dalam otomatisasi, saya selalu merasa berkonflik tentang bagaimana mesin negara harus digunakan. Meskipun saya menggunakan istilah "mesin negara", saya melakukannya dengan longgar karena saya menggunakannya lebih seperti diagram alur. Alih-alih menggunakan status untuk merepresentasikan mode aktif mesin, saya menggunakannya untuk menjalankan fungsi. Jadi dalam kasus ini dengan Stateless, saya sebenarnya akan menggunakan transisi dari satu negara ke yang berikutnya sebagai mekanisme untuk memanggil fungsi dalam kontroler mesin permen saya. Pikiran?


32
2018-02-13 17:34


asal


Jawaban:


Saat saya mengerjakan ini, saya akan mencoba untuk mencantumkan beberapa hal yang saya temukan. Sebagian besar kemungkinan akan sedikit dangkal dari sudut pandang analisis (terutama karena saya baru untuk kedua kerangka), tapi semoga itu akan membantu seseorang keluar.

Tanpa kewarganegaraan

Pro

  • sumber terbuka
  • secara sintaksis ringkas dan mudah dibaca
  • contoh bagus dalam repo lincah di google code
  • Saya dapat menerjemahkan diagram status UML saya ke dalam kode menggunakan stateless dengan sangat cepat.
  • pemeliharaan keadaan sangat sederhana - saya dapat menambah dan menghapus dengan mudah. Metode ekstensi memungkinkan saya untuk mengonfigurasi status pada baris terpisah, jadi saya dapat mengomentari pemicu atau tindakan yang tidak ingin saya gunakan.
  • melewatkan data ke / dari mesin negara itu mudah dan Anda dapat melakukannya sesuai keinginan dalam kode-belakang.
  • Demikian juga, mesin negara dapat memperbarui GUI dalam berbagai cara. Saat ini, saya memodifikasi data melalui antarmuka, dan kemudian GUI menggunakan pengatur waktu untuk memperbarui elemennya. Saya juga mungkin bisa menggunakan BackgroundWorker untuk melakukan ini.
  • Saya baru saja mulai menggunakan substrat untuk menangani GUI saya, yang perlu mengelola berbagai kondisi seperti Running, Paused, Aborted, dan Idle. Status Dijeda memiliki substates karena pengguna dapat menjeda sistem dalam berbagai cara, tetapi pemicu resume bersifat khusus untuk cara mereka dijeda. Saya senang dapat mengelola alat bantu / menonaktifkan dan tooltip GUI saya dengan menggunakan kerangka kerja mesin ringan.

Cons

  • tidak ada mekanisme built-in untuk jeda, lanjutkan, batalkan
  • hanya satu pengembang yang mendukung proyek tersebut. Saya mendapatkan bantuan dengan masalah yang baru-baru ini saya hadapi.
  • potensi penyalahgunaan jika Anda tidak berhati-hati. Saya menerapkan kerangka kerja mesin negara dengan tidak benar pada upaya pertama saya. Ini berhasil selama berbulan-bulan, dan kemudian akhirnya mati ketika saya menjalankan proses yang sangat lama berjalan. Ternyata saya menyebabkan negara penangan untuk menumpuk dan saya memiliki kondisi tumpukan tumpahan.

Yayasan Windows Workflow

Pro

  • pendekatan grafis untuk merancang alur kerja
  • mendukung kegigihan, berhenti, melanjutkan, membatalkan alur kerja
  • MS mungkin memiliki tim programmer yang besar untuk mendukung ini
  • GUI membuatnya sangat mudah untuk menonaktifkan / mengaktifkan kembali aktivitas

Cons

  • pendekatan grafis untuk merancang alur kerja menyembunyikan fakta bahwa benda ini cukup kompleks
  • untuk menggunakan kegigihan dan mendapatkan jeda / melanjutkan / membatalkan, Anda harus memasang dan mengatur "layanan persistensi", sesuatu yang belum saya ketahui cara bekerja. Saya dapat mengatur database SQL baik, tetapi pada saat runtime saya mendapatkan banyak kesalahan yang saya tidak mengerti.
  • karena itu dari MS, Anda tidak tahu apakah itu akan lama atau benar-benar jatuh.
  • penanganan kesalahan agak aneh karena Anda dapat menggunakan kode di belakang atau FaultHandler
  • melewatkan data dari WF ke aplikasi utama Anda rumit dan membutuhkan sesuatu seperti WCF (teknologi lain yang saya tidak punya cukup waktu untuk belajar secara memadai sekarang), atau menggunakan antarmuka ExternalDataExchange.

40
2018-03-02 18:04