Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Nesne Yönelimli Özel Com(Component Object Model) Oluşturma
#1
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

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
Cevapla
#2
Elinize sağlık
Cevapla
#3
Ellerinize sağlık, kısa öz ve açıklayıcı olmuş.
Görseller umarım daha sonra silinmez.
WWW
Cevapla
#4
(19-11-2020, Saat: 12:22)ismailkocacan Adlı Kullanıcıdan Alıntı: Ellerinize sağlık, kısa öz ve açıklayıcı olmuş.
Görseller umarım daha sonra silinmez.

Resimler konuya doğrudan eklenmiş. Bundan dolayı konu silinmediği sürece silinmeyecektir.
İlginiz ve desteğiniz için teşekkür ederiz @ismailkocacan.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
(19-11-2020, Saat: 12:42)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(19-11-2020, Saat: 12:22)ismailkocacan Adlı Kullanıcıdan Alıntı: Ellerinize sağlık, kısa öz ve açıklayıcı olmuş.
Görseller umarım daha sonra silinmez.

Resimler konuya doğrudan eklenmiş. Bundan dolayı konu silinmediği sürece silinmeyecektir.
İlginiz ve desteğiniz için teşekkür ederiz @ismailkocacan.
@Fesih ARSLAN
Merhaba

ilk 5 resim delphican bünyesinde host ediliyor diğeri images host da 500 kb sınırından dolayı upload yapamıyorum Sad
Cevapla
#6
(19-11-2020, Saat: 12:44)trpersia Adlı Kullanıcıdan Alıntı:
(19-11-2020, Saat: 12:42)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Resimler konuya doğrudan eklenmiş. Bundan dolayı konu silinmediği sürece silinmeyecektir.
İlginiz ve desteğiniz için teşekkür ederiz @ismailkocacan.
@Fesih ARSLAN
Merhaba

ilk 5 resim delphican bünyesinde host ediliyor diğeri images host da 500 kb sınırından dolayı upload yapamıyorum Sad

Eklenmeyen diğer 3 ekran görüntüsünü de konuya ekledim.
Katkılarınızdan dolayı teşekkür ederiz @trpersia.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
Teşekkürler
Cevapla
#8
Elinize Sağlık
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Tasarım Desenleri : Model View Controller uparlayan 7 1.238 22-07-2020, Saat: 10:25
Son Yorum: uparlayan
  Tasarım Desenleri : Model View Presenter uparlayan 1 513 13-07-2020, Saat: 09:29
Son Yorum: Bay_Y
  Tasarım Desenleri : Model-View-ModelView Supervision Controller Kip uparlayan 1 556 05-07-2020, Saat: 12:55
Son Yorum: Halil Han BADEM
  Tasarım Desenleri : Model-View-ModelView Pasif Kip uparlayan 2 666 05-07-2020, Saat: 10:08
Son Yorum: uparlayan
  Object Model İle SQL İşlemleri Yaptırma witalihakko 5 3.383 02-03-2019, Saat: 12:39
Son Yorum: cexx



Konuyu Okuyanlar: 1 Ziyaretçi