Makale 12: Sunucu Uygulamasındaki Bir Methodun Senkronize Olarak Çağırılması

Remote object’in instance’ının Remoting server’ı üzerinde oluşturulup Remoting client’a gönderilmesinin ardından Remoting client’ı üzerinde referansı tutulan object Remoting client üzerinde aynen local bir object gibi kullanılabilir. Remoting server’da bulunan ve Remoting client’ında sadece referansı tutulan bu object’lerin herhangi bir method’u call edildiğinde bu işlem tamamiyle Remoting server’ı üzerinde çalışacaktır.

Öncelikle daha önceki makalelerde yazmış olduğumuz Remoting server’ın host ettiği MyRemotableType class’ının özelliklerini hatırlayalım.

Class: MyRemotableType

Access modifier: public

Access Modifier


Return Type Name Purpose
public DateTime GetServerDateTime DateTime class’ının Now property’sini döndürecektir ve RequestCount method’unun döndüreceği requestCount field’ının değerini bir değer arttıracak method’dur.
public int RequestCount requestCount field’ının çalıştırılma zamanındaki değerini geri göndürecek olan method’dur.

Tablo 3.1.2

Remoting Server’ın Development’ı

1. Visual Studio’yu çalıştırın.

2. File > New menüleri altındaki Project seçeneğini seçin.

3. Visual C# > Windows seçeneği altındaki Console Application proje tipini seçin.

4. Name property’sine MyFirstRemotingClient yazın.

5. Location property’sine projeyi oluşturmak istediğiniz klasörün path’ini yazın ve ya Browse seçeneğini kullanarak path’i gösterin.

6. Solution Name property’si otomatik olarak MyFirstRemotingClient şeklinde değişir, eğer değişmemiş ise bu property’ye de MyFirstRemotingClient yazın.

Bu işlemler sonrasında New Project ekranı aşağıdaki şekilde görünür:

NOT

Location property’sinde yazmakta olan “C:\Path\to\Your\Project” path’i seçmiş olduğunuz path’e göre değişiklik gösterektir.

7.     OK butonuna tıklayın.

8.     Karşınıza “Program.cs” isimli bir dosya açık olacak çıkar.

9.     Bu dosyanın ismini Solution Explorer penceresi yardımı ile “MyRemotingClient.cs” olarak değiştirin.

10.  Visual Studio “Program.cs” dosyasının ismini değiştirdikten sonra bu dosya içerisindeki “Program” isimli class’ın ismi otomatik olarak “MyRemotingClient” şeklinde değişir. Değişmemesi durumunda class’ın ismini “MyRemotingClient” olarak değiştirin.

11.  Solution Explorer penceresindeki References klasörüne sağ tıklayarak “Add Reference” seçeneğine tıklayın.

12.  Karşınıza “Add Reference” penceresi çıkar. Bu pencerede “.NET” tab’ındaki “System.Runtime.Remoting” assembly’sini seçin ve OK butonuna tıklayın.

13.  Solution Explorer penceresindeki References klasörüne sağ tıklayarak “Add Reference” seçeneğine tıklayın.

14.  Karşınıza “Add Reference” penceresi çıkar. Bu pencerede “Browse” tab’ını seçerek “MyFirstRemotableType” project’inin bulunduğu klasöre gidin.

15.  Bu klasör içerisinde de sırasıyla “bin” ve “Debug” klasörlerine girerek “MyFirstRemotableType.dll” isimli assembly’yi seçin ve OK butonuna tıklayın.

16.  MyRemotingClient.cs dosyası içerisinde aşağıdaki namespace’leri import edin:

MyRemotingClient.cs dosyasına import edilecek namespace’lerin import edilişleri

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using MyFirstRemotableType;

17.  MyRemotingClient class’ının access modifier’ını public olarak ayarlayın.

MyRemotingClient class’ının “public” access modifier’ına sahip olarak ayarlanması

public class MyRemotingClient

18.  Remote object’in instance’ını IMyRemotableType type’ındaki object’e atayın ve bu object’in üzerindeki GetServerDateTime method’unu call ederek dönen değeri command prompt’a yazdırın.

Remote Object’in instance’ına erişimlesi

IMyRemotableType remoteObject = (IMyRemotableType)Activator.GetObject (typeof(IMyRemotableType), "tcp://localhost:4444/MyRemotableType.rem");

Console.WriteLine(remoteObject.GetServerDateTime());

19.  Remoting server’ınızı ENTER tuşuna basıldığında programı sonlandıracak şekilde ilgili kodu yazın.

Console Application'un ENTER tuşu ile sonlandırılması
Console.WriteLine("Press ENTER to exit.");
Console.ReadLine();

20.  Build menüsünü kullanarak project’i build edin.

21.  Bu işlem sonrasında Visual Studio’nun sol alt köşesinde “Build succeeded” yazısı belirir.

22.  Visual Studio’yu kapatın.

Remoting Client’ının Çalıştırılması

1.     Start menüsü içerisinde bulunan “Run” kısayoluna tıklayın ve karşınıza çıkan ekrana “cmd” yazarak OK butonuna tıklayın.

2.     Açılan ekranda command prompt’a cd command’ını kullanarak MyFirstRemotingClient project’inizin bulunduğu klasöre, oradan da sırasıyla “bin” ve “Debug” klasörlerine girin.

3.     İlgili klasörlere girdikten sonra command prompt’a “MyFirstRemotingClient.exe” yazarak ENTER tuşuna basın.

4.     Bilgisayarınızda herhangi bir firewall uygulaması yüklü olması durumunda karşınıza “MyFirstRemotingClient” uygulamasının internet ve ya network üzerinden bağlantı sağlamasının block’landığına dair bir mesaj gelebilir.

5.     Bu durumda uygulamanın unblock edilmesi gerekir.

6.     Uygulamanın düzgün çalışması durumunda command prompt’ta Remoting server’ın üzerinde çalıştığı bilgisayarın tarih ve saat bilgileri ile birlikte “Press ENTER to exit.” yazısı belirir.

Özet

  • Remote object’ler Remoting server üzerinde create edildikten sonra instance’ları Remoting client’larına gönderilen ve client üzerinde bu object üzerinde bir işlem yapılması durumunda işlem object’in Marshal-by-ref olması durumunda Remoting server’ı üzerinde execute edilecektir.
  • Remoting client’ları hem configuration file kullanılarak hem de programmatic olarak configure edilebilmektedir. Fakat remote object’ler Activator class’ının GetObject method’u kullanılarak erişilebilirler.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *