Delphi COM технологиялары


Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 27 бет
Таңдаулыға:
Delphi COM технологиялары [31 бет]
КІРІСПЕ
1 НЕГІЗГІ БӨЛІМ
1. 1 COM - технологиясының негіздері.
1. 2 Интерфейс
1. 3 Интерфейстерді жариялау
1. 4 Интерфейстер және VCL Tcomponent класы
1. 5 COM - сервер, құрамы және қолдануы
1. 6 Ағымдар мен бөлмелер
2 ПРАКТИКАЛЫҚ БӨЛІМ
2. 1 COM - серверін ұйымдастыру
2. 2 COM - серверін тіркеу
2. 3 Интерфейстердің және параметрлердің берілуі
ҚОРЫТЫНДЫ
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР
ҚОСЫМША
КІРІСПЕ
COM (Component Object Model - көп компонентті объектілер моделі) - Windows технологияларының ішіндегі негізгілердің бірі. COM - бұл компоненттердің объектілі моделі. COM - технологиясы API - ді суреттеу кезінде және әртүрлі программалау ортасы мен әртүрлі тілдер объектілерін үйлестіру үшін қолданылатын екілік стандартты суреттеу үшін қолданылады. СОМ компоненттер мен приложениялар арасындағы қарым - қатынас моделін ұсынады. СОМ - технологиясы СОМ - объектілермен жұмыс жасайды. Объект СОМ серверінің бөлігі болып табылады. СОМ - объекттер Delphi визуалды кітапханасының объектілеріне ұқсас. VCL Delphi объектілеріне қарағанда СОМ-объектілерінің құрамында әдістер, қасиеттер және интерфейстер болады. Жай ғана СОМ-объектінің құрамында бір немесе бірнеше интерфейс болады. Егер интерфейстер бірнеше болса, онда олардың ішінде ұқсас функцияларды орындайтын көптеген әдістер болады. Интерфейсті жариялаудың құрамына оның әдістерін және қасиеттерін суреттеу кіреді бірақ оны жүзеге асыру кірмейді. Сонымен қатар интерфейсті жариялаған кезде оналты байттық сан көрсетілуі мүмкін, ол интерфейстің идентификаторы. Әр интерфейстің өзіндік көрсеткіші болады.
СОМ - технологиясының екі ерекшелігі бар:
- СОМ - объектілерді құру программалау тіліне тәуелді емес. Осындай жолмен СОМ-объектілері кез - келген тілде жазылуы мүмкін.
- СОМ-объектілері Windows - қа арналған кез - келген программалау ортасында қолданылуы мүмкін. Осы орталардың құрамына келесілер кіреді: Delphi, Visual C++, C++Builder, Visual Basic және тағы басқалар. Microsoft фирмасы Windows операциялық жүйесін құрастырған кезде алдына қойған ең басты мақсаттарының бірі, Windows - та жұмыс істейтін әртүрлі программалардың бір - бірімен үйлесімділікте болуы. Бұл оңай емес мәселені шешудің алғашқылары алмастырулар буфері, бөлетін файлдар және мәліметтерді динамикалық алмастырулар технологиясы (Dynamic Data Exchange, DDE) болды. Осыдан кейін объектілерді енгізу және біріктіру технологиясы (Object Linking and Embedding, OLE) құрылды. Алғашқы нұсқасы OLE 1, құрамды құжаттарды құру үшін арналған. Бұл нұсқа жетілдірілмеген болып танылды. Оның орнына OLE 2 нұсқасы шығарылды. Жаңа нұсқасы әртүрлі программалардың бір - біріне өздерінің функцияларын ұсыну туралы сұрақтарды шешуге мүмкіндік берді. Бұл технология 1996 жылға дейін қолданылған. Одан кейін оның орнына ActiveX технологиясы келді. Оның құрамына автоматтандыру (OLE-автоматтандыру), контейнерлер, басқарушы элементтер, Web-технологиялар және т. б. кіреді.
1 НЕГІЗГІ БӨЛІМ
1. 1 COM - технологиясының негіздері.
COM технологиясы бір программаға (клиент) басқа программаның (сервер) объектісімен жұмыс істеуге мүмкіндік береді. СОМ бұл әртүрлі компаниялармен әртүрлі тілде жазылған компоненттердің өзара түсіністікте және алмасуда болуын қарастыратын объект жобасы. Программалардың қай жақта орындалып жатқаны маңызды рол атқарады:бір потокта, әртүрлі потоктарда, әртүрлі компьютерлерде. Қазіргі кезде шығып жатқан Windows - тың соңғы технологиялары (Shell, Scripting, HTML қолдау және т. б. ) өздерінің қабықшалы программалық интерфейстерін (Application Program Inyerface, API) COM интерфейсі арқылы жүзеге асырады. Сондықтан, қазіргі заманда профессионалды программалау COM моделін түсінуді және онымен жұмыс істеуді талап етеді. Delphi - дің басты ерекшеліктерінің бірі СОМ - технологиясын қолдауы болып табылады.
СОМ - ның көзқарасы бойынша приложенияның құрамында бірнеше объект болады(кейбір жағдайда бір ғана объект болуы мүмкін) . Әр объекттің бір немесе бірнеше интерфейсі болуы мүмкін. Интерфейсте сыртқы программалар рұқсат алатын объекттің әдістері сипатталған. Егер интерфейстер бірнеше болса, онда олардың ішінде ұқсас функцияларды орындайтын көптеген әдістер болады. Объект СОМ серверінің бөлігі болып табылады. COM технологиясының негізгі мақсаты - объекттердің экспорттану мүмкіндіктерін қамтамасыз ету болып табылады. Объекттердің экспорттану ойы келесіде:бір модуль объект құрады, ал екінші модуль әдістер мен сервистерге сұраныс жасау арқылы ол объектті қолданады. Сервер орындаушы файл немесе DLL библиотекасы болуы мүмкін. Windows - та сервер орнатылғанда жүйелік реестерге оның барлық объектілері туралы мәліметтер енгізіледі. Бұл мәліметтердің құрамына объекттің класын анықтайтын CLSID (Class Identifier) класының идентификаторы кіреді. Сервердің типі жайлы мәліметтер енгізіледі: клиентке қосылатын (in-process) - DLL ішкі, клиенттің компьютерінде бөлек процесс болып жұмыс істейтін - локальды (local), өшірілген компьютерде жұмыс істейтін - (remote) өшірілген. Ішкі және локальды серверлер үшін реестерге файлдың толық аты енгізіледі, ал өшірілген үшін толық желілік мекен жай енгізіледі. Осындай жолмен кез-келген кезде шақыруға болатын СОМ сервері жайлы ақпараттар жүйеде сақталып тұрады. Енді жай ғана мысал келтірейік: Бізде класс бар - примитивті калькулятор:
MyCalc=class
fx, fy:integer;
public:
procedure SetOperands(x, y:integer)
function Sum:integer;
function Diff:integer;
end;
procedure MyCalc. SetOperands(x, y:integer)
begin
fx:=x; fy:=y;
end;
function MyCalc. Sum:integer;
begin
result:=fx+fy;
end;
function MyCalc. Diff:integer;
begin
result:=fx-fy;
end;
Енді бізде осы кластың элементі болса, онда оны қолдану түкке тұрмайды. Енді келесі жағдайды келтірейік:осы кластың объектісі аталынатын бір модуль бар. Мысалы:
unit MyCalc
type
MyCalc=class
<суреттелуі жоғарыда>
var
Calc:MyCalc;
Енді біз оны қайтадан компиляция жасамай - ақ басқа модульде қолданғымыз келеді. Ең оңай нұсқасы келесідей болады:
unit MyCalc
type
MyCalc=class
<сипатталуы жоғарыда>
var Calc:MyCalc;
procedure SetOperands(x, y:integer)
begin
Calc. SetOperands(x, y) ;
end;
function Sum:integer;
begin
result:= Calc. Sum;
end;
function Diff:integer;
begin
result:= Calс. Diff;
end;
procedure CreateObject;
begin
Calc:=MyCalc. Create;
end;
procedure ReleaseObject;
begin
Calc. Free;
end;
1. 2 Интерфейс
Енді интерфейсті толығырақ қарастырайық. Интерфейс программист пен компилятор арасындағы келісім шарт болып табылады. Программист интерфейсте суреттелген бүкіл әдістерді жүзеге асыруға міндетті. Компилятор жасалынып жатқан интерфейстің әдістеріне сұраныс жасауға мүмкіндік беретін программаның ішіндегі ішкі структураларды іске асыруға міндетті. Осындай жолмен COM технологиясы тілдік - тәуелсіз болып табылады және былайша айтқанда оны программаларды біріктіретін клей түрінде қолдануға болады. СОМ объектісіне сұраныс жасап тұрған сыртқы приложениялар СОМ клиенттері болып табылады. Клиент сұраныс жасап тұрған объектінің интерфейсіне сілтеме алады. Осы сілтеме арқылы объектінің әдістерін шақыра алады. СОМ спецификасы бұрын аталған интерфейсті өзгертуге тыйым салады. Бұл серверде әртүрлі модификациялар пайда болған кезде клиенттің жұмысының дұрыстығын қамтамасыз етеді.
Осындай жолмен клиентке объектінің интерфейсін және ол ұсынып тұрған әдістерді білгені ақ жеткілікті. Ал басқа жақтарын жүйе қамтамасыз етеді. Егер сервер қосылмаған болса, онда жүйе оны керек кезде қосады. Сервер объект құрады, объект бүкіл мәліметтерді жүкейді және клиент жұмыс істей алу клиентке объектіге және оның интерфейсіне сілтеме береді. Жүйе объектінің бірден бірнеше клиенттермен жұмыс істеуін қамтамасыз етеді. Ол үшін жүйе объектіге жасалған сілтемелер санының есебін жүргізеді. Клиентке белгілі бір интерфейске көрсеткіш жіберілгенде сілтемелер саны бірге көбейеді. Ал клиенттің объектімен жұмысы аяқталған кезде сілтемелер саны бірге азаяды. Егер сілтемелер саны нөлге тең болса, онда жүйе сол кездегі бірде бір клиент жұмыс істемей тұрған объектіні жояды. Барлығы жақсы, бірақ клиенттік приложенияны өндіруші СОМ объектілері, интерфнйстері, әдістері, қасиеттері туралы мәліметтерді қайдан алады?Бүкіл керекті мәліметтер типтер кітапханасында орналасқан. Оны СОМ объектісінің өндірушісі құрастырады және объектімен бірге таралады. Кітапхана интерфейсті суреттеу тілі IDL (Interface Definition Language) арқылы құрастырылады.
Интерфейсті жариялаудың құрамына оның әдістерін және қасиеттерін суреттеу кіреді бірақ оны жүзеге асыру кірмейді. Сонымен қатар интерфейсті жариялаған кезде оналты байттық сан көрсетілуі мүмкін, ол интерфейстің идентификаторы. Кез келген идентификатордың құрамында «I» символынан басталатын аты және GUID (Globally Unique Identifier) глобальды идентификатор болады. GUID тек қана идентификаторлар үшін ғана жасалып қолданылмайды. Интерфейстер үшін GUID IID деп аталады. Кез келген СОМ объектісінде Іunknown интерфейсі болады. Бұл интерфейстің тек қана үш әдісі бар: Query Interface - интерфейске көрсеткіш алу, AddRef и Release - объектіге сілтемелер санының бірге көбеюі және кішіреюі. Delphi да интерфейс әдістерінің сәйкес аттары кішкене өзгеше: Querylnterface, AddRef, Release.
Интерфейстер мұрагерлене алады. Интерфейстің мұрагерленуі бұл - мұрагерлік интерфейстің құрамына алдыңғы интерфейстердің бүкіл әдістерінің кіруін көрсететін декларация. Бірақ келесілерді түсіну керек:
Интерфейс - бұл класс емес. Класс интерфейстің іске асырылуы болып табылады. Бірақ кластың құрамында белгілі бір программалау тіліндегі әдістердің кодтары болады, ал интерфейте болмайды.
Интерфейс - қатаң түрде типтелген. Клиентте интерфейстің жүзеге асырылуы да интерфейсте суреттелген әдістер мен қасиеттерді қолдануы керек.
1. 3 Интерфейстерді жариялау
Интерфейстерді қолдау үшін Delphi Pascal тілінің синтаксисін қосымша кілттік сөздермен кеңейтеді. Delphi - де интерфейсті жариялау interface кілттік сөзі арқылы жүзеге асады. Мысалы:
type
IMyInterface = interface
['{412AFF00-5C21-11D4-84DD-C8393F763A13}']
procedure DoSomething(var I: Integer) ; stdcall;
function DoSomethingAnother(S: String) : Boolean;
end;
IMyInterface2 = interface(IMyInterface)
['{412AFF01-5C21-11D4-84DD-C8393F763A13}']
procedure DoAdditional(var I: Integer) ; stdcall;
end;
Delphi - да GUID жаңа мағынасының генерациясын IDE - ге ауыстыру үшін Ctrl+Shift+G батырмаларының бірігуін басу керек.
COM моделінің негізгі интерфейсі Iunknown болып табылады. Кез - келген интерфейс Iunknown интерфейсінен мұрагерленеді және бұрын жарияланған әдістерді міндетті түрде іске асыру керек. Iunknown интерфейсі System. pas модулінде келесі түрде жарияланады:
type
IUnknown = interface
['{---C000-46}']
function QueryInterface(const IID: TGUID; out Obj) : HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end;
Iunknown әдісінің не үшін арналғанын қарастырайық. Соңғы екі әдіс сілтемелерді санау механизмін жүзеге асыру үшін қажет.
function _AddRef: Integer; stdcall;
Бұл функция интерфейске жасалған сілтемелердің санын бірге көбейтеді және есептегіштің жаңа мағынасын қайтарады.
function _Release: Integer; stdcall;
Бұл функция интерфейске жасалынған сілтемелердің санын бірге азайтады. Жоғарыда айтылғандай егер сілтемелер саны нөлге тең болса, онда жүйе сол кездегі бірде бір клиент жұмыс істемей тұрған объектіні жояды.
Бірінші әдіс интерфейсті іске асырып жатқан класқа сілтеме алуға мүмкіндік береді.
function QueryInterface(const IID: TGUID; out Obj) : HResult; stdcall;
Бұл функция кіру қасиеті ретінде интерфейстің идентификаторын алады. Егер объект сұраныс жасалған интерфейсті іске асыратын болса, онда функция:
1. Оған жасалған сілтемені Obj параметріне қайтарады.
2. Қабылданған интерфейстің _AddRef әдісін шақырады.
3. Нолді қайтарады.
Болмаған жағдайда функция қателік кодын E_NOINTERFACE қайтарады.
System. pas модулінде Iunknown - ды және оның әдістерін жүзеге асыратын TinterfacedObject класы жарияланған. Өз интерфейсіңді құру үшін осы класты қолдану тиімді болады. Одан басқа Tobject класында интерфейстерді жүзеге асырудың қолдауы бар. Оның келесі әдісі бар:
function TObject. GetInterface(const IID: TGUID; out Obj) : Boolean;
Егер объект сұраныс жасалған интерфейсті іске асыратын болса, онда функция:
1. Оған жасалған сілтемені Obj параметріне қайтарады.
2. Қабылданған интерфейстің _AddRef әдісін шақырады.
3. TRUE - ні қайтарады
Болмаған жағдайда функция FALSE - ты қайтарады. Осындай жолмен Delphi - дің кез келген класынан оның жүзеге асыратын интерфейсіне сұраныс жасауға болады. Delphi - де интерфейсті іске асыру үшін міндңтті түрде класс қолданылады. Ол үшін класты жариялау кезінде оның қандай интерфейстерді жүзеге асыратынын көрсету керек.
type
TMyClass = class(TComponent, IMyInterface, IDropTarget)
// Әдістерді іске асыру
end;
TmyClass класы IMyInterface және IdropTarget интерфейстерін жүзеге асырады. Бұл жерде кластың бірнеше интерфейстерді жүзеге асыруы мұрагерлік жолмен берілмегендігін түсіну өте маңызды. Кластарды суреттеу кезінде көрсетілетін интерфейстер тек сол класс арқылы жүзеге асырылатын интерфейстер бар екендігін көрсетеді. Интерфейсте жарияланған бүкіл әдістердің аттары мен тізімдері, қасиеттері класта қолданылатын әдістерге сәйкес келуі керек. Мысал келтірейік:
type
ITest = interface
['{61F26D40-5CE9-11D4-84DD-F1B8E3A70313}']
procedure Beep;
end;
TTest = class(TInterfacedObject, ITest)
procedure Beep;
destructor Destroy; override;
end;
…
procedure TTest. Beep;
begin
Windows. Beep(0, 0) ;
end;
destructor TTest. Destroy;
begin
inherited;
MessageBox(0, 'TTest. Destroy', NIL, 0) ;
end;
Бұл жерде Ttest класы Itest интерфейсін жүзеге асырады. Программадан интерфейсті қолдануды қарастырайық.
procedure TForm1. Button1Click(Sender: TObject) ;
var
Test: ITest;
begin
Test := TTest. Create;
Test. Beep;
end;
Егер біз интерфейстің жүзеге асырылуын бірден жойғымыз келсе, онда ауыспалының көзге көрінбейтін аймаққа шықпай тұрған кезде оған NIL мағынасын меншіктеу керек.
Code:
var
Test: ITest;
T: TTest;
begin
T := TTest. Create;
Test := T;
Test. Beep;
Test := NIL; // IUnknown. _Release автоматты түрде шақырылады;
end;
Iunknown әдісінің автоматты түрде шақырылуына көңіл бөлу керек. Сондықтан Iunknown әдісін өзіміз шақырмау керекпіз. Бұл автоматты түрде сілтемелерді санаудың дұрыс жұмыс істеуіне кедергі келтіреді. Оны болдырмау үшін келесілерді есте сақтау керек:
- интерфейске объекттің типін келтірген кезде _AddRef әдісі шақырылады.
- интерфейске сұраныс жасап тұрған ауыспалыға басқа мағына меншіктеген кезде _Release әдісі шақырылады.
Бір рет объекттен интерфейске сұраныс жасағаннан кейін, болашақта объектті өз қолымызбен босатпау керекпіз. Осы уаққытан бастап объектпен тек қана интерфейстік сілтемелер арқылы жұмыс істеу керек. Қарастырылған мысалдарда интерфейсті алу үшін кластардағы қолданылған кодтар компиляция кезеңінде өзгеріп отырды. Егер класс сұраныс жасап тұрған интерфейсті жүзеге асырмаса онда программа компиляциядан өтпейді. Бірақ программаны орындау кезінде интерфейске сұраныс жасауға мүмкіндік бар. Ол үшін as операторы қолданылады. Ол QueryInterface - ті шақырады және сәттілік болған жағдайда қабылданған интерфейске сілтемені қайтарады. Мысалы келесі код компиляциядан өтеді, бірақ орындау кезінде келесі қатені шығарады « Interface not supported»:
var
Test: ITest;
begin
Test := TInterfacedObject. Create as ITest;
Test. Beep;
end;
Сол уақытта да код:
var
Test: ITest;
begin
Test := TTest. Create as ITest;
Test. Beep;
end;
Компиляциядан өтеді және орындалады.
Енді интерфейстерді жүзеге асыруды толығырақ қарастырайық.
Екі интерфейсті жариялайық:
type
ITest = interface
['{61F26D40-5CE9-11D4-84DD-F1B8E3A70313}']
procedure Beep;
end;
ITest2 = interface
['{61F26D42-5CE9-11D4-84DD-F1B8E3A70313}']
procedure Beep;
end;
Енді осы екі интерфейсті де жүзеге асыратын класты құрайық:
TTest2 = class(TInterfacedObject, ITest, ITest2)
procedure Beep1;
procedure Beep2;
procedure ITest. Beep = Beep1;
procedure ITest2. Beep = Beep2;
end;
Көрініп тұрғандай кластың құрамында бірден екі Beep әдіс болуы мүмкін емес. Сондықтан Delphi осындай аттарға байланысты конфликттарды шешуге амалдарды ұсынады. Ол кластың қай әдісі интерфейсті жүзеге асырудың әдісімен сәйкес келетіндігін анықтайды және көрсетеді. Егер TTest2. Beep1 и TTest2. Beep2 әдістері ұқсас болса, онда екі әртүрлі әдістерді құрастырмай ақ, класты келесі түрде жариялау керек:
TTest2 = class(TInterfacedObject, ITest, ITest2)
procedure MyBeep;
procedure ITest. Beep = MyBeep;
procedure ITest2. Beep = MyBeep;
end;
Екі интерфейсті жүзеге асыратын кластың мысалын қарастырайық:
type
TBeeper = class
procedure Beep;
end;
TMessager = class
procedure ShowMessage(const S: String) ;
end;
TTest3 = class(TInterfacedObject, ITest, IAnotherTest)
private
FBeeper: TBeeper;
FMessager: TMessager;
property Beeper: TBeeper read FBeeper implements ITest;
property Messager: TMessager read FMessager implements IAnotherTest;
public
constructor Create;
destructor Destroy; override;
end;
Интерфейстің жүзеге асырылуын басқа класқа жүктеу үшін implements кілттік сөзі қолданылады:
{ TBeeper }
procedure TBeeper. Beep;
begin
Windows. Beep(0, 0) ;
end;
{ TMessager }
procedure TMessager. ShowMessage(const S: String) ;
begin
MessageBox(0, PChar(S), NIL, 0) ;
end;
{ TTest3 }
constructor TTest3. Create;
begin
inherited;
FBeeper := TBeeper. Create;
FMessager := TMessager. Create;
end;
destructor TTest3. Destroy;
begin
Кластарды босату
FBeeper. Free;
FMessager. Free;
inherited;
end;
1. 4 Интерфейстер және VCL Tcomponent класы
VCL Tcomponent базалық класында Iunknown интерфейсін жүзеге асыруға мүмкіндік беретін көптеген әдістер жиынтығы бар. Бірақ кластың өзі бұл интерфейсті жүзеге асырады. Бұл Tcomponent мұрагерлеріне Iunknown интерфейсін жүзеге асыруды алаңдамай басқа интерфейстерді жүзеге асыруға мүмкіндік береді. Бірақ Tcomponent _AddRef және TComponent. _Release әдістері программаны орындау кезеңдерінде сілтемелерді санау механизмін жүзеге асырмайды. Сол себепті интерфейсті жүзеге асырушы Tcomponent мұрагерлері үшін жадыны басқарудың автоматты түрі жұмыс істемейді. Бұл жағдай жадыда уақытша орналасқан объектілерге қорқпай сұраныс жасалына береді, себебі олар жадыдан өшіріліп кетпейді. Сонымен келесі код дұрыс және қауіпсіз болып тпбылады:
type
IGetData = interface
['{B5266AE0-5E77-11D4-84DD-9153115ABFC3}']
function GetData: String;
end;
TForm1 = class(TForm, IGetData)
private
function GetData: String;
end;
…
var
I: Integer;
GD: IGetData;
S: String;
begin
S := '';
for I := 0 to Pred(Screen. FormCount) do begin
if Screen. Forms[I] . GetInterface(IGetData, GD) then
S := S + GD. GetData + #13;
end;
ShowMessage(S) ;
end;
Бұл код приложенияларындағы бүкіл формалардың ішінде IgetData интерфейсін жүзеге асыру барының немесе жоқтығын тексереді. Егер форма бұл интерфейсті жүзеге асыратын болса, онда оның әдісін шақырады.
Жоғарыда қаралған Tcomponent приложениядағы компоненттерді қатаң типтілікті жоғалтпай біріктіруді және оңай соғуға мүмкіндік береді. Компонентті жүзеге асыру ғана жеткілікті, ал шақырылған программада оның бар немесе жоқтығын тексеру керек.
Мысалы біркелкі құралдар панелі және көптеген әртүрлі формалары бар MDI приложенияны қарастырайық. Бұл құралдар панелінде «Сақтау», «Жүктеу» және «Тазалау» командалары бар, бірақ терезелердің әрқайсысы бұл командаларға әртүрлі жауап береді. Интерфейстерді жариялау модулін жасайық:
unit ToolbarInterface;
interface
type
TCommandType = (ctSave, ctLoad, ctClear) ;
TCommandTypes = set of TCommandType;
TSaveType = (stSave, stSaveAS) ;
IToolBarCommands = interface
['{B5266AE1-5E77-11D4-84DD-9153115ABFC3}']
function SupportedCommands: TCommandTypes;
function Save(AType: TSaveType) : Boolean;
procedure Load;
procedure Clear;
end;
implementation
end.
1- суретте. Программаның жұмысы
1. 5 COM - сервер, құрамы және қолдануы
COM моделі программалау тілдерінен тәуелсіз көп рет қолдануға болатын компоненттерді құруға мүмкіндік береді. Бұл компоненттерді COM серверлер деп атайды. Олар орындаушы (EXE) файлдарынан және динамикалық (DLL) кітапханаларынан тұрады. Егер олар COM - ды қолдайтын программалу тілінде жазылған болса, онда оларды еш қиындықсыз кез - келген программадан шақыруға болады. COM сервер (In-Proc сервер) шақырушы программаның адрестік аймағында, (Out-Of-Proc сервер) өзіндік процесі ретінде немесе басқа (Distributed COM) компьютерде орындала алады. COM берілгендерді жіберуге(Marshalling) байланысты және клиент пен сервердің арасындағы потоктік үйлесімділікке байланысты сұрақтарды автоматты түрде шешеді. COMмен жұмыс істеу үшін керекті архитектуралық мәліметтер:
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz