ПредишенСледващото

4.3.1.1. Обща характеристика COM

Един от ключовите постижения на Windows, се счита за многокомпонентен обектен модел (Component Object Model, COM). COM модел описва процес на програми за взаимодействие от всякакъв тип. Програмата на сървъра (COM сървър) предоставя на други свои услуги, както и програмата за клиент (COM клиент) използва услугите на наличните услуги. COM-взаимодействащи обекти, могат да извършват както в рамките на един и същ процес или в различни процеси, включително тези, срещащи се на различни машини, работещи под различни операционни системи. COM - е едновременно спецификация (който определя реда на създаването на оперативно съвместими приложения) и изпълнение (под формата на стандартен набор от API функции). В допълнение, COM - това е платформено независима, разпространява, обектно-ориентиран система за създаване на интерактивни софтуерни компоненти.

От гледна точка на наблюдателя, генерирани от на средства COM софтуерен компонент е черна кутия, със следните характеристики:

1. Лесно връзки към операционната система.

3. лесно да се интегрират със софтуера.

4. универсален начин за достъп до методите и свойствата на всеки съвременен език за програмиране.

Microsoft е стандартизиран като начин за представяне на COM - обект в паметта на компютъра, и най-вече определянето на методи и свойства на този обект. Поради това, Microsoft (MSDN) официални документи е многократно се споменава в описанието на COM, че COM-модел съответства на двоичен (т.е. универсален) стандарт.

На пръв поглед черната кутия е много подобен COM DLL.

Подобно на COM, DLL ви позволява да използвате повторно кода си, че е лесно да се свърже с операционната система и интегрирани в софтуера. Но динамичен звено библиотека не е в състояние да гарантира, че износът на функциите си без никакви ограничения могат да бъдат причинени от помощта на всеки друг език за програмиране. Освен това, когато се използва в DLL сме изправени пред редица ограничения, свързани с мястото на неговото местоположение: библиотеката трябва да се намират или в строг списък на директории или е необходимо да се регистрирате в пътя на системата. Още по-трудна задача - зарежда DLL с друг компютър. За разлика от DLL, COM модел представлява универсален начин за изтегляне на своите съоръжения, независимо от тяхното местоположение.

От първите стъпки на изучаване COM е важно да се разбере, че това не е просто още една обектно-ориентиран език за програмиране с неговите собствени синтаксис, семантика и детайли за изпълнение. Правилно да се говори за COM като стандарт определяне на модел на взаимодействие между обектите.

В интерес на клиент и сървър приложения COM-модел работи активно библиотека COM (COM библиотека). Физически, библиотеката COM е набор от изпълними файлове и динамични библиотеки връзка. Той е в състояние да:

1. Предоставяне на услуги за набор от API функции, които улесняват развитието на COM приложения. Например, за клиентски приложения са методи за създаване на обекти. За сървърите на приложения в библиотеката осигурява средства за демонстрират на COM-обекти.

2. Създаване на единен идентификационен код, обект, за да търсите желаната цел по идентификационния му номер.

3. Извършване на отдалечена процедура, ако сървърът за COM се намира на друг компютър.

4. Управление на разпределението на паметта в полза на взаимодействащи си процеси и контрол на освобождаването на паметта.

В рамките на съществуващото споразумение, имената на всички методи Win32 API COM библиотека започват с префикс «Co», например CoCreateGuid (), CoCreateInstance (), CoUn- инициализира () и така нататък. Н.

4.3.1.2. Елементи COM-приложения

Разработчикът на стандартните COM-приложения във всеки случай е изправен със своите два елемента:

COM сървър е отделен модул, изпълнена като отделен изпълним EXE-DLL файл или динамичен звено библиотека файл.

Осигурени са модел COM сървър два вида: вътрешни и външни.

Помислете за класовете VCL, поставени в услуга на COM технология.

Структурата на COM-сървър поне включва:

1. Един - единственият случай на TcomServer клас, капсулира самата COM-сървър. Достъпът до този механизъм осигурява глобална променлива, създадена при стартиране на сървъра ComServer на.

2. Описание COM-обект (или няколко обекта), прототип на която е TComObject клас.

3.Fabrika клас (по един за всеки тип на COM-обект). В основата на фабрика клас е TComObjectFactory клас. Единственият проблем е, фабриката клас е да се създадат други обекти - TComObject инстанция.

С пускането на следващата версия на библиотеките не е необходимо да се актуализира всичките си софтуер.

В COM-модел на процеса на създаване на нов обект не познава среда за програмиране, а не дори самия обект, а третият (до известна степен неутрална) лице - фабрика клас (клас фабрики). Това фабрика е изцяло отговорен за разпределяне на памет за бъдещето на COM-обект, а в същото време, като че ли не изглежда да ни парадоксално относно подробностите за изграждането на този обект няма никаква представа.

За всеки отделен COM-Class е отделна фабрика.

За да създадете нова инстанция на фабрика клас използва шаблона клас или модел фабрика (фабрика модел).

Фабрика модел - специален клас се използва за създаване на копие на друг клас.

Благодарение на подхода "фабрика", процесът на създаване на нов обект е отделена от особеностите на прилагането му.

мениджър фабрика услуга е отговорен за фабриките - клас обект TComClass на - управител. мениджър например се създава автоматично и е на разположение в Приложение COM - сървър чрез глобална променлива ComClassManager.

COM клиент ползва услугите на сървъра, но не най-малката представа за функциите на неговото прилагане. достъп на клиента до услугите, е заложена в обект на COM-сървър е само чрез интерфейсите на обекта; ключова характеристика на цялата COM-модел. След получаване на указател към интерфейс, приложението на клиента придобива правото да се обадя методи на обекта.

4.3.1.3. COM - обект

В сърцето на многокомпонентен модел е идеята на COM-обект.

Физически COM-обект е колекция от данни и методи, които управляват тези данни. COM-обект структура значително се различава от бутоните и полетата за въвеждане, познати ни от библиотеката VCL. Ключовата разлика от познатия COM обект в Делфи как COM-обект осигурява достъп до данните си.

COM-обект структура материализира идеята за една приказка за Koshchei безсмъртен. Запомнете: смърт в иглата, иглата в яйце, яйце в патица, патица в заек, заек в гърдите, гръдния кош в дъбова. Неизвестни, четете в Microsoft руски народни приказки или не, проектиране програмисти COM-обектно Corporation уверено се оттеглиха от утъпкания път Koshcheev - пряк достъп до данните от чужбина COM- обект по принцип не съществува. Всяко поле на обекта, скрит в дълбините му и може да се обслужва само от методите на COM-обект. методи на обекти също са специални комуникационни умения са по-различни; те са опаковани толкова дълбоко, че са достъпни само чрез техните индекси.

Моделът на многокомпонентни обект (COM) - studopediya

Фиг. 6. Модел COM-обект

С достъп до необходимата присъствието на интерфейса IUnknown, софтуер или друг обект, може да отиде директно функцията QueryInterface () и да научат за всички други налични интерфейсите на обекта. Интерфейсът на диаграми IUnknown е показана в горната част на обекта (фиг. 7).

Моделът на многокомпонентни обект (COM) - studopediya

Фиг. 7. Представяне COM-обект в схема

В Delphi програмиране среда, основана COM-обект сложи TCOMObject клас. Интерфейсът му част е създадена въз основа на справка за всички интерфейсни класове IInterface.

В същността си, интерфейсът - договор между COM-обект и клиентското приложение, в които COM-обект гарантира на клиента за предоставяне на определени услуги. Услуги - някои методи в интерфейса. Но въпреки че интерфейса и има право да обяви заглавията на методи, но никой от неговите методи не са описание. Това се дължи на факта, че интерфейсът не е раздела за изпълнение, той декларира, само имената на методите и списъка параметър. Клиентите могат да получат достъп до данните на COM-обект, само с помощта на показалеца на интерфейса.

Друг съществен аспект на интерфейс е, че ако COM обектно-членки на съществуването на определение на интерфейса, трябва да се отчете, необходими на интерфейса за поддържане на вътрешните методи на обекта и да се върне някакви ценности, дори и само съобщение банална грешка.

Интерфейси могат да бъдат наследени - дете интерфейс трябва да включва всички методи на предшественика си. Всички съществуващи интерфейси са наследени от IUnknown интерфейс на базата.

Трябва да отбележим, две правила, които трябва да се спазват при проектирането на COM-обект:

Като част от отделна система, всеки интерфейс трябва да има уникално GUID и имена, започващи с «Аз» ​​символ.

4.3.1.5. Приложението за извикване на процедура на сървъра на клиента

Фиг. 8. За да се свържете с клиента към сървъра

По време на инсталацията на COM-приложения в регистъра на операционната система въведена информация за наличните на COM-обекти. Първият е идентификатор, който идентифицира еднозначно клас обект (клас идентификатор, CLSID). Идентификационните номера на класа, се съхраняват в следните клонове на системния регистър на Windows:

В CLSID - един вид вече по-рано, срещани в световен мащаб уникални идентификатори (Global уникален идентификатор, GUID). Тази уникална 128-битово число, което се използва за идентифициране интерфейси, обекти и класове. Уникалността се постига чрез използването на оригиналния алгоритъм за генериране на номера, осигурява функциите Win32 API CoCreateGuid ().

В процеса на стартиране на COM-обект, пряко ангажиран библиотечна система COM. Фиг. 8 схематично показва последователността на действията на клиента, и библиотеката на COM сървър, когато първо място на COM-обект.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!