صفحه 1:
2 ©
3|COM js Component .,~ bls |
Interface طريق
ارائه درس معماري سیستم هاي بزرگ
استاد مربوطه:
دکتر عبداله زاده
ی رد
Pee 0
Sane ere مس
2200 Seen te ee
صفحه 2:
al Component Object Model
0 ایجاد یک چارچوب استاندارد برای ارتباطات داخلی
0
ee ال
Microsoft) ارائه در پلت فرم های مختلف 9
Windows, Microsoft Windows ۲/۹
(Apple, Mac, Unix
O°
et
Component-based 42145 cle pul
0
0
601/1 لع هه م توه ما در me
22001 0000000
صفحه 3:
44 5
le Component .,. bls!
Lob Interface 3, js Component ©
یکدیگر ارتباط داوند
1
6 مي باشد
؟ امکان دسترسي به داده هاي ت96 [0[() وجود ندارد (بر خلاف
GC 5s» Object
۳
امس
22001 0000000
صفحه 4:
مثالی از 1:61006 110
ل ۱
i
:عتاطتام
virtual HRESULT _ stdcall LookupByName( LPTSTR
IpName, TCHAR *#IplpNumber) = 0;
virtual HRESULT _ stdcall LookupByNumber(LPTSTR
IpNumber, TCHAR (عسدلزمام[»* > 0:
eer
2220 ۱
مس ©0101 NS seme ey rea
ESS ee orca) 11
صفحه 5:
1 ان ee eer]
© 1216118606 با كاارمتفايتلست
© 121611806 مستقراز :101 001220116) اي لستكه لَزرا
Se
9 011625 هافقطو فقطاز طريق 126615806 هابا
ل Rec ea ed
ا 0 ات 1م
00
Ser هر 1101:611606 ا ا ا ٩
طريق همين (11 مي باشد
© 1216118606 هاداراي 176151012 هلي مختلفنمي باشند
0
امس
همه لتمصوق ههعهآمه
۱
صفحه 6:
3 Le
1۱۹۹۵
هر 0100000606 مي تواند بیش از یک
حي ۱۱
=
ازمايشكاة
rear 0
موضوع ارائهارتباط بين 00508086806 ها در 0181© see
22001 t 0000000 3
صفحه 7:
شماي 11216118206
00
ازمايشكاة
00 انام ونام خانوادكي؛ فريد ملازع.
موضوع ارائهارتباط بين 00508086806 ها در 0181© لسع
22001 t 0000000 7
صفحه 8:
شماي 11216118206
ازمايشكاة
00 انام ونام خانوادكي؛ فريد ملازع.
موضوع ارائهارتباط بين 00508086806 ها در 0181© لسع
22001 t 0000000 8
صفحه 9:
FAA
Global Unique Cac ae
٩ 128 بیت می باشد و یکتا است
٩ براي ارجاع به 101611806 ها و أ0112]001610/) ها به کار مي رود
۹[
1 ۱ ۱ Foe | eens Bera
ا ا ل CN SCPE NO ad
ه متصل نگردند
9 ابزا
|
ار
Microsoft UUIDgen ®
CoCreateGUID ®
Rey er
۳ 0
موضوع ارات ارتباط بين 6053002106 ها در 0101© امس
22001 t 0000000 3
صفحه 10:
2
IUnknown reer te ae
sol =) wi Col Sipen eases ONE Sees ا elid
به کار ی زا
Prise roe Lee FnlK-} wile wcmel
aul (gjle ole |) g] wl le Component
وال ار ار
QueryInterface 0
AddRef®
لاع ات۹
55
امس
همه لتمصوق ههعهآمه
ام ونم
۱
صفحه 11:
FA
IUnknown reer te ae
interface [Unknown
{
virtual HRESULT QueryInterface(IID& iid, void**
انا
virtual ULONG AddRef() =
virtual ULONG Release()
آزمایشگاه سیستم هي هوشمند
۱
vena ae
Eon هو 1
1111
صفحه 12:
FAY
ممه 1
© به طور يويا و در زمان اجرا مشخص مي نمايد كه يك
Interface ا اا 0 كار
اراته مى كردد يا خير
© براي درخواست يك كاركرد خاص از يك :]0001712011611
مى بايست ©01161797111©1120) مربوط به آن
puts Call 1, Component
Succeed ®
۹-۱۳
55
امس
همه لتمصوق ههعهآمه
ام ونم
۱
صفحه 13:
LPLOOKUP *pLookup;
TCHAR szNumber[64];
Bette) ce
۱ ORO ey Ty ae etna
pronto
۱ SGC a RICO Ee Pe
hRes = pPhoneBook->Queryinterface( IID ILOOKUP, &pLookup);
if( SUCCEEDED( hRes ) )
1
Ree ros pate «ماهنهن
pLookup->LookupByName(“Hamid", &szNumber);
وعصاتواصن ا 0عطعنه // ز()0عوعامز<-منهاومام
Protege
00
{
۱ eictec te Tone
7
Rey er
0
©0101 موضوع ارات ارتباط بين 6053002106 ها در
00
22001 t 0000000 13
صفحه 14:
oS
Component Object mono
Gb jl» Component jo bls)! cy es¥ ous! O
ها را فراهم مي کند 6
مراحل اجرا ©
160151157 ييدا كردن (11 مربوط به :11 ©001220116) در *
database
exe: CoRegisterClassFactory °
DLL: DllGetClassFactory °
00 veces ie
۳
امس
۱ همه لتمصوق ههعهآمه
صفحه 15:
15
foo
ی
Object
In-Process Server
۳
زو
7
COM
rs
oe
7
Client Process
ee
0
موضوع ارات ارتباط بين 6053002106 ها در 0101©
0000000
Cra
Application
۳
امس
همه لتمصوق ههعهآمه
صفحه 16:
Rey ee
انام ونام خانوادكي؛ فريد ملازع. 00
موضوع ارائهارتباط بين 00508086806 ها در 0181© لسع
22001 t 0000000 16
صفحه 17:
7
reams
2 Local
object
اه
۳
36۳0016 56۳۷۵۲ ۴۲۵655
"8 Remote
٠ تلا
2۵۵
eer)
rrr eetee so
eer aa ene
11
000
00
0۳
تب
تست
0
0۳
۳
امس
همه لتمصوق ههعهآمه
ارتباط بين Componentها در COMاز
طريق Interface
ارائه درس معماري سيستم هاي بزرگ
استاد مربوطه:
دکتر عبداله زاده
1
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
Component Object Model
2
ايجاد يک چارچوب استاندارد براي ارتباطات داخلي
مستقل از زبان برنامه نويسي
ارائه در پلت فرم هاي مختلف (Microsoft
Windows, Microsoft Windows NT,
)Apple, Mac, Unix
تسهيل مکانيزم هاي توسعه Component-based
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
ارتباط بين Componentها
Componentها از طريق Interfaceها با يکديگر
ارتباط دارند
اشاره گر به هر Componentدر واقع اشاره گر به يک
Interfaceمي باشد
امکان دسترسي به داده هاي Objectوجود ندارد (بر خالف
Objectها در )++C
3
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
Interface مثالي از
interface ILookup : public IUnknown
{
public:
virtual HRESULT __stdcall LookupByName( LPTSTR
lpName,TCHAR **lplpNumber) = 0;
virtual HRESULT __stdcall LookupByNumber(LPTSTR
lpNumber, TCHAR
**lplpName) = 0;
};
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
4
ويژگي هاي Interface
5
Interfaceبا کالس متفاوت است
Interfaceمستقل از Componentاي است که آن را
بازنمايي مي کند
Clientها فقط و فقط از طريق Interfaceها با
Componentها در ارتباط هستند
هر يک از Componentها مي تواند بيش از يک Interface
داشته باشد
هر Interfaceداراي يک GUIDمي باشد که ارتباط با آن از
طريق همين IDمي باشد
Interfaceها داراي Versionهاي مختلف نمي باشند
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
شماي Interface
هر Componentمي تواند بيش از يک
Interfaceداشته باشد
A
Object
B
C
6
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
Interface شماي
Client Application
Object
Interface Pointer
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
7
Interface شماي
Application
Object
Object
Application
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
8
Global Unique Identifiers
128بيت مي باشد و يکتا است
براي ارجاع به Interfaceها و Componentها به کار مي رود
اسامي Human-Readableتنها به منظور راحتي کد نويسي است و
توسط ماشين استفاده نمي شود
باعث مي گردد تا Componentها به Componentهاي اشتباه
متصل نگردند
ابزار
9
Microsoft UUIDgen
CoCreateGUID
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
IUnknown Interface
براي پياده سازي برخي کارکردهاي اساسي Interfaceبه کار
مي رود
کليه Interfaceها از آن ارث مي برند و Component
ها بايد آن را پياده سازي نمايند
داراي سه متد اصلي است
QueryInterface
AddRef
Release
10
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
IUnknown Interface
interface IUnknown
{
virtual HRESULT QueryInterface(IID& iid, void**
ppvObj) = 0;
virtual ULONG AddRef() = 0;
virtual ULONG Release() = 0;
}
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
11
QueryInterface
به طور پويا و در زمان اجرا مشخص مي نمايد که يک
Interfaceخاص توسط Componentمورد نظر ارائه
مي گردد يا خير
براي درخواست يک کارکرد خاص از يک Componentمي
بايست QueryInterfaceمربوط به آن
Componentرا Callنماييم
Succeed
Fail
12
آزمايشکاه سيستم هاي هوشمند
()http://ce.aut.ac.ir/islab
موضوع ارائه :ارتباط بين componentها در COM
از طريق Interface
نام و نام خانوادگي :فريد مالزم
E-mail:
molazem@gmail.com
LPLOOKUP *pLookup;
TCHAR szNumber[64];
HRESULT hRes;
//Call QueryInterface on the component object PhoneBook, asking
for a pointer
//to the Ilookup interface identified by a unique interface ID.
hRes = pPhoneBook->QueryInterface( IID_ILOOKUP, &pLookup);
if( SUCCEEDED( hRes ) )
{
// use Ilookup interface pointer
pLookup->LookupByName(“Hamid", &szNumber);
pLookup->Release(); // finished using the IPhoneBook interface
pointer}
else
{
// Failed to acquire Ilookup interface pointer.
}
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
13
Component Object Library
ها از طريقComponent امکانات الزم براي ارتباط بين
ها را فراهم مي کندInterface
مراحل اجرا
registry درComponent مربوط بهID پيدا کردن
database
exe: CoRegisterClassFactory
DLL: DllGetClassFactory
مورد نظر بازگردانده مي شودInterface اشاره گر به
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
14
Client Process
In-Process
Component
Object
In-Process Server
Client
Application
Local
Object
Proxy
Remote
Object
Proxy
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
COM
15
Inter-Process
Communication
LRPC
LRPC
Cross-Process
With
Lightweight RPC
RPC
RPC
Cross-network
With true RPC
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
16
Local Server Process
Local
Object
Stub
Object
COM
Local Server
Remote Server Process
Remote
Component
Object
Stub
Object
COM
فريد مالزم:نام و نام خانوادگي
E-mail:
molazem@gmail.com
Remote Server
آزمايشکاه سيستم هاي هوشمند
)http://ce.aut.ac.ir/islab(
COM ها درcomponent ارتباط بين:موضوع ارائه
Interface از طريق
17