Posted under C# (csharp)
Giriş
Dünyada sayıları sürekli artan birbirinden farklı bilgisayar sistemleri, farklı iletişim protokollerini kullanmaya eğilimliler. Her sistemin kendine has iletişim protokollerini kullanması bilişim sektöründe büyük sıkıntılara yol açmaktadır. Çünkü hızla gelişen dünya ekonomisinde bilgisayar sistemlerinin biribirleri ile haberleşmeleri şart hale gelmiştir. Bu büyük sorunu aşmak için şirketler ve geliştiriciler sürekli bir çaba içinde olmak zorunda kalıyorlar.
Çok az sayıda şanslı insanın interneti kullanabildiği günlerde, internetin bu kadar hızlı bir biçimde hayatının içine her yönüyle gireceği tahmin edilmemişti. Öyle ki internet ile bilişim sektörü ayrı bir ivme kazandı. Bu ivme ile bilgisayar dünyasında sürekli yeni ve daha gelişmiş teknolojiler çıkmaya devam ediyor. Bu gelişmelerin sonucu olarak dünyayı tam olarak “global köy” şeklinde görmek için en azından bilgisayar sistemlerin biribirleriyle iletişime geçebilmesi için minumum standartların olması şart haline geldi.
Önceleri sadece internet için birkaç tane standart vardı. Bunlar http ve ftp gibi. Bunun yanında bilişim sektöründe lider şirketler kendilerine ait standlarını intranet (yerel ağ) ortamlarında başarı ile çalıştırıyorlardı. Diğer taraftan farklı sistemlerin bilgi paylaşım ihtiyaçlarının giderek artması durumuna çözüm olarak bilişim devleri açık standartlar geliştirmeyi düşünmeye başladılar.
Unix işletim sistemi 70’lerde geliştirilirken veya yeni çıkan işletim sistemleri tasarım aşalamarında internetin bu kadar büyük bir öneme sahip olacağı tahmin edilememişti. İnternet için yeni yeni ortaya çıkan standartlar ve uygulamar için işletim sistemlerine sürekli olarak yamalari ve eklentileri yüklemek zorunda kaldık (hatta kalıyoruz). Mesela web sunucuları bunların en önemlilerinden birisidir. Bu eklenti ve yamalar tam olarak istenilen performansı vermekten uzak yazılım parçalarıdır. Çünkü bu programların kullandıkları protokollere işletim sistemleri tam olarak içten bir destek vermiyorlar.
Microsoft Haricindeki Platformlar
Microsoft haricindeki platformların bir çoğunda gözden kaçan çok önemli bir faktör işletim sistemleri interneti temel alarak yazılmamış olmasıdır. Ama Windows 200 Server işletim sistemine internet tabanlı diyebiliriz. Bu durumda maalesef diğer sistemlerin bir çoğu tam olarak COM/DCOM teknolojilerini bile tam olarak desteklemiyorlar.
Microsoft Platformu
Geçmişten günümüze bilgisayar dünyasında Microsoft’un bir çok platformu önemli yerlere sahip olmuşlardır. Mesela DOS, Windows 95, Windows 98, Windows NT ve şu sıralar Windows 2000 ve Windows XP gibi. Microsoft’un diğer önemli teknolojileri olarak Activex, COM/DCOM, COM öne çıkmıştır. Bu teknolojilerin hepsinde bir takım birbirine benzer Uygulama geliştirme arayüzlerini (API) kullandık. Her yeni çıkan teknoloji için yeni API’leri programcıların hizmetine sunarken programcıların yazılım geliştirme tekniklerinde pek bir değişiklik olmamıştır. Her ne kadar MFC nesne yönelimli bir yapıda olsa da aslında Win 3.1 için hazırlanan C kütüphanesine çok benzemektedir.
COM Teknolojisinin Ortaya Çıkışı
COM’un nasıl doğdunu anlamak için isterseniz COM’a kadar olan benzer türdeki değişimlere bir göz atalım. Aşağıda COM’dan önceki ve sonraki gelişmeler yer almıştır:
- Library Functions
- DLL’s
- OLE
- VBX/OCX
- COM
- COM+
- .NET
Tüm modern programlama dilleri (C#’ın kendine ait bir kütüphanesi yoktur !) temel ve çok kullanılan fonksiyonları barındıran bir kütüphaneler ile programcının önlerine gelir. Kütüphanelerde bir çok gerekli fonksiyonlar hazır bulunduğu için onları kullanmak programlama işini kolaylaştırır. Kütüphanelerde bulunan özelliklerin program içine dahil edilmesi derleme zamanında yapıldığı için buna ” kütüphanelerin statik bağlanması” denir. Bu tür bağlama daha çok C/C++, Pascal ve COBOL dillerinde görülür. Daha sonra hafızanın daha iyi kullanılması isteği ve daha iyi başarım için bu kütüphanelerin çalışma zamanında bağlanması popüler hale gelmiştir. Çalışma zamanında kütüphanaler DLL’lerin (Dynamic Link Libraries) içinden çağrılıyor. DLL teknolojisinin önemli bir sorunu dll kütüphaneleri programlama dili bağımlıydı. Bu kısıtlamaları aşmak için uzmanlar başka dillerin oluşturduğu ve diğer programların sahip oldukları özelliklerin yeni programlarda kullanma yolunda çalışmalarını yoğunlaştırdılar.
Yukarıdaki yenilikleri Microsoft Office paketinde başarı ile uyguladı. Böylece değişik ofis programlarından(Word, Excel , PowerPoint) nesneler herhangi birinde sorunsuz olarak çalışmaktaydı. Mesela bir Word belgesi içine Excel sayfası eklemek gibi.. Microsoft bu yaklaşımını Object Linking and Embedding (OLE) olarak adlandırıyor.
Bizler OLE’nin aslında nesneler arası haberleşmeden başka birşey olmadığını ve bunun arayüzler arayıcılığı ile gerçekleştirildiğini bilmeliyiz. OLE’nin başardığı fonksiyoneliteyi aslında VB ve VC++ ile Microsoft dışındaki programcılar da başarabilir.
Program kodlarının tekrar kullanılabilirliği yönündeki diğer yaklaşım VBX ve OCX kontrolleriydi. Bu kontrolleri sürükle - bırak ile kolayca programlarımıza ekleyebiliriz. VBX kontrollerinin arkasındaki temel düşünce üçüncü parti kod yazarlarının geliştirdikleri fonksiyonları diğer programcıların hizmetine olabildiğince VB runtime ile sunmaktır. Diğer taraftan OCX kontrolleri sadece VB ile değil bu işletim sistemindeki başka uygulmama geliştirme araçları ile de kullanılması için özelleştirilmiştir. VBX ve OCX kontrolleri ile derlenmiş program kodlarının tekrar kullanılması fikrinin yansılmasıdır.
COM ise kodların tekrar kullanılması konusundaki en önemli kilometre taşı olmuştur. COM hem dil bağımsızdır hem de içerisindeki fonksiyonların geniş çapta kullanılmasına olanak sağlar. COM+ hizmetleri teknolojisi ise COM’un bir sonraki versiyonudur. Windows NT 4.0’a eklenen MTS (Microsoft Transaction Server) kabiliyetlerini kulllanan programcılar bu yapıyı Windows 2000 sunucularında işletim sistemine entegre olarak gelmiştir.
COM Teknolojisinin Sorunları
Bileşen geliştirme milyarlarca dolarlık bir Pazar halini almıştır. Bir çok yazılım şirketleri bileşen geliştirme konusunda uzmanlaşmışlardır. Tabi ki bu sayede büyük miktarda karlar ediyorlar. COM büyük başarılara imza atmasına rağmen, beraberinde birçok sorunu da getirmiştir. Aşağıda bu sorunları sıralıyoruz:
Evet COM ile sadece bize bileşenin sunduğu özelliklerden faydalanabiliriz. Gerektiğinde kendi sınıflarımızı COM bileşinin sahip olduğu sınıflara dayandıramayız ve bileşinin sahip olduğu özellikleri genişletemeyiz.
Bir makinaya yüklenen COM bileşenine o makinada çalışan diğer progamların da erişim hakkı vardır. COM bileşeni Registry’e kaydedilince iki tane girdi oluşur sistemde. Birincisi Registry’de diğeri ise sabit diskte. Sistemin Registry’si tüm programların ortak erişim alanı olduğu için bu durum bir çok sorunlara sebebiyet verir. Mesela versiyon çakışmaları gibi.