Home Contact RSS

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.

Leave a Comment