Apa itu servicebus dan kapan saya membutuhkannya?

101

Saya telah mendengar pembicaraan tentang NServiceBus , tetapi saya belum benar-benar mengerti apa itu. Mereka mengklaim sebagai "Bus layanan sumber terbuka paling populer untuk .net".

Begitu; apa itu "bus layanan", dan kapan saya membutuhkannya?

stiank81.dll
sumber
Saya sangat terlambat ke pesta, saya tidak akan memposting ini sebagai jawaban karena tidak seperti itu tetapi singkatnya, jika Anda tidak tahu mengapa Anda memerlukannya maka kemungkinan Anda tidak ... masalah yang mungkin tidak Anda miliki seputar menghubungkan aplikasi dan memberikan bisnis Anda API terpusat.
Perang
9
@Wardy Saya tidak setuju dengan pernyataan Anda. Fakta bahwa Anda tidak memahami sesuatu atau tidak tahu apa itu, tidak berarti itu tidak akan membantu Anda untuk mengetahuinya
Cristian Toma
Itu bukan alasan untuk ketidaktahuan tetapi lebih menunjukkan bahwa bus layanan adalah istilah yang banyak dilontarkan ketika Anda menemukan jenis masalah yang dipecahkannya sehingga Anda akan membutuhkannya atau tidak dan karenanya tidak perlu khawatir. Itu.
Perang
Saya akan menambahkan ini sebagai mengedit tetapi secara fundamental akan mengubah pertanyaan ... NServiceBus yang sekarang dikenal sebagai "khusus Service Platform" dan dapat ditemukan di particular.net (yang mana NServiceBus.com pengalihan sekarang pula).
Dan Atkinson
Jika Anda tidak tahu nama atau konsep dari sesuatu yang sudah ada, kemungkinan besar Anda akan menulisnya sendiri. Oleh karena itu, baik untuk mengetahui tentang mereka sehingga Anda dapat menggunakannya (jika perlu)
noelicus

Jawaban:

80

Anda dapat menganggap bus layanan sebagai Ethernet SOA.

Pertama dan terpenting, ini memperkenalkan bahasa untuk mengidentifikasi sesuatu, seperti alamat IP di Ethernet. Nama ini bukanlah sesuatu yang pada dasarnya bersifat fisik.

Selanjutnya, Anda memiliki sesuatu yang secara fisik terlibat pada setiap node, seperti antrian dalam kasus bus untuk mendukung komunikasi semi-terhubung, atau kartu Ethernet dalam metafora.

Selain fisik, ada bagian "protokol" dari komunikasi, seperti tumpukan OSI untuk Ethernet. Dengan bus, ini adalah pustaka klien yang digunakan oleh kode aplikasi.

Pada akhirnya, Anda dapat melihat bus layanan menyediakan tingkat abstraksi yang lebih tinggi berikutnya untuk membangun sistem terdistribusi. Anda juga dapat menggunakannya untuk komunikasi server-klien untuk memberi Anda perpesanan satu arah yang tahan lama serta untuk server untuk mendorong pemberitahuan kembali ke klien.

Secara khusus, Anda akan menemukan NServiceBus cukup ringan dan mudah digunakan setelah Anda berdamai dengan penggunaan teknologi antrian - pilihan Anda dari RabbitMQ, MSMQ, Tabel SQL Reguler, Amazon SQS, Azure Storage Queues, dan Azure Service Bus.

Udi Dahan
sumber
Terima kasih! Pikir saya mendapat gambaran besarnya sekarang! Sebenarnya menanyakan pertanyaan ini untuk sedikit bersiap untuk sesi yang Anda
selenggarakan
12

Lihat artikel Wikipedia untuk Enterprise Service Bus .

Bus Layanan bertindak sebagai lapisan abstraksi lain dalam pencarian tanpa akhir untuk menerapkan Arsitektur Berorientasi Layanan yang baik. Bus Layanan dapat menangani beberapa pekerjaan berat yang terlihat di balik Arsitektur Berorientasi Layanan yang baik seperti Perpesanan, Perutean, dan Koordinasi Layanan.

Jika Anda tidak yakin mengapa Anda menginginkan hal seperti itu, saya sarankan membaca tentang apa yang membuat Arsitektur Berorientasi Layanan yang baik. Buku yang benar-benar membuka mata saya dan membuktikan perbedaan antara hanya memiliki Layanan Web dan memiliki Arsitektur Berorientasi Layanan yang sebenarnya adalah Arsitektur Berorientasi Layanan: Konsep, Teknologi, dan Desain Thomas Erl.

Justin Niessner
sumber
Jadi saya dapat menggunakannya untuk melakukan komunikasi antara aplikasi klien desktop dan server? Di mana server berada di dalam, itu.
stiank81
Anda bisa. Anda juga dapat menggunakannya untuk komunikasi antara layanan yang berbeda, versi berbeda dari layanan yang berbeda, dll. (Termasuk situasi di mana layanan menggunakan protokol yang berbeda).
Justin Niessner
11

Istilah ini diperkenalkan dengan SOA yang merupakan penerus (sebagai kata buzz) dari EAI .

Kapan Anda membutuhkannya? Itu pertanyaan yang bagus. Itu datang dengan banyak kerumitan.

Aturan praktisnya adalah jika itu memecahkan lebih banyak masalah daripada yang ditimbulkannya.

Bersikaplah serius jika Anda memiliki lingkungan yang heterogen dan ingin menyelaraskan (berbeda) aplikasi (menggunakan teknologi berbeda) dengan proses bisnis. Maka akan sangat membantu jika menggunakan BPEL (tapi ini menimbulkan masalah dengan migrasi) untuk orkestrasi dan koreografi

EDIT: Apa yang tidak ada di wikipedia, adalah praktik: ESB dapat beradaptasi dengan menggunakan konektor khusus, aplikasi terminal lama untuk digunakan dengan Corba atau Java Enterprise yang dimaksud dengan interoperabilitas. Kekurangannya adalah lebih dari 100 'Standar' di sekitar SOAP yang tidak dapat bekerja sama tanpa usaha yang besar.

Anda pasti membutuhkannya jika Anda harus menghubungkan sistem TI dalam waktu enam bulan setelah penggabungan 2 perusahaan jaminan besar.

stacker
sumber
Jadi - dalam aplikasi desktop saya yang memiliki komunikasi "sederhana" dengan sisi server, tidak perlu menggunakan Service Bus besar? Bisakah ini membantu saya menerapkan model push dari server? Atau akankah itu lebih menyakitkan daripada keuntungan dalam skenario ini juga?
stiank81
@ stiank81 maaf saya membaca bus layanan (Enterprise) dan sinapsis dipecat. Saya memeriksa tautan Anda ke NServiceBus, mereka menargetkan sama, Anda tidak memerlukan sesuatu seperti itu di aplikasi server klien. Ini dimaksudkan sebagai konsep untuk beberapa aplikasi yang terlibat dalam satu proses bisnis. Jika itu akan berhasil untuk Anda? Jika itu memecahkan lebih banyak masalah daripada yang ditimbulkannya.
penumpuk
Gunakan "jika itu memecahkan lebih banyak masalah daripada yang ditimbulkannya" ... menyukainya.
noelicus