Nesne Bağlama ve Gömme - Object Linking and Embedding

Nesne Bağlama ve Gömme ( OLE ), Microsoft tarafından geliştirilen ve belgelere ve diğer nesnelere gömme ve bağlantı oluşturmaya izin veren tescilli bir teknolojidir . Geliştiriciler için, özel kullanıcı arabirimi öğelerini geliştirmenin ve kullanmanın bir yolu olan OLE Kontrol Uzantısını (OCX) getirdi. Teknik düzeyde, bir OLE nesnesi, nesnenin gereksinimlerine bağlı olarak, muhtemelen çok çeşitli diğer arabirimlerle birlikte arabirimi uygulayan herhangi bir nesnedir . IOleObject

genel bakış

OLE başka düzenleme için bir belgenin ihracat kısmına bir düzenleme uygulaması verir uygulamanın ardından ek içerikle içe aktarın. Örneğin, bir masaüstü yayıncılık sistemi, OLE kullanarak bir kelime işlemciye bir metin veya bir bitmap düzenleyicisine bir resim gönderebilir . OLE'nin ana yararı, bir metin düzenleyici ve bir resim düzenleyici gibi farklı uygulamalardan bir belgeye farklı türde veriler eklemektir. Bu, bir Bileşik Dosya İkili Biçim belgesi ve belgenin başvuruda bulunduğu bir ana dosya oluşturur. Ana dosyadaki verilerde yapılan değişiklikler, ona başvuran belgeyi hemen etkiler. Buna "bağlama" ("gömme" yerine) denir.

OLE, sürükle bırak ve pano işlemlerini kullanarak farklı uygulamalar arasında veri aktarımı için de kullanılır .

Tarih

OLE 1.0

1990'da piyasaya sürülen OLE 1.0, Microsoft'un Windows'un önceki sürümleri için geliştirdiği orijinal Dinamik Veri Değişimi (DDE) konseptinin bir evrimiydi . DDE, çalışan iki uygulama arasında sınırlı miktarda veri aktarmakla sınırlıyken, OLE, iki belge arasındaki aktif bağlantıları koruma ve hatta bir belge türünü diğerine gömme yeteneğine sahipti .

OLE sunucuları ve istemcileri , sanal işlev tablolarını veya VTBL'leri kullanarak sistem kitaplıklarıyla iletişim kurar. VTBL , sistem kitaplığının sunucu veya istemci ile iletişim kurmak için kullanabileceği bir işlev işaretçileri yapısından oluşur . Sunucu ve istemci kitaplıkları, OLESVR.DLL ve OLECLI.DLL , başlangıçta WM_DDE_EXECUTE iletisini kullanarak kendi aralarında iletişim kurmak üzere tasarlanmıştır .

OLE 1.0 daha sonra , Bileşen Nesne Modeli (COM) ve daha sonra DCOM olarak bilinen yazılım bileşenleri için bir mimari olacak şekilde gelişti .

Bir OLE nesnesi panoya yerleştirildiğinde veya bir belgeye katıştırıldığında, hem yerel Windows biçimlerinde (bir bit eşlem veya meta dosya gibi ) görsel bir temsil hem de temel alınan veriler kendi biçiminde depolanır. Bu, uygulamaların nesneyi oluşturmak için kullanılan uygulamayı yüklemeden nesneyi görüntülemesine ve uygun uygulama yüklenmişse nesnenin düzenlenmesine izin verir.

Nesne Paketleyici dan nakliye, OLE bir bileşeni, Windows 3.1, up to Windows XP bir OLE istemci içine gömülebilir böylece olmayan bir OLE nesnesi "paketlenmiş" izin verir.

OLE 2.0

OLE 2.0, sürüm 1.0 ile aynı hedeflerin çoğunu paylaşan OLE'nin bir sonraki evrimiydi, ancak VTBL'leri doğrudan kullanmak yerine COM'un üzerine yeniden uygulandı. Yeni özellikler OLE otomasyonu , sürükle ve bırak , yerinde etkinleştirme ve yapılandırılmış depolamaydı . Takma adlar, OLE 1 nesne adlarından evrimleşmiştir ve bağımsız olarak icat edilen URL'lere veya URI'lere benzer hiyerarşik bir nesne ve kaynak adlandırma sistemi sağlamıştır . Windows artık bir URL Takma Adı türünü ve bir Takma Adı URL şemasını destekleyen iki teknolojiyi birleştirmiştir.

OLE özel denetimleri

OLE özel denetimleri, artık kullanımdan kaldırılan Visual Basic Uzantısı denetimlerinin yerine 1994 yılında tanıtıldı . Bunları yükseltmek yerine, yeni mimari OLE'ye dayanıyordu. Özellikle, OLE 2.0'ı destekleyen herhangi bir kapsayıcı, OLE özel denetimlerini zaten gömebilir, ancak bu denetimler, kapsayıcı bunu desteklemediği sürece olaylara tepki veremez. OLE özel denetimleri genellikle .ocx uzantılı bir dinamik bağlantı kitaplığı biçiminde gönderilir . 1996'da kontroller için tüm arayüzler (IUnknown hariç) kontrollerin dosya boyutunu küçültmek için isteğe bağlı hale getirildi, böylece daha hızlı indirilebildiler; bunlara daha sonra ActiveX Denetimleri adı verildi .

Teknik detaylar

OLE nesneleri ve kapsayıcılar, Bileşen Nesne Modeli'nin üzerine uygulanır ; işlevselliklerini dışa aktarmak için arabirimler uygulayabilen nesnelerdir. Yalnızca IOleObject arabirimi zorunludur, ancak bu arabirimler tarafından dışa aktarılan işlevsellik gerekliyse diğer arabirimlerin de uygulanması gerekebilir.

Aşağıdakilerin anlaşılmasını kolaylaştırmak için bazı terminoloji açıklanmalıdır. Bir nesnenin görünüm durumu, nesnenin saydam, opak veya düz bir arka plana sahip opak olup olmadığı ve belirli bir açıdan çizimi destekleyip desteklemediğidir. Bir nesnenin sitesi, nesnenin kapsayıcısındaki konumunu temsil eden bir nesnedir. Bir kapsayıcı, içerdiği her nesne için bir site nesnesini destekler.

Aşağıda, genellikle bunları uygulaması gereken nesneye göre gruplandırılmış arabirimlerin bir listesi bulunmaktadır. Genellikle OLE nesnesi tarafından uygulanan arabirimler genellikle OLE kapsayıcısı tarafından çağrılır ve bunun tersi de geçerlidir. Aşağıdaki listede girintinin arabirim devralmasını gösterdiğine dikkat edin. Tüm girintisiz arabirimler IUnknown'dan türetilir .

Ole nesnesi

Veri Nesnesi
Uygulandığında, veri aktarımını ve veri değişikliklerinin bildirilmesini sağlar. Sürükle ve bırak özelliğini destekleyen, panoya kopyalanan veya panodan yapıştırılan veya içeren bir belgeye bağlanan veya gömülü olan nesneler tarafından uygulanmalıdır.
ObjectWithSite
Arayanın, sitesinin OLE nesnesini bilgilendirmesine izin verir. Bu işlevsellik OleObject tarafından da sağlanır , ancak OleObject başka konular için kullanılmıyorsa, desteklendiğinde ObjectWithSite kullanılabilir.
OleÖnbellek
Bir DataObject'den gelen görsel sunumların önbelleğe alınmasına izin verir . Bu, gömülü bir nesnenin görsel temsilini saklamasına ve böylece nesneyi oluşturmak için kullanılan uygulamayı başlatmaya gerek kalmadan daha sonra görüntülenmesine olanak tanır.
Genellikle stok uygulaması kullanılır.
OleÖnbellek2
Önbelleğe alma üzerinde daha hassas denetim sağlar.
Genellikle stok uygulaması kullanılır.
OleCacheControl
Bu arabirim, kapsayıcı tarafından değil, DataObject çalıştığında bildirimler almasına izin vermek için nesne tarafından dahili olarak çağrılır , böylece o nesnenin veri değişikliklerinin bildirimlerine abone olmasına ve böylece önbelleğe alınmış sunumu düzgün bir şekilde güncellemesine izin verir. .
Genellikle stok uygulaması kullanılır.
OleBelge
OLE nesnesinin, birkaç ilgili işlevin yanı sıra, verilerinin birden çok görünümünü desteklemesine izin verir.
OleDocumentGörünüm
Bir belge nesnesi ( OleDocument uygulayan bir nesne ), bu arabirimi her görünüm için uygular. Arayanın nesnenin sitesini ayarlamasına, nesnenin boyutunu sorgulamasına ve ayarlamasına ve ilgili bazı işlevlerin yanı sıra onu gösterip etkinleştirmesine olanak tanır.
OleWindow
OleInPlaceActiveObject
Bir nesnenin en dıştaki konteyneri tarafından, aktifken onunla etkileşime geçmek için çağrılır, örneğin konteynerin mesaj kuyruğundaki içerilen nesneye yönelik hızlandırıcı anahtarları işlemek için.
OleInPlaceObject
Nesneyi etkinleştirmek veya devre dışı bırakmak için kapsayıcı tarafından çağrılır.
IOleInPlaceObjectPenceresiz
Penceresiz bir nesne, kendi penceresi olmayan ancak bunun yerine konteynerinin penceresinde görüntülenen bir nesnedir. Kapsayıcı tarafından, kapsayıcının penceresi tarafından alınan ve kapsanan nesneye yönelik mesajları iletmek için kullanılır. Örneğin, fare bir pencere üzerinde hareket ettirilirse, Windows, pencerenin mesaj kuyruğuna fare koordinatlarıyla birlikte bir fare hareket mesajı yerleştirir. Bu pencere penceresiz gömülü nesneler içeriyorsa, fare işaretçisinin koordinatları bu nesnenin üzerindeyse mesajın böyle bir nesneye iletilmesi gerekebilir. Benzer nedenlerle bu arabirim, nesnenin DropTarget arabirimine de erişim sağlar.
OleLink
Nesnenin, örneğin kapsayıcının bağlantılı bir nesnenin kaynağını ayarlamasına izin vererek, bağlamayı desteklemesine izin verir.
Genellikle stok uygulaması kullanılır.
Ole nesnesi
Bir OLE nesnesi için tartışmasız en önemli arayüz. Örneğin, kapsayıcının kendi sitesinin nesnesini bilgilendirmesine, nesneyi verilerden başlatmasına, açıp kapatmasına, nesnenin boyutunu sorgulamasına ve ayarlamasına, kapsayıcının AdviseSink'inde bildirimler istemesine ve tanımlanan nesneleri yürütmesine olanak tanır. nesne üzerinde "fiiller" olarak. Bu fiiller genellikle "Aç" veya "Düzenle"yi içerir, ancak diğer fiilleri de içerebilir. Fiillerden biri asıl fiil olarak tanımlanır ve kullanıcı bir nesneyi çift tıkladığında yürütülür.
GörünümNesnesi
Bir nesnenin , kapsayıcıya bir DataObject geçirmeden kendisini doğrudan çizmesine izin verir . Hem DataObject hem de bu arabirimi destekleyen nesneler için , temeldeki uygulama genellikle paylaşılır.
GörünümNesnesi2
Ayrıca, arayanın nesnenin boyutunu sorgulamasına izin verir.
ViewObjectEx
Saydam nesnelerin titreşimsiz çizimi, düzensiz şekilli nesneler için isabet testi ve bir nesnenin boyutunun ayarlanması için destek ekler .

OLE kapsayıcısı

IAdviseSink
Uygulayıcının, nesne kaydedildiğinde, kapatıldığında veya yeniden adlandırıldığında ya da verileri veya görsel sunumu değiştiğinde bildirim almasına izin verir.
IAdviseSink2
Ayrıca, uygulayıcının OLE nesnesinin bağlantı kaynağı değiştiğinde bildirim almasına izin verir.
IAdviseSinkEx
Ek olarak, uygulayıcının OLE nesnesinin görünüm durumu değiştiğinde bildirim almasına izin verir.
IOleClientSitesi
Bu arayüz, arayanın bir nesnenin kapsayıcı ve konumu hakkında bilgi almasına ve ayrıca nesnenin kaydedilmesini, yeniden boyutlandırılmasını, gösterilmesini, gizlenmesini vb. talep etmesini sağlar.
IOleBelgeSitesi
Arayanın bu sitedeki nesnenin hemen etkinleştirilmesini istemesine izin verir. Bu arabirim uygulanırsa, IOleClientSite , IOleInPlaceSite ve IAdviseSink de uygulanmalıdır.
IOleContainer
Bu arabirim, arayanın bir kapsayıcıdaki gömülü nesneleri numaralandırmasına veya bu nesneleri ada göre bulmasına olanak tanır. Kapsayıcı, gömülü nesnelere olan bağlantıları desteklemek istiyorsa, öncelikle yararlıdır.
IOleWindow
IOleInPlaceUIWindow
Gömülü nesnelerin, kapsayıcının penceresindeki araç çubukları için alan üzerinde anlaşmasını sağlar.
IOleInPlaceFrame
Arayanın, kapsayıcıdan, ortak menü olacak boş bir menüye menü öğelerini eklemesini istemesine izin verir. Ayrıca, arayanın kapsayıcıdan bu menüyü göstermesini veya gizlemesini, iletişim kutularını göstermesini veya gizlemesini ve kapsayıcı için amaçlanan içerilen nesne tarafından alınan hızlandırıcı anahtarları işlemesini istemesine izin verir.
IOleInPlaceSitesi
Bir kap bu arayüzü uygularsa, gömülü nesnelerin yerinde, yani ayrı bir pencerede açılmadan etkinleştirilmesine izin verir. Kapsayıcının IOleInPlaceUIWindow öğesine erişim sağlar .
IOleInPlaceSiteEx
Bir kapsayıcı bu arabirimi uygularsa, gömülü nesnelerin etkinleştirme veya devre dışı bırakma sırasında yeniden çizmeleri gerekip gerekmediğini kontrol etmelerini sağlar. Ayrıca, kullanıcı arayüzlerinin etkinleştirilmesini talep etmelerine de olanak tanır.
IOleInPlaceSitePenceresiz
Bir kap, penceresiz gömülü nesneleri desteklemek isterse, normalde gömülü bir nesnenin penceresi tarafından sağlanan işlevselliği değiştirmek için gömülü nesnelere işlevsellik sağlaması gerekir. Örneğin, bu arabirim, kapsayıcı penceresinin aygıt bağlamına erişmenin bir yolunu sağlar, böylece gömülü nesnenin kapsayıcı penceresinde çizmesini sağlar.
IOleUILinkContainer
Bağlantılı nesneleri yöneten standart OLE iletişim kutularının bir kapsayıcıdaki bağlantılı nesneleri güncellemek veya kaynaklarını sorgulamak ve değiştirmek için kullandığı yöntemleri içerir. "Bağlantılar", "Kaynağı değiştir", "Bağlantıları güncelle" ve "Nesne özellikleri" iletişim kutuları tarafından kullanılır.
IOleUILinkInfo
Ayrıca, iletişim kutularının bağlantılı nesnelerin en son ne zaman güncellendiğini ve bunun otomatik mi yoksa manuel olarak mı yapıldığını sorgulamasına olanak tanır.
IOleUIObjInfo
"Nesne özellikleri" iletişim kutusunun ihtiyaç duyduğu yöntemleri içerir. Örneğin, kullanıcı "Nesne özellikleri" iletişim kutusunu açar ve nesnenin başka bir türe dönüştürülmesini isterse, bu arabirimde bir yöntem çağrılır.
IOleUndoManager
Hem kapsayıcının kendisine hem de gömülü nesnelere merkezi bir geri alma hizmeti sağlar. Geri alınamaz bir eylem gerçekleştirildiğinde, bir IOleUndoUnit oluşturulur ve IOleUndoManager'a eklenir

Başka

IDataAdviseHolder
Yöntemleri IDataObject veri değişim bildirimleri ilgilidir, bu arayüz yöntemlerini çağırarak uygulanabilir.
Genellikle stok uygulaması kullanılır.
IOleAdviseHolder
Yöntemleri IOleObject bildirimleri ilgilidir, bu arayüz yöntemlerini çağırarak uygulanabilir.
Genellikle stok uygulaması kullanılır.
IDropSource
Sürüklenebilen, yani bir sürükle ve bırak işlemlerinin kaynağı olabilen nesneler tarafından uygulanır. Uygulandığında, nesnenin sürükle ve bırak efektleri çizmesine ve nesnenin ne zaman bırakılacağını veya sürükle ve bırak işleminin ne zaman iptal edileceğini belirtmesine izin verir.
IdropTarget
Bırakılan nesneleri kabul eden, yani sürükle ve bırak işlemlerinin hedefi olabilen nesneler tarafından uygulanır. Uygulandığında, hedefin bırakılan bir nesnenin kabul edilip edilmeyeceğini ve düşürüldükten sonra bir nesneye ne olacağını belirlemesine izin verir.
IOleCommandTarget
Belirli standart komutları desteklemek isteyen nesneler (OLE nesneleri, OLE kapsayıcıları ve diğer nesneler) tarafından uygulanabilir. Arayanların komutların desteklenip desteklenmediğini sorgulamasına ve komutları yürütmesine olanak tanır. Bir nesnenin tipik olarak uygulamak isteyebileceği komutlar, "sil", "kes", "kopyala", "yapıştır", "geri al", "bul", "yazdır", "kaydet", "yakınlaştır" ve "yakınlaştır" gibi komutları içerebilir. yakın zamanda. Şu anda 58 standart komut tanımlanmıştır ve bunlar ofis yazılımları, web tarayıcıları ve benzeri uygulamalar tarafından yaygın olarak kullanılan komutları içermektedir.
IOleGeri AlmaBirimi
Geri alınabilecek bir eylemi temsil eder. Bir eylemi geri almak için gerekli tüm bilgileri içerir. Nesneler ve kaplar tarafından oluşturulur, böylece geri alınamayan eylemler kapsayıcının IOleUndoManager öğesine eklenebilir .
IOleEbeveynGeri AlmaBirimi
Bir geri alma biriminin diğer geri alma birimlerini içermesine izin verir. Özünde bu, geri alma biriminin bir geri alma yığını olarak hareket etmesine ve geri alma birimlerini birlikte gruplamasına izin verir. Örneğin, bir makro çalıştırılırsa, makro tarafından gerçekleştirilen tüm geri alınabilir eylemler, tek bir geri alma biriminde birlikte gruplanabilir.
IOleWindow
Bu arayüz, bir kapsayıcının veya kapsanan nesnenin bir penceresini temsil eder. Arayanların pencerenin tutamağını almasına ve bağlama duyarlı yardım işlevini değiştirmesine olanak tanır. Bağlama duyarlı yardım işlevi açıldığında, genellikle fare işaretçisi, bir kullanıcı arabirimi öğesinin tıklanmasının bir yardım penceresinin açılmasıyla sonuçlanacağını belirtmek için soru işaretli bir oka dönüşür.

Yarışma

OpenDoc teknolojisi, OLE ile rekabet etmeye çalıştı. Microsoft'un bazı rakipleri OpenDoc'u daha sağlam ve kullanımı daha kolay olarak değerlendirdi; ancak, OpenDoc'un bilinen bazı sorunları vardır . OpenDoc, kullanıcıların Microsoft'un tescilli OLE standardıyla doğrudan rekabet halinde, uygulamalar arasında bilgileri görüntülemesine ve düzenlemesine izin verdi. 1993'te bazı Microsoft rakipleri, OpenDoc'u platformlar arası bağlantı ve gömme için açık bir standart olarak geliştirmek için Bileşen Entegrasyon Laboratuvarları ("CIL") adlı bir konsorsiyum kurdu .

Microsoft, bir uygulamanın Windows 95 ile uyumluluğunun Microsoft tarafından onaylanmasının bir koşulu olarak OLE uyumluluğunu gerektiriyordu . Microsoft başlangıçta OpenDoc kullanan uygulamaların OLE ile uyumlu kabul edileceğini ve Windows 95 için sertifika alacağını duyurdu. Microsoft daha sonra kararı geri aldı ve OpenDoc kullanan uygulamaların hiç sertifika alamayabileceğini söyledi. Microsoft, rakip uygulamalarını yayınlayana kadar OLE'nin spesifikasyonlarını ve hata ayıklanmış sürümlerini sakladı.

birlikte çalışabilirlik

OLE nesnelerinin kullanımı birlikte çalışabilirliği sınırlar, çünkü bu nesneler Microsoft Windows dışındaki dosyaları görüntüleme veya düzenleme programlarında yaygın olarak desteklenmez (örn. sunum dosyası). Bir OLE nesnesini anlayan yazılım mevcut değilse, nesne genellikle bir resimle değiştirilir (nesnenin bitmap gösterimi) veya hiç görüntülenmez.

Ayrıca bakınız

Referanslar

Dış bağlantılar

  • ripOLE - OLE belgelerinden ekleri çıkarır
  • docs.microsoft.com'dan OLE Arka Planı