| Editor Login | Register | ||
| > Akademik İnternet ® > .Net FrameWork |
|
|
| Remoting 2 |
REMOTINGE GENEL BAKIŞ
.Net Remoting bazı sınıflar kullanır. Bu sınıflar, karşıdaki uygulama domain’nindeki nesneye ulaşabilmek için temel çekirdeği sağlar. .Net Remoting işleminde, kullanıcı metodları direk olarak çağırmaz. Bunun yerine, uzaktaki nesneyi çağırmak için proxy nesnesini kullanır. Bizim tanımladığımız her public metod , remote nesne sınıfında kullanıcı tarafından çağırılabilir. Remoting framework’un kullandığı iki format vardır; Binary ve SOAP. Binary format oldukça hızlıdır ve kodlama için ikilik sistem kullanır. SOAP formatı binary formatına göre yavaştır.Yavaş olmasına rağmen yazılım geliştiriciye, mesajını SOAP formatında gönderebilmesine olanak sağlar. Bilindiği gibi SOAP formatında kodlamanın temeli XML yapısına dayanmaktadır. Bir standart haline gelen XML sayesinde diğer sistemlerle iletişim kurmak daha kolaydır.
Şekil-1: .Net Remoting Mimarisi Proxy nesnesi oluşturarak uygulama domain’leri arasında iletişimi sağlarız demiştik Nesneler arasındaki iletişim ve uygulamaların karşılıklı konuşmasında serialization ve deserialization işlemleri uygulanır. Bu işlemler marshaling ile yapılır. MARSHALLING Remote edilebilecek nesne, uygulama domain’inde marshall edilebilen nesnedir. Bunun haricinde bilinen tüm nesneler non-remotable nesnelerdir. İki çesit remote nesnesi vardır: Marshall by Value Nesneleri (MBV): Bu tip nesneler sunucu üzerinde bulunurlar. Kullanıcı MBV nesnesi üzerinden bir metod çağırdığında, MBV nesnesi sunucu tarafından serialize(belirlenen formatta kodlama) edilerek ağ üzerinden istemciye aktarılır. İstemci gelen nesneyi deserilization (belirlenen formatta kod çözme) işlemine tabi tutarak istediği bilgiyi elde eder. MBV ağ uzerinde gidip gelmelerin sayısını azalttığı için yüksek performans sağlar. Fakat büyük nesnelerle çalışıldığında, o nesnenin serialize edilip sunucuya gönderilmesi ve istemci tarafında deserialize işlemi yapılması oldukça zahmetlidir. Seralization özelliğini tanımlayarak MBV nesnesi oluşturabiliriz. MBV nesnesinin tanımlanması: KANALLAR Kanallar, işlem ve uygulama domaini çerçevesindeki nesnelerin gönderdiği mesajların uzaktaki nesneye gönderilmesini ve diğer nesnelerle iletişimini sağlayan yollardır. Kullanıcı uzaktaki nesneden herhangi bir metodu çağırdığında, metot detaylarıyla birlikte kanalın içinden uzaktaki nesneye transfer edilir. Karşı taraftaki nesneden geri döndürülen herhangi bir sonuç yine aynı kanal üzerinden istemciye ulaşır. Uzaktaki nesne çağrılmadan önce , sunucu üzerinde kayıtlı en azından bir kanal var mı diye sorgulamayı Remoting FrameWork’u yapar. Benzer şekilde, kullanıcı tarafında uzaktaki nesne ile iletişim kurmadan önce, özel kanalının olup olmadığına bakılır. Eğer uzaktaki nesne bir kanaldan fazla özel kanal imkanı sunuyorsa, istemci bu seçeneklerden kendisine en uygun olanını kullanarak iletişim kurar. Kanalın yapısına baktığımızda; kanal iki uca sahiptir. Bir ucunda sunucu, diğer ucunda kullanıcı. Sunucu ucunda , sunucu belirli protokoller aracılığı ile belirlenen porttan ağı dinler ve gelen nesneleri kabul eder. Diğer ucundaki istemci yine belirli protokolleri kullanarak belirlenen kanal aracılığı ile bilgiyi sunucuya gönderir. Kanalda yapılacak işlemlerde belirli arayüzler kullanılır. Kabul edilen nesne tarafında IchannelReceiver arayüzünü, ve gönderilen mesajın üzerinde işlem yapmak içinde IchannelSender arayüzünü kullanırız. Üç çeşit temel kanal vardır. Bunlar HTTP, TCP, SMTPdir. HTTP kanalı, mesajın transferi sırasında SOAP formatını kullanır. Bütün mesajlar SOAP formatı içinde gider. Mesaj , SOAP formatının temeli olan, XML şeklinde serialize edilir . TCP kanalı, binary formatı kullanır. Bütün mesajlar ikili kod şeklinde serialize edilir ve o şekilde transfer edilir. SMTP mail üzerinden remoting işlemi sağlayan bir kanaldır. Üzerinde fazla durmayacağım . .Net HTTP ve TCP kanallarını kullanımı hazır olarak sunar. Eğer farklı kanallar kullanmak istersek, kendi kullacağımız kanalı IchannelReceiver ve IchannelSender arayüzlerini kullanarak tanımlayabiliriz. HTTP Kanalı Dim kanal As HttpChannel = New HttpChannel(8085) TCP kanalı uygulamalarında, System.Runtime.Remoting.Channels.Tcp namespace’sindeki sınıfları kullanır. TCP Channel Sınıfı Dim kanal As TcpChannel = New TcpChannel(8050) HTTP ile TCP Kanal Arasında Seçim Yapmak Güvenlik : .NET ile dahili gelen bir güvenlik mekanizması yoktur. Güvenlik nesneyi sunan sunucu tarafından kontrol edilir. Uzaktan erişimli nesnelere dahili bir güvenlik mekanizması sunan tek sunucu IIStir. Bu yüzden tüm önemli nesneler IIS üzerinden yayınlanmalıdırlar. Karşılaştırma: 2-HTTP kanalı kullanımı verimliliği azaltır.. Bunun sebebi, HTTP protokolüyle gelen ek yüklerdir. TCP ise HTTPye oranla daha verimli çalışır. Çünkü TCP ağ üzerinde bilgi transferi için ek yük getirmeyen ham soketleri kullanır. FORMATTERS Formatters; mesajın kanal üzerinde transferinden önce , serialize edilerek belirlenen formatta kodlanmış hale dönüştürme işleminde kullanılır. Kanalın diğer ucuna mesaj belirlenen formatta iletildiğinde, aynı formatta kod çözme işlemine tabi tutularak istenen bilgi elde edilmiş olur. SOAP Formatter SOAP formatını için System.Runtime.Serialization.Formatters.Soap namespacesi’ndeki SoapFormatter sınıfı kullanılır. Bu formatter uyumsuz yapıdaki uygulamalar arasında iletişimi sağlamak için en ideal yoldur.Binary formatıyla karşılaştırıldığında, mesajı göstermek için Binary formatından daha fazla bellek alanına ihtiyaç duyar. BINARY Formatter KANALLAR VE FORMATLAR TCP kanalı uzaktaki nesne ile mesaj transferinde varsayılan değer olarak binary formatını kullanır. Binary sınıfı içinde mesajı serialize ve deserialize etmek için BinaryClientFormatterSinkProvider ve BinaryServerFormatterSinkProvider sınıflarını kullanır. Belirtiğim bu özelliklerin yanı sıra, bu kanallar istediğimiz şekilde yapılandırılabilir. HTTP kanalı SOAP formatı yerine Binary formatında veya istenen özel bir formatta ayarlanarak kullanılabilir. Aynı şekilde TCP kanalları Binary formatı yerine SOAP formatını kullanacak şekilde veya istenen özel bir formata ayarlanabilir. HTTP kanalları SOAP formatı ile maksimum birlikte işlerliği sağlarken, TCP kanalıyla birlikte Binary formatının kullanılması da maksimum verimi sağlar. Üçüncü bölümde nesnelerin çalışma modlarını inceleyeceğiz. |
|
| Bağlantılar: bilgininefendisi.net |
| Open Source Document Project | AUP&TOS |