Rumah pembangunan bahagian belakang Tutorial C#.Net Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#

Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#

Oct 08, 2023 am 08:41 AM
baris gilir mesej Komunikasi tak segerak c#pembangunan

Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#

Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#

Pengenalan:
Dalam pembangunan perisian moden, dengan aplikasi Apabila program berkembang dalam saiz dan kerumitan, ia menjadi penting untuk mengendalikan baris gilir mesej dengan cekap dan melaksanakan komunikasi tak segerak. Beberapa senario aplikasi biasa termasuk penghantaran mesej antara sistem yang diedarkan, pemprosesan baris gilir tugas latar belakang, pengaturcaraan dipacu peristiwa, dsb.

Artikel ini akan membincangkan cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#, dan menyediakan contoh kod khusus.

1. Baris Gilir Mesej
Baris gilir mesej ialah mekanisme komunikasi tak segerak yang membenarkan mesej Dengan menghantar mesej ke baris gilir, penerima boleh mendapatkan dan memproses mesej secara tidak segerak. Kelebihannya termasuk penyahgandingan, meningkatkan kebolehskalaan sistem dan toleransi kesalahan, dsb.

Dalam pembangunan C#, anda boleh menggunakan Bas Perkhidmatan Azure, RabbitMQ dan perkhidmatan baris gilir mesej lain untuk melaksanakan fungsi baris gilir mesej. Berikut ialah contoh kod menggunakan RabbitMQ:

  1. Terima mesej

    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    using System;
    using System.Text;
    
    class Receive
    {
     static void Main()
     {
         var factory = new ConnectionFactory() { HostName = "localhost" };
         using (var connection = factory.CreateConnection())
         using (var channel = connection.CreateModel())
         {
             channel.QueueDeclare(queue: "hello",
                                  durable: false,
                                  exclusive: false,
                                  autoDelete: false,
                                  arguments: null);
    
             var consumer = new EventingBasicConsumer(channel);
             consumer.Received += (model, ea) =>
             {
                 var body = ea.Body.ToArray();
                 var message = Encoding.UTF8.GetString(body);
                 Console.WriteLine(" [x] Received {0}", message);
             };
             channel.BasicConsume(queue: "hello",
                                  autoAck: true,
                                  consumer: consumer);
    
             Console.WriteLine(" Press [enter] to exit.");
             Console.ReadLine();
         }
     }
    }
    Salin selepas log masuk
  2. Hantar mesej semula #🎜#rree🎜

Dalam kod di atas, penerima mendaftarkan pengendali acara melalui kaedah channel.BasicConsume untuk memproses mesej yang diterima daripada baris gilir. Pengirim menggunakan kaedah channel.BasicPublish untuk menghantar mesej ke baris gilir.

channel.BasicConsume方法注册一个事件处理程序处理从队列中接收到的消息。发送者使用channel.BasicPublish方法将消息发送到队列中。

二、异步通信
异步通信是一种并发处理方式,可以提高应用程序的性能和响应能力。在C#开发中,可以使用异步方法和任务来实现异步通信。

  1. 异步方法
    异步方法通过asyncawait关键字实现,在处理耗时操作时可以让线程回到调用者的线程上继续执行其他任务,而不会阻塞调用者的线程。

以下是使用异步方法处理耗时操作的示例代码:

using RabbitMQ.Client;
using System;
using System.Text;

class Send
{
 static void Main()
 {
     var factory = new ConnectionFactory() { HostName = "localhost" };
     using (var connection = factory.CreateConnection())
     using (var channel = connection.CreateModel())
     {
         channel.QueueDeclare(queue: "hello",
                              durable: false,
                              exclusive: false,
                              autoDelete: false,
                              arguments: null);

         string message = "Hello World!";
         var body = Encoding.UTF8.GetBytes(message);

         channel.BasicPublish(exchange: "",
                              routingKey: "hello",
                              basicProperties: null,
                              body: body);
         Console.WriteLine(" [x] Sent {0}", message);
     }

     Console.WriteLine(" Press [enter] to exit.");
     Console.ReadLine();
 }
}
Salin selepas log masuk

以上代码中,DoSomethingAsync方法使用了await Task.Delay(2000)来模拟一个耗时操作。Main方法使用await关键字来等待DoSomethingAsync方法的完成。

  1. 任务
    任务(Task)是.NET中的一种抽象,代表一个异步操作。可以使用Task.Run方法或Task.Factory.StartNew方法创建一个任务,并使用await来等待任务的完成。

以下是使用任务处理耗时操作的示例代码:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        await DoSomethingAsync();
        Console.WriteLine("Continue working...");
        Console.ReadLine();
    }

    static async Task DoSomethingAsync()
    {
        Console.WriteLine("Start working...");
        await Task.Delay(2000);
        Console.WriteLine("Finish working...");
    }
}
Salin selepas log masuk

以上代码中,通过Task.Run方法将耗时操作放在一个新的任务中,使用Wait 2. Komunikasi tak segerak

Komunikasi tak segerak ialah kaedah pemprosesan serentak yang boleh meningkatkan prestasi dan responsif aplikasi. Dalam pembangunan C#, komunikasi tak segerak boleh dicapai menggunakan kaedah dan tugas tak segerak.


Kaedah tak segerak

Kaedah tak segerak dilaksanakan melalui kata kunci async dan menunggu, yang boleh digunakan semasa memproses operasi yang memakan masa Benang kembali ke urutan pemanggil untuk terus melaksanakan tugas lain tanpa menyekat urutan pemanggil.

  1. Berikut ialah kod sampel yang menggunakan kaedah tak segerak untuk mengendalikan operasi yang memakan masa:
  2. using System;
    using System.Threading.Tasks;
    
    class Program
    {
        static void Main()
        {
            Task.Run(() =>
            {
                Console.WriteLine("Start working...");
                Task.Delay(2000).Wait();
                Console.WriteLine("Finish working...");
            }).Wait();
    
            Console.WriteLine("Continue working...");
            Console.ReadLine();
        }
    }
    Salin selepas log masuk
Dalam kod di atas, DoSomethingAsync kod> kaedah menggunakan menunggu Task.Delay(2000) untuk mensimulasikan operasi yang memakan masa. Kaedah Utama menggunakan kata kunci menunggu untuk menunggu penyelesaian kaedah DoSomethingAsync. #🎜🎜#
    #🎜🎜#Task#🎜🎜#Task ialah abstraksi dalam .NET yang mewakili operasi tak segerak. Anda boleh menggunakan kaedah Task.Run atau kaedah Task.Factory.StartNew untuk membuat tugasan dan gunakan menunggu untuk menunggu tugasan untuk melengkapkan. #🎜🎜##🎜🎜##🎜🎜#Berikut ialah contoh kod yang menggunakan tugasan untuk mengendalikan operasi yang memakan masa: #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, Task.Run akan Meletakkan operasi yang memakan masa dalam tugasan baharu dan menggunakan kaedah Tunggu untuk menunggu tugasan selesai. #🎜🎜##🎜🎜#Kesimpulan: #🎜🎜# Melalui penggunaan baris gilir mesej dan komunikasi tak segerak yang betul, prestasi, kebolehskalaan dan responsif aplikasi boleh dipertingkatkan. Dalam pembangunan C#, anda boleh menggunakan perkhidmatan baris gilir mesej seperti RabbitMQ atau Azure Service Bus untuk melaksanakan fungsi baris gilir mesej dan menggunakan kaedah dan tugas tak segerak untuk melaksanakan komunikasi tak segerak. Saya harap artikel ini telah memberikan sedikit bantuan untuk anda dalam menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#. #🎜🎜##🎜🎜# Rujukan: #🎜🎜##🎜🎜##🎜🎜#https://www.rabbitmq.com/getstarted.html#🎜🎜##🎜🎜#

Atas ialah kandungan terperinci Cara menangani baris gilir mesej dan isu komunikasi tak segerak dalam pembangunan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nota Pembangunan C#: Pengaturcaraan Selamat lwn Pengaturcaraan Defensif Nota Pembangunan C#: Pengaturcaraan Selamat lwn Pengaturcaraan Defensif Nov 23, 2023 am 08:51 AM

C# ialah bahasa pengaturcaraan berorientasikan objek yang digunakan secara meluas yang mudah dipelajari, ditaip kuat, selamat, boleh dipercayai, cekap dan mempunyai kecekapan pembangunan yang tinggi. Walau bagaimanapun, program C# mungkin masih tertakluk kepada serangan berniat jahat atau ralat program yang disebabkan oleh kecuaian yang tidak disengajakan Semasa menulis program C#, kita harus memberi perhatian kepada prinsip pengaturcaraan selamat dan pengaturcaraan defensif untuk memastikan keselamatan, kebolehpercayaan dan kestabilan program. 1. Prinsip pengaturcaraan selamat 1. Jangan percaya input pengguna Jika tiada pengesahan yang mencukupi dalam program C#, pengguna berniat jahat boleh dengan mudah memasukkan data berniat jahat dan menyerang program.

Nota Pembangunan C#: Kerentanan Keselamatan dan Langkah-langkah Pencegahan Nota Pembangunan C#: Kerentanan Keselamatan dan Langkah-langkah Pencegahan Nov 22, 2023 pm 07:18 PM

C# ialah bahasa pengaturcaraan yang digunakan secara meluas pada platform Windows Popularitinya tidak dapat dipisahkan daripada fungsi dan fleksibilitinya yang berkuasa. Walau bagaimanapun, dengan tepat kerana aplikasinya yang luas, program C# juga menghadapi pelbagai risiko dan kelemahan keselamatan. Artikel ini akan memperkenalkan beberapa kelemahan keselamatan biasa dalam pembangunan C# dan membincangkan beberapa langkah pencegahan. Pengesahan input input pengguna ialah salah satu lubang keselamatan yang paling biasa dalam program C#. Input pengguna yang tidak sah mungkin mengandungi kod hasad, seperti suntikan SQL, serangan XSS, dsb. Untuk melindungi daripada serangan sedemikian, semua

Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Amalan pembangunan Java Websocket: bagaimana untuk melaksanakan fungsi baris gilir mesej Dec 02, 2023 pm 01:57 PM

Amalan pembangunan Java Websocket: Bagaimana untuk melaksanakan fungsi baris gilir mesej Pengenalan: Dengan perkembangan pesat Internet, komunikasi masa nyata menjadi semakin penting. Dalam kebanyakan aplikasi web, kemas kini masa nyata dan keupayaan pemberitahuan diperlukan melalui pemesejan masa nyata. JavaWebsocket ialah teknologi yang membolehkan komunikasi masa nyata dalam aplikasi web. Artikel ini akan memperkenalkan cara menggunakan JavaWebsocket untuk melaksanakan fungsi baris gilir mesej dan menyediakan contoh kod khusus. Konsep asas baris gilir mesej

Perkongsian pengalaman projek untuk membangunkan sistem pengurusan rantaian bekalan dalam C# Perkongsian pengalaman projek untuk membangunkan sistem pengurusan rantaian bekalan dalam C# Nov 02, 2023 am 09:42 AM

Dalam tahun-tahun kebelakangan ini, dengan perkembangan pesat e-dagang, pengurusan rantaian bekalan telah menjadi bahagian penting dalam persaingan perusahaan. Untuk meningkatkan kecekapan rantaian bekalan syarikat dan mengurangkan kos, syarikat kami memutuskan untuk membangunkan sistem pengurusan rantaian bekalan untuk pengurusan bersatu perolehan, pergudangan, pengeluaran dan logistik. Artikel ini akan berkongsi pengalaman dan pandangan saya dalam membangunkan projek sistem pengurusan rantaian bekalan dalam C#. 1. Analisis keperluan sistem Sebelum memulakan projek, kami terlebih dahulu menjalankan analisis keperluan sistem. Melalui komunikasi dan penyelidikan dengan pelbagai jabatan, kami menjelaskan fungsi dan matlamat sistem. Pengurusan rantaian bekalan

Perkongsian pengalaman pembangunan C#: kemahiran dan amalan pengaturcaraan yang cekap Perkongsian pengalaman pembangunan C#: kemahiran dan amalan pengaturcaraan yang cekap Nov 23, 2023 am 09:10 AM

Perkongsian pengalaman pembangunan C#: kemahiran dan amalan pengaturcaraan yang cekap Dalam bidang pembangunan perisian moden, C# telah menjadi salah satu bahasa pengaturcaraan yang paling popular. Sebagai bahasa berorientasikan objek, C# boleh digunakan untuk membangunkan pelbagai jenis aplikasi, termasuk aplikasi desktop, aplikasi web, aplikasi mudah alih, dll. Walau bagaimanapun, membangunkan aplikasi yang cekap bukan hanya tentang menggunakan sintaks dan fungsi perpustakaan yang betul Ia juga memerlukan mengikuti beberapa petua dan amalan pengaturcaraan untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dalam artikel ini, saya akan berkongsi beberapa pengaturcaraan C#

Berkongsi pengalaman dalam projek pembangunan platform e-dagang berdasarkan C# Berkongsi pengalaman dalam projek pembangunan platform e-dagang berdasarkan C# Nov 02, 2023 pm 01:56 PM

Dengan perkembangan pesat e-dagang, semakin banyak syarikat mula menyedari kepentingan mewujudkan platform e-dagang mereka sendiri. Sebagai pembangun, saya bernasib baik kerana mengambil bahagian dalam projek pembangunan platform e-dagang berdasarkan C#, dan saya ingin berkongsi beberapa pengalaman dan pengajaran dengan anda. Pertama, buat rancangan projek yang jelas. Sebelum projek bermula, kami menghabiskan banyak masa menganalisis keperluan pasaran dan pesaing, dan menentukan matlamat dan skop projek. Kerja pada peringkat ini sangat penting untuk pembangunan dan pelaksanaan seterusnya Ia boleh membantu kami memahami pelanggan kami dengan lebih baik.

Pertimbangan pembangunan C#: pengaturcaraan berbilang benang dan kawalan konkurensi Pertimbangan pembangunan C#: pengaturcaraan berbilang benang dan kawalan konkurensi Nov 22, 2023 pm 01:26 PM

Dalam pembangunan C#, pengaturcaraan berbilang benang dan kawalan konkurensi amat penting dalam menghadapi peningkatan data dan tugasan. Artikel ini akan memperkenalkan beberapa perkara yang perlu diberi perhatian dalam pembangunan C# dari dua aspek: pengaturcaraan berbilang benang dan kawalan konkurensi. 1. Pengaturcaraan berbilang benang Pengaturcaraan berbilang benang ialah teknologi yang menggunakan sumber berbilang teras CPU untuk meningkatkan kecekapan program. Dalam program C#, pengaturcaraan berbilang benang boleh dilaksanakan menggunakan kelas Thread, kelas ThreadPool, kelas Tugas dan Async/Await. Tetapi apabila melakukan pengaturcaraan berbilang benang

Nota Pembangunan C#: Kerentanan Keselamatan dan Pengurusan Risiko Nota Pembangunan C#: Kerentanan Keselamatan dan Pengurusan Risiko Nov 23, 2023 am 09:45 AM

C# ialah bahasa pengaturcaraan yang biasa digunakan dalam banyak projek pembangunan perisian moden. Sebagai alat yang berkuasa, ia mempunyai banyak kelebihan dan senario yang boleh digunakan. Walau bagaimanapun, pembangun tidak seharusnya mengabaikan pertimbangan keselamatan perisian apabila membangunkan projek menggunakan C#. Dalam artikel ini, kita akan membincangkan kelemahan keselamatan dan pengurusan risiko serta langkah kawalan yang perlu diberi perhatian semasa pembangunan C#. 1. Kerentanan keselamatan C# biasa: Serangan suntikan SQL Serangan suntikan SQL merujuk kepada proses di mana penyerang memanipulasi pangkalan data dengan menghantar kenyataan SQL yang berniat jahat kepada aplikasi web. untuk

See all articles