Makale 10: İstemci Uygulamalarının Çalışma Zamanında Yapılandırılması
Remoting client’larının programmatic configuration’ları Remoting server’lar ile büyük bir oranda benzerlik gösterirler. Ancak kullanılan bazı methodlar değişecektir. Örneğin Remoting server’ın programmatic configuration’ı sırasında kullanılan ve Remotable Type’ın register edilmesini sağlayan RemotingConfiguration.RegisterWellKnownServiceType method’u Remoting client’larında RemotingConfiguration.RegisterWellKnownClientType şeklinde kullanılmaktadır.
Client-Server farkı bağlamında değişen bu methodlar haricinde channel, formatter gibi configuration bilgileri her iki taraf için de aynı şekilde tanımlanmaktadır.
Remoting server’larının programmatic olarak nasıl configure edilebileceğini görelim.
RemotingClient.cs
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Collections; using ConfigCliAppProg.RemObjects; namespace ConfigCliAppProgrammatic { class RemotingClient { static void Main(string[] args) { IDictionary channelProperties = new Hashtable(); channelProperties.Add("name", "MyTcpChannelName"); channelProperties.Add("port", "1234"); channelProperties.Add("priority", "1"); TcpChannel tcpChannel = new TcpChannel(channelProperties, new SoapClientFormatterSinkProvider(), new SoapServerFormatterSinkProvider()); ChannelServices.RegisterChannel(tcpChannel, false); RemotingConfiguration.RegisterWellKnownClientType(typeof(MyRemoteObject), "http://localhost:1234/MyRemoteObject.rem"); Console.WriteLine("I am now connected to the Remoting server..."); Console.WriteLine("Press Enter to exit."); Console.ReadLine(); } } }
Yazmış olduğumuz kodları sırasıyla şu şekilde açıklayalım.
- Daha önce öğrenmiş olduğunuz şekilde TCP protokolünü kullanan channel’ı register ettik.
- MyRemoteObject type’ındaki object’lerle ilgili işlemler için bu object’in instance’ının hangi URL’de olduğunu register ettik.
Visual Studio üzerinde uygulamayı çalıştırdığımızda karşımıza aşağıdaki ekran gelir:
RemotingClient class’ı içerisinde kullandığımız bazı method’lar ve görevleri aşağıdaki gibidir.
Method
|
Görev |
RemotingConfiguration.RegisterWellKnownClientType | Uygulamayı geliştirmeden önce geliştirilen remotable type’ın (ör: MyRemotableType) Remoting client’ı üzerinde Server Activated Object register edilmesini sağlar. |