Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C#

Cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C#

王林
王林asal
2023-10-09 09:37:021484semak imbas

Cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C#

Cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C# memerlukan contoh kod khusus

Pengenalan:
Dengan perkembangan pesat pengkomputeran awan dan sistem pengedaran, panggilan jauh dan panggilan prosedur jauh (pendek kata RPC) ) semakin menjadi. semakin penting dalam pembangunan perisian. Sebagai bahasa pengaturcaraan yang berkuasa, C# juga menyediakan beberapa alatan dan rangka kerja yang berkuasa untuk mengendalikan panggilan jauh dan RPC. Artikel ini akan memberikan beberapa contoh kod praktikal tentang cara mengendalikan panggilan jauh dan RPC.

1. Konsep asas panggilan jauh
Panggilan jauh merujuk kepada panggilan bersama antara dua atau lebih aplikasi yang dijalankan pada komputer yang berbeza. Dalam C#, anda boleh menggunakan panggilan jauh untuk mencapai komunikasi antara aplikasi pada komputer yang berbeza. C# menyediakan beberapa kelas dan kaedah untuk mengendalikan panggilan jauh, yang paling biasa digunakan ialah .Net Remoting dan WCF (Windows Communication Foundation).

2. Gunakan .Net Remoting untuk melaksanakan panggilan jauh

  1. Buat antara muka perkhidmatan jauh
    Pertama, kita perlu menentukan antara muka perkhidmatan jauh. Dalam C#, kami menggunakan antara muka untuk menentukan kaedah perkhidmatan jauh.
using System;

namespace RemoteCallExample
{
    public interface IRemoteService
    {
        string SayHello(string name);
    }
}
  1. Buat pelaksanaan perkhidmatan jauh
    Seterusnya, kita perlu mencipta kelas untuk melaksanakan antara muka perkhidmatan jauh.
using System;

namespace RemoteCallExample
{
    public class RemoteService : MarshalByRefObject, IRemoteService
    {
        public string SayHello(string name)
        {
            return $"Hello, {name}!";
        }
    }
}
  1. Dayakan panggilan jauh
    Kemudian, kita perlu mendayakan panggilan jauh di bahagian pelayan. Dalam C#, kita boleh menggunakan kelas RemotingConfiguration untuk mendaftar dan mendayakan objek jauh.
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace RemoteCallExample
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpChannel channel = new TcpChannel(8080);
            ChannelServices.RegisterChannel(channel, false);

            RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteService), "RemoteService", WellKnownObjectMode.Singleton);

            Console.WriteLine("Remote service is running.");
            Console.ReadKey();
        }
    }
}
  1. Pelanggan panggilan jauh
    Akhir sekali, kita perlu mencipta pelanggan untuk memanggil perkhidmatan jauh.
using System;

namespace RemoteCallExample
{
    class Program
    {
        static void Main(string[] args)
        {
            IRemoteService remoteService = (IRemoteService)Activator.GetObject(typeof(IRemoteService), "tcp://localhost:8080/RemoteService");

            string result = remoteService.SayHello("John");
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

3. Gunakan WCF untuk melaksanakan panggilan prosedur jauh
Selain menggunakan .Net Remoting, kami juga boleh menggunakan WCF untuk melaksanakan panggilan prosedur jauh.

  1. Buat antara muka perkhidmatan WCF
    Sama seperti menggunakan .Net Remoting, mula-mula kita perlu mentakrifkan antara muka perkhidmatan WCF.
using System.ServiceModel;

namespace RemoteCallExample
{
    [ServiceContract]
    public interface IRemoteService
    {
        [OperationContract]
        string SayHello(string name);
    }
}
  1. Buat pelaksanaan perkhidmatan WCF
    Kemudian, kita perlu mencipta kelas untuk melaksanakan antara muka perkhidmatan WCF.
namespace RemoteCallExample
{
    public class RemoteService : IRemoteService
    {
        public string SayHello(string name)
        {
            return $"Hello, {name}!";
        }
    }
}
  1. Konfigurasi perkhidmatan WCF
    Seterusnya, kita perlu mengkonfigurasi perkhidmatan WCF dalam fail konfigurasi.
<system.serviceModel>
  <services>
    <service name="RemoteCallExample.RemoteService">
      <endpoint address="" binding="basicHttpBinding" contract="RemoteCallExample.IRemoteService" />
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8080/RemoteService" />
        </baseAddresses>
      </host>
    </service>
  </services>
</system.serviceModel>
  1. Pelanggan panggilan jauh
    Akhir sekali, kami boleh menggunakan klien WCF untuk memanggil perkhidmatan jauh.
using System;
using System.ServiceModel;

namespace RemoteCallExample
{
    class Program
    {
        static void Main(string[] args)
        {
            ChannelFactory<IRemoteService> channelFactory = new ChannelFactory<IRemoteService>(new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/RemoteService"));
            IRemoteService remoteService = channelFactory.CreateChannel();

            string result = remoteService.SayHello("John");
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

Kesimpulan:
Artikel ini membentangkan beberapa contoh kod praktikal tentang cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C#. Melalui .Net Remoting dan WCF, kami boleh mencapai komunikasi jauh antara aplikasi C# dengan mudah. Semoga contoh-contoh ini dapat membantu anda.

Atas ialah kandungan terperinci Cara mengendalikan panggilan jauh dan panggilan prosedur jauh dalam pembangunan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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