Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 21.3.2003
Okunma Sayısı : 19396
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 19.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 19.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 19.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 19.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
.NET için COM'a Giriş
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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:

  1. Library Functions
  2. DLL’s
  3. OLE
  4. VBX/OCX
  5. COM
  6. COM+
  7. .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:

  • 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 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.
  • 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.
  • Microsoft’un 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ı API’ye 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 Registry’e 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 .NET’in 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.com’dan alınmıştır.

Makale:
.NET için COM'a Giriş C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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