19-11-2020, Saat: 02:27
(Son Düzenleme: 19-11-2020, Saat: 12:50, Düzenleyen: TescilsizUzman.)
Merhabalar,
Com Kullanımı Hakkında Bilgi veren ve neden Gerekli Olduğunu hakkında küçük bir makale yazmak isterim....
Com(Component Object Model) Nedir ?
COM 1993 yılında Microsoft tarafından Object Linking and Embedding (OLE) 2.0 ‘ı desteklemek için çıkmıştır.
Uygulama ve yazılım bileşenleri arasında köprü görevi gören interface için oluşturulmuş bir binary standarttır.
Component’ler (bileşenler) ‘i bir binary dosya olarak düşünürsek uygulamalar erişmek istediğinde bu interface’lere erişirler.
Windows’da bileşenlerin bir biriyle konuşabilmesi için bir standart da diyebiliriz.
COM+, COM’un performans ve güvenlik açısından daha gelişmiş bir modelidir.
COM+, özellikle enterprise ortamda kullanılması için COM’a authentication, transaction management, pooling gibi özellikleri kavuşturulması için çıkmıştır.
DCOM (Distributed COM) ‘ı ise bir extension olarak düşünebiliriz. Network üzerinden componentlerin birbiriyle haberleşmesini sağlar.
DCOM, bir RPC protokolüdür de diyebiliriz.
COM, Microsoft’un .NET’den önce gözde teknolojisiydi ve teknoloji hala kullanılmaktadır.
COM, .NET gibi bir framework yüklenmesine ihtiyaç duymaz.
ADSI, WMI birer COM örneğidir.
COM teknolojisinin geneldeki dili C++ ‘dır ve genelde dll olarak paketlenirler
Derlene bilecek Diller c++,Delphi,C#,C
Com(Componenet Object Model) Neden Kullanmalıyız...
1.İlk olarak bir kütüphaneye ihtiyaç duymazlar bu yüzden farklı yazılım dillerinde kütüphane olarak rahatlıkla kullanılabilirler
2. C# gibi çok hızlı bir şekilde unpack olabilen dillerde c++ veya delphi gibi unpack yapılması c# a nazaran daha zor olan diller(c++,Delphi) ile yazılır Data Acces Layer katmanını bu dillerden birisinde yazıp lisans sorununa bir çözüm olabilirler.
3. Nesne yönelimli Programlama ile Kullanışlı Kütüphaneler Yazılabilir
4. Delphi 7 de bulunan bazı componetlerin delphi daha üst sürümlerinde çalışmaması durumda çözüm olabilirler....
5. Web Uygulamaların Php(Laravel,WordPress),Asp asp.net,Mvc,.net core Gibi Ui veya Templates Kısımlarını Şifrelemek İçin Kullanılabilirler. Buna örnek Verecek Olarak IonCube c++ bir component olarak yazılmıştır
Delphi'de Com(Component Object Model) Nasıl Oluşturabiliriz.
1.File > New > Other Tıklanarak Oluşturulabilecek Proje türleri Ekranı Açılır
2. Açılan Menüden Activex Klasörünün Altında bulunan Activex Library Seçilerek Proje Oluşturulur
3. Proje Oluşturulduktan sonra Tekrar File > new > Other a Tıklanır
4.Açılan Pencerede Tekrar Activex Klasörü Seçilir ve Com Object Projesi
5. Ok butonuna bastıktan sonra Karşımıza Com Object Wizard Penceresi açılacaktır Burda
CoClass name alına Uygulama Adı Yazılır ve ok butununa basılır
Buraya Kadar aslında temel Bir Com(Component Object Model) Oluşturmuş olduk isterseniz burdan direk olarak sadece metot ekleyerek de devam edebilirsiniz ama ben şuan size nesneye yönelimli olarak bir Com Object Nasıl oluşturacağımızı anlatacağım devam ediyoruz...
6. Bir Önceki bölümde Application Adında bir interface ve Unit2.pas adında bir Class Oluşturduk şimdi Ana Nesneye Bağımlı Bir Interface daha oluşturacağız 3-4-5. Adımları Tekrarlayınız..
7. Aşağıdaki Resimde Gördüğünüz gibi 2 adet interface'miz oluşmuş oldu
1. Iapplication > Main Interface
2. IChildApp > Ana Interfaceye bağımlı çalışacak olan Çocuk Interfacemiz
Ichildapp isimli ınterfacenin üzerine sağ tıkladıktan sonra Açılan menüde new üzerine gelin daha sonra açılan sub menüde en altta bir çizgi göreceksiniz o çizginin altındakiler bu interface için oluşturabileceğiniz tipleri göstermektedir ister metot oluşturursunuz ister prop biz prop oluşturarak devam edeceğiz.
8. Gördüğünüz Gibi Child Interfaceye aslında 1 prop oluşturuk ama 2 tane gözüküyor bunların manası oklar eğer aşşağı gösteriyorsa set metodu yukarı gösteriyorsa get Metotu dur birde aslında bunlar birer prop ama bu propların tiplerini attributes sekmesinden de döndüreceği değeri seçebilirsiniz
Iapplication ınterfacesi içinde bir ReturnMethod adında bir metot oluşturduk bu metotun geri döndüreceği değeri parametres sekmesinden IChildApp Seçiyoruz
Şimdi Sıra Geldi Bir Birine Bağlamaya
unit2 clasının implementation altında unit3 class ını dahil ediyoruz
daha sonra dahil edittikten sonra
TApplication.ReturnMethod nun içinde IChildApp tipinde bir değişken oluşturuyoruz daha sonra unit3 de olan TChildApp nesnesini Create ediyoruz. ve geri dönderiyoruz
Unit2.pas
Unit3.pas
Nesne Yönelimli Com(Component Object Model) oluşturmuş olduk daha sonra build ediyoruz ve dll oluşuyor bu dll bilgisayara register ettikten sonra com destekeleyen her hangi bir dil ile kütüphane olarak kullanabilirsiniz
Visual Studio ile C# Da örnek kullanım
Umarım bu makalenin faydası dokunur
Bu makalede emeği geçen @ismailkocacan Beye teşekkürü borç bilirim
Hayırlı Çalışmalar Dilerim
Com Kullanımı Hakkında Bilgi veren ve neden Gerekli Olduğunu hakkında küçük bir makale yazmak isterim....
Com(Component Object Model) Nedir ?
COM 1993 yılında Microsoft tarafından Object Linking and Embedding (OLE) 2.0 ‘ı desteklemek için çıkmıştır.
Uygulama ve yazılım bileşenleri arasında köprü görevi gören interface için oluşturulmuş bir binary standarttır.
Component’ler (bileşenler) ‘i bir binary dosya olarak düşünürsek uygulamalar erişmek istediğinde bu interface’lere erişirler.
Windows’da bileşenlerin bir biriyle konuşabilmesi için bir standart da diyebiliriz.
COM+, COM’un performans ve güvenlik açısından daha gelişmiş bir modelidir.
COM+, özellikle enterprise ortamda kullanılması için COM’a authentication, transaction management, pooling gibi özellikleri kavuşturulması için çıkmıştır.
DCOM (Distributed COM) ‘ı ise bir extension olarak düşünebiliriz. Network üzerinden componentlerin birbiriyle haberleşmesini sağlar.
DCOM, bir RPC protokolüdür de diyebiliriz.
COM, Microsoft’un .NET’den önce gözde teknolojisiydi ve teknoloji hala kullanılmaktadır.
COM, .NET gibi bir framework yüklenmesine ihtiyaç duymaz.
ADSI, WMI birer COM örneğidir.
COM teknolojisinin geneldeki dili C++ ‘dır ve genelde dll olarak paketlenirler
Derlene bilecek Diller c++,Delphi,C#,C
Com(Componenet Object Model) Neden Kullanmalıyız...
1.İlk olarak bir kütüphaneye ihtiyaç duymazlar bu yüzden farklı yazılım dillerinde kütüphane olarak rahatlıkla kullanılabilirler
2. C# gibi çok hızlı bir şekilde unpack olabilen dillerde c++ veya delphi gibi unpack yapılması c# a nazaran daha zor olan diller(c++,Delphi) ile yazılır Data Acces Layer katmanını bu dillerden birisinde yazıp lisans sorununa bir çözüm olabilirler.
3. Nesne yönelimli Programlama ile Kullanışlı Kütüphaneler Yazılabilir
4. Delphi 7 de bulunan bazı componetlerin delphi daha üst sürümlerinde çalışmaması durumda çözüm olabilirler....
5. Web Uygulamaların Php(Laravel,WordPress),Asp asp.net,Mvc,.net core Gibi Ui veya Templates Kısımlarını Şifrelemek İçin Kullanılabilirler. Buna örnek Verecek Olarak IonCube c++ bir component olarak yazılmıştır
Delphi'de Com(Component Object Model) Nasıl Oluşturabiliriz.
1.File > New > Other Tıklanarak Oluşturulabilecek Proje türleri Ekranı Açılır
2. Açılan Menüden Activex Klasörünün Altında bulunan Activex Library Seçilerek Proje Oluşturulur
3. Proje Oluşturulduktan sonra Tekrar File > new > Other a Tıklanır
4.Açılan Pencerede Tekrar Activex Klasörü Seçilir ve Com Object Projesi
5. Ok butonuna bastıktan sonra Karşımıza Com Object Wizard Penceresi açılacaktır Burda
CoClass name alına Uygulama Adı Yazılır ve ok butununa basılır
Buraya Kadar aslında temel Bir Com(Component Object Model) Oluşturmuş olduk isterseniz burdan direk olarak sadece metot ekleyerek de devam edebilirsiniz ama ben şuan size nesneye yönelimli olarak bir Com Object Nasıl oluşturacağımızı anlatacağım devam ediyoruz...
6. Bir Önceki bölümde Application Adında bir interface ve Unit2.pas adında bir Class Oluşturduk şimdi Ana Nesneye Bağımlı Bir Interface daha oluşturacağız 3-4-5. Adımları Tekrarlayınız..
7. Aşağıdaki Resimde Gördüğünüz gibi 2 adet interface'miz oluşmuş oldu
1. Iapplication > Main Interface
2. IChildApp > Ana Interfaceye bağımlı çalışacak olan Çocuk Interfacemiz
Ichildapp isimli ınterfacenin üzerine sağ tıkladıktan sonra Açılan menüde new üzerine gelin daha sonra açılan sub menüde en altta bir çizgi göreceksiniz o çizginin altındakiler bu interface için oluşturabileceğiniz tipleri göstermektedir ister metot oluşturursunuz ister prop biz prop oluşturarak devam edeceğiz.
8. Gördüğünüz Gibi Child Interfaceye aslında 1 prop oluşturuk ama 2 tane gözüküyor bunların manası oklar eğer aşşağı gösteriyorsa set metodu yukarı gösteriyorsa get Metotu dur birde aslında bunlar birer prop ama bu propların tiplerini attributes sekmesinden de döndüreceği değeri seçebilirsiniz
Iapplication ınterfacesi içinde bir ReturnMethod adında bir metot oluşturduk bu metotun geri döndüreceği değeri parametres sekmesinden IChildApp Seçiyoruz
Şimdi Sıra Geldi Bir Birine Bağlamaya
unit2 clasının implementation altında unit3 class ını dahil ediyoruz
daha sonra dahil edittikten sonra
TApplication.ReturnMethod nun içinde IChildApp tipinde bir değişken oluşturuyoruz daha sonra unit3 de olan TChildApp nesnesini Create ediyoruz. ve geri dönderiyoruz
Unit2.pas
unit Unit2; {$WARN SYMBOL_PLATFORM OFF} interface uses Windows, ActiveX, Classes, ComObj, Project1_TLB, StdVcl; type TApplication = class(TTypedComObject, IApplication) protected function ReturnMethod: IChildApp; stdcall; end; implementation uses ComServ,unit3; function TApplication.ReturnMethod: IChildApp; I:IChildApp; begin I := TChildApp.Create; result := I; end; initialization TTypedComObjectFactory.Create(ComServer, TApplication, Class_Application, ciMultiInstance, tmApartment); end.
Unit3.pas
unit Unit3; {$WARN SYMBOL_PLATFORM OFF} interface uses Windows, ActiveX, Classes, ComObj, Project1_TLB, StdVcl; type TChildApp = class(TTypedComObject, IChildApp) protected private FId:SysInt; public function Get_ID(out Value: Integer): HResult; stdcall; function Set_ID(Value: Integer): HResult; stdcall; end; implementation uses ComServ; function TChildApp.Get_ID(out Value: Integer): HResult; begin value := FID; result := S_OK; end; function TChildApp.Set_ID(Value: Integer): HResult; begin FID := Value; result := S_OK; end; initialization TTypedComObjectFactory.Create(ComServer, TChildApp, Class_ChildApp, ciMultiInstance, tmApartment); end.
Nesne Yönelimli Com(Component Object Model) oluşturmuş olduk daha sonra build ediyoruz ve dll oluşuyor bu dll bilgisayara register ettikten sonra com destekeleyen her hangi bir dil ile kütüphane olarak kullanabilirsiniz
Visual Studio ile C# Da örnek kullanım
Umarım bu makalenin faydası dokunur
Bu makalede emeği geçen @ismailkocacan Beye teşekkürü borç bilirim
Hayırlı Çalışmalar Dilerim