|
.NET için COM'a Giriş |
|
Gönderiliyor lütfen bekleyin... |
|
|
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
70lerde 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 Microsoftun 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. Microsoftun 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
APIleri 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ışı
COMun nasıl doğdunu
anlamak için isterseniz COMa kadar olan benzer türdeki değişimlere bir göz
atalım. Aşağıda COMdan önceki ve sonraki gelişmeler yer almıştır:
- Library Functions
- DLLs
- 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 DLLlerin (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 OLEnin
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. OLEnin 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 COMun bir sonraki versiyonudur. Windows
NT 4.0a 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:
- Tam anlamıyla
kodun tekrar kullanılamaması
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.
- Gloab Erişim
Bir makinaya yüklenen COM bileşenine o makinada çalışan diğer progamların
da erişim hakkı vardır. COM bileşeni Registrye kaydedilince iki tane girdi
oluşur sistemde. Birincisi Registryde diğeri ise sabit diskte. Sistemin
Registrysi tüm programların ortak erişim alanı olduğu için bu durum bir çok
sorunlara sebebiyet verir. Mesela versiyon çakışmaları gibi.
- Karmaşıklık
COM bileşenlerinde değişik thread modelleri kullanılabilir. COM bileşenlerine
dayanan uygulamarı geliştirirken kullandığımız dilin, programın çalışacağı
makinadaki işletim sisteminin ve COM bileşenin thread modelleri arasındaki
uyumluluğu çok dikkat etmeliyiz. Aksi takdirde performans ve uyumsuzluk sorunları
baş gösterir. Thread modellerinin bağımlılığı COM kullanılan programlar yazmayı
çok karmaşık hale getirir.
- Farlı Platformlarda
çalışma Teorik olarak bizler herhangi bir dil ile COM bileşenini yazabiliriz.
Fakat uygulamada bu tam olarak böyle değildir. Mesela VB ile yazılan bir COM
bileşeni Microsoft işletim sistemlerinde sorunsuz çalışır. Eğer bu bileşen
ASP uygulaması içinse ve biz bu uygulamayı Chili ASP ile Unix veya Linux platformuna
taşımak istersek büyük bir sorunla karşılaşırız. Sorunun çözümü ise tüm COM
bileşenlerini baştan oturup C++ ile yazmaktır. Tabii ki yeniden C++ ile yazmak
çok masraflı olur.
- Microsoftun
dilleri arasındaki farklılık Bildiğimiz gibi MS kendine ait bir çok programlama dili
geliştirmiştir. Bunlardan VB, VC++ (MFC kütüphanesi ile) ve VJ++ (MFC ile)
en önemlileridir. Bu dillerin hepsini kullanarak uygulama geliştirme şansımız
vardır(COM sayesinde). Fakat her bir dil farklı farklı APIye sahiptir.
Kütüphaneleri o kadar farklıdır ki birini öğrenince diğer kütüphaneyi de sıfırdan
öğrenmek zorunda kalırız. Halbuki, MS dilleri Windows işletim sistemleri içindir
ve aynı firma tarafından çıkartılmıştır. Oysa bu dillerin hepsinin kütüphanlerinin
arayüzleri aynı olabilirdi ve programcıların işlerini çok kolaylaştırırdı.
(.NET ile bu soruna çözüm gelmiştir!)
- Versiyonlama
Sorunları
COM kullanırken yüz yüze gelinen bir diğer büyük problem COM bileşenlerinin
versiyonlarının çakışmasıdır. Diyelim bir uygulamamızın özelliklerini artırmak
için var olan bir COM bileşenin yeni bir versiyonunu yazdık. Bu yeni COM
bileşenini bilgisayara kaydedince önceki kaydın üstüne yazmaktan başka bir
çıkış yoktu. Ama başka bir veya daha fazla programımız bu bileşenin eski
versiyonunu kullanıyorsa! İşte size çok büyük bir sorun daha...
- IIS Web Sunucunun
Tekrar Başlatılması ASP için yeni bir COM bileşenini Registrye kaydettikten
sonra bu bileşenin kullanılabilmesi için Web Sunucusunun kapatılıp açılması
gerekiyor. Bu işlem büyük çapta işler yapan profesyonel siteler için ciddi
anlamda kayıplara yok açar. Sitedeki her fonksiyonel değişiklik için aynı
işlemleri tekrarlamamız şarttır.
Bu yazıda COM teknolojisine
kadar olan bileşen yazımı konusunu inceledik. Bir sonrakinde ise COM ve .NETin
bieleşen yazımı yaklaşımalarını karşılaştırıcağız. Ayrıca .NET ve COM bileşenlerinin
nasıl birbiri yerine çalışabileceğini öğreneceğiz.
Bu yazı Narayana
R. Suparaneni tarafından yazılmış ve www.c-sharpcorner.comdan
alınmıştır.
Makale:
.NET için COM'a Giriş C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|