OLE Otomasyonu

Vikipedi, özgür ansiklopedi

Microsoft Windows uygulama programlamasında, OLE Otomasyonu (daha sonra basitçe Otomasyon olarak yeniden adlandırıldı[1][2]), Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği (yani özelliklerini ayarlayabildiği veya yöntemleri çağırabildiği) bir altyapı sağlamaktadır.[3] Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.

Adının aksine, bazı Otomasyon nesneleri OLE ortamlarında kullanılabilse de, otomasyon nesneleri mutlaka Microsoft OLE kullanmaz. Karışıklığın kökleri, daha önce aşağı yukarı COM ile eşanlamlı olan Microsoft'un daha önceki OLE tanımında yatmaktadır.

Avantajlar ve sınırlamalar[değiştir | kaynağı değiştir]

Birlikte çalışabilirliği sağlamak için otomasyon arabirimleri, tüm COM türlerinin bir alt kümesini kullanacak şekilde sınırlandırılmıştır.[4][5] Özellikle, otomasyon arabirimleri, ham COM dizileri yerine SAFEARRAY kullanmalıdır.

Ancak otomasyonla uyumlu COM sunucuları, yerleşik OLE sıralama uygulamasına güvenebilmektedir.[6] Bu, işlem dışı sıralama için ek proxy/saplama projelerine olan ihtiyacı ortadan kaldırmaktadır.

Kullanım şekli[değiştir | kaynağı değiştir]

Otomasyon, komut dosyası oluşturma kolaylığı göz önünde bulundurularak tasarlanmıştır. Bu nedenle denetleyiciler genellikle son kullanıcılara Visual Basic for Applications gibi diller sağlayarak, komut dosyaları aracılığıyla otomasyon nesnelerini kontrol etmelerine olanak tanımaktadır. Otomasyon nesneleri genellikle geliştirmeyi basitleştirmek için C++[7] özniteliklerinin kullanılabileceği C++ gibi geleneksel dillerde yazılmaktadır. Visual Basic ve Borland Delphi gibi diller ayrıca temel uygulamanın karmaşıklığını gizleyen Otomasyon için uygun bir sözdizimi sağlamaktadır.[8]

Tür kitaplıkları[değiştir | kaynağı değiştir]

Bir uygulamayı otomatikleştirmek için, bir otomasyon denetleyicisinin geliştiricisi, etkinleştirme nesnelerini dışa aktaran hedef uygulama tarafından kullanılan nesne modelini bilmelidir.[9] Bu, hedef uygulamanın geliştiricisinin nesne modelini herkese açık olarak belgelemesini gerektirmektedir. Hedef uygulamanın nesne modeli bilgisi olmadan otomasyon kontrolörlerinin "zordan imkansıza"[10] geliştirilmesidir. Bu komplikasyonlar nedeniyle, Otomasyon bileşenlerine genellikle sınıflar, arabirimler ve bir nesne kitaplığı tarafından sunulan diğer özellikler hakkında meta veriler içeren tür kitaplıkları sağlanmaktadır. Arayüzler, Microsoft Arayüz Tanımlama Dili'nde açıklanmıştır. Tür kitaplıkları, Microsoft OLE/COM Nesne Görüntüleyici (oleview.exe, Microsoft Platform SDK'nın bir parçası) veya Visual Basic'teki Nesne Tarayıcı (sürüm 6'ya kadar) ve Visual Studio .NET gibi çeşitli araçlar kullanılarak görüntülenebilmektedir. Tür kitaplıkları, COM ile Microsoft .NET ve Java gibi diğer platformlar arasında birlikte çalışmak için Proxy kalıbı/saplama kodu oluşturmak için kullanılmaktadır. Java yerleşik COM desteğinden yoksun olsa da, JACOB[11] ve jSegue gibi araç setleri, tür kitaplıklarından proxy kaynak kodu (iki bölümden, bir dizi Java sınıfından ve bir Java Yerel Arabirim DLL'si için bir C++ kaynağından oluşur) oluşturabilmektedir. Bu çözümler yalnızca Windows'ta çalışmaktadır.

Microsoft, Microsoft Office'teki[12] tüm uygulamaların nesne modelini herkese açık olarak belgelemiştir ve diğer bazı yazılım geliştiriciler de uygulamalarının nesne modellerini belgelemiştir. Nesne modelleri, ODL'de açıklanan arayüzleri ile tip kitaplıkları olarak otomasyon kontrolörlerine sunulmaktadır

Dil desteği[değiştir | kaynağı değiştir]

Otomasyon, aşağıdakiler dahil ancak bunlarla sınırlı olmamak üzere çeşitli diller için mevcuttur:

Ayrıca bakılabilir[değiştir | kaynağı değiştir]

Ek bilgiler[değiştir | kaynağı değiştir]

Ek bağlantılar[değiştir | kaynağı değiştir]

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Microsoft Corporation. "Automation (MFC)". MSDN. 18 Şubat 2008 tarihinde kaynağından arşivlendi. 
  2. ^ KruJ.; Wingo, Scott; Shepherd, George. "Chapter 25: Automation". Programming Microsoft Visual C++ 6.0 (5.5yıl=1998 bas.). Redmond, WA: Microsoft Press. ISBN 978-1-57231-857-1. 
  3. ^ Gordon McComb (1997). "Using OLE Automation to Control WordPerfect". 15 Ağustos 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Temmuz 2006.  — McComb describes how to use OLE Automation instead of DDE to control WordPerfect
  4. ^ Microsoft MSDN: oleautomation attribute 13 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  5. ^ Microsoft MSDN: Automation-Compatible Types 11 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  6. ^ Microsoft MSDN: Marshaling Details (COM) Type Library Marshaling community additions 9 Mart 2016 tarihinde Wayback Machine sitesinde arşivlendi.
  7. ^ Chris Oakley. "OLE Automation for C++ programmers". 24 Haziran 2012 tarihinde kaynağından arşivlendi. 
  8. ^ MSDN Magazine: C++ Attributes: Make COM Programming a Breeze with New Feature in Visual Studio .NET 19 Ocak 2015 tarihinde Wayback Machine sitesinde arşivlendi.
  9. ^ a b Yehuda Shiran and Tomer Shiran. "OLE Automation in JavaScript". WebReference. 10 Mayıs 2000 tarihinde kaynağından arşivlendi.  — despite the title, the article discusses JScript rather than JavaScript
  10. ^ Bruce Armstrong (16 Ocak 2006). "OLE — Extending the Capabilities of PowerBuilder (Part 2)". PowerBuilder Developers' Journal. 12 (11). 19 Şubat 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Temmuz 2021. 
  11. ^ "j-Interop Java COM interoperability from any platform". 1 Şubat 2009 tarihinde kaynağından arşivlendi. 
  12. ^ "How to find and use Office object model documentation". KnowledgeBase. Microsoft Corporation. 18 Şubat 2008 tarihinde kaynağından arşivlendi. 
  13. ^ "OLE Delph kullanarak otomasyoni". About.com. 9 Kasım 2005 tarihinde kaynağından arşivlendi. 
  14. ^ Kaynak hatası: Geçersiz <ref> etiketi; interop isimli refler için metin sağlanmadı (Bkz: Kaynak gösterme)
  15. ^ "Open Object Rexx". 7 Şubat 2005 tarihinde kaynağından arşivlendi. 
  16. ^ Jan Dubois (Yaz 1998). "Win32::OLE". The Perl Journal. 3 (2). 5 Mayıs 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Temmuz 2021. 
  17. ^ The PHP Group (25 Temmuz 2006). "PHP: COM and .Net (Windows)". 27 Ocak 2001 tarihinde kaynağından arşivlendi. 
  18. ^ Mark Hammond. "Python for Windows Extensions". 3 Ağustos 2003 tarihinde kaynağından arşivlendi. 
  19. ^ Sourceforge. "Comtypes Python package". 23 Ekim 2004 tarihinde kaynağından arşivlendi. 
  20. ^ Tcl programmers. "OLE from a Tcl perspective". 15 Haziran 2011 tarihinde kaynağından arşivlendi. 
  21. ^ Stan Littlefield. "OLE TUTORIAL WINBATCH OLE PROGRAMMING". 11 Temmuz 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Nisan 2022.