Ovqat resepti
Download 0.95 Mb.
|
f17c5dc6cfc54c35d02030b2b706cfef «DASTURIY INJENERING” FANINING O’QUV – USLUBIY MAJMUA (Moddle tizimi asosida)
Tanqidiy yondashuv. Texnologiyalar ko'pincha asossiz murakkablik uchun tanqid qilinadi, xususan:
dasturlashning ikkita tilidan foydalanish zaruriyati (interfeyslarni tavsiflash uchun .idl va odatda yozishni amalga oshirish uchun C ++). Ehtiyoj faqat o'zingizning interfeyslaringizni yaratishda yuzaga keladi va agar ishlab chiqaruvchi tayyor interfeyslardan foydalanishni cheklab qo'ysa, paydo bo'lmaydi. C ++ sinfiga asoslangan COM ob'ektini yaratish uchun “o’tkazish” kodiga ehtiyoj (odatda ATL bu rolni o'ynaydi). Ushbu kod tajribali odam uchun foydalanish uchun ahamiyatsiz bo'lsa ham, yangi boshlanuvchilar uchun bu juda oddiy emas. Oldingi paragrafda bo'lgani kabi, bu muammo faqat o'z sinflaringizni yozish paytida yuzaga keladi va standart chet el darslaridan foydalanish paytida ro'y bermaydi (buning uchun Microsoft aqlli ko'rsatkichlar kutubxonasini yaratgan - comdef.h, _com_ptr_t operatsion tizim registrida tarkibiy qismlarni ro'yxatdan o'tkazish zaruriyati va shu bilan birga, odamning o'qishi mumkin bo'lgan GUID sinf identifikatori sifatida ishlatiladi (garchi uni o'qish mumkin bo'lgan nom bilan to'ldirsa ham). Masofaviy infratuzilma (masofaviy usulda qo'ng'iroq) DCE RPC kengaytmasi bo'lgan so'rovlar va javoblarning ikkilik formatidan foydalanadi. Bu ulkan «xavfsizlikning zaiflik yuzasiga» olib keladi va bir necha marotaba zararli dasturlarning tarqalishiga olib keldi (MSBlaster). Masofadan boshqarish infratuzilmasi (DCE RPC-dan keyin) dinamik ravishda tayinlangan TCP va UDP port raqamlaridan foydalanadi, bu esa xavfsizlik devori mavjud bo'lganda sozlashni juda qiyinlashtiradi. xatolar bilan ishlash. COM-da, 0x80070123 kabi qadriyatlarga ega bo'lgan va 32-bitli HRESULT xato kodlarini ishlatish odatiy holdir (odamlar yaqinda ularni Internet-qidiruv tizimlari osongina qidirib topishgan). Bunga qo'shimcha ravishda, tuntime type deb nomlanuvchi COM-da ish vaqti turi to'g'risidagi ma'lumot faqat "deb ataladigan" uchun qo'llab-quvvatlanadi. Parametr turlari bo'yicha katta cheklovlarga ega avtomatlashtirishga mos keladigan interfeyslar (massivlar - faqat SAFEARRAY, satrlar - faqat BSTR, ixtiyoriy tuzilmalar yo'q, faqat raqamlar, sana / vaqt, qatorlar, satrlar va avtomatlashtirishga mos keladigan boshqa ob'ektlarga havolalar). Shunisi e'tiborga loyiqki, bu kamchiliklarning aksariyati COM-ning qadr-qimmati - dasturlash tilidan mustaqillik va ishlash vaqti va C # kabi yoki "haqiqiy ob'ekt" tillarida mavjud emas, yoki Microsoft-ning (to'xtatilgan) Java dasturida. Ushbu tillar ikkala to'liq ish vaqti turidagi ma'lumotni, ro'yxatdan o'tishga hojat yo'qligini va ikkala interfeys va sinflarni ATL kabi "bo'sh joylarsiz" yozishni oddiy usulda yozish imkoniyatini beradi. Shunday qilib, MS J ++ da har qanday Java sinfi tashqi dunyoga COM sinfi sifatida arzimas ravishda nashr qilindi, ro'yxatdan o'tish kifoya edi. Xuddi shu narsa C # da mavjud. Boshqa tomondan, "haqiqatdan ham ob'ekt" tillari boshqa ob'ekt tillari tarkibiy qismlari bilan interfeysga kirishga qodir emas va butun tizimni (va pastki tizimlar va ramkalarni) bitta ish vaqtida (Java, Objective-C) bitta tilda "yuqoridan pastga" yozishni talab qiladi, yoki ular bir xil talabni qo'yadilar, lekin tilga emas, balki ish vaqtiga (.NET, C #, C ++ va VB.NET). Shunga o'xshash yangi texnologiyalar (masalan, .NET dunyosida) ushbu muammolarni hal qilishga harakat qilmoqda. U erda, odatda, masofadan boshqarish steki polimorfik va sozlanishi, bu savol-javob formatini va transport protokolini mustaqil ravishda tanlash imkonini beradi (sukut bo'yicha u endi DCE RPC emas, lekin SOAP, XML ma'lumotlar formati sifatida ishlatiladi va HTTP transport sifatida foydalanilmaydi, bu esa tayanmaydi) dinamik port raqamlari). Kech bog'lash mexanizmidan foydalanish, masalan, dinamik kutubxonadan eksport qilingan funktsiyani chaqirish bilan taqqoslaganda ishlashni sezilarli darajada kamaytiradi. Biroq, ushbu mexanizm faqat skript tillarida qo'llaniladi va agar til turi kutubxonalardagi COM interfeyslariga havolalar sifatida ob'ekt havolalarini deklaratsiyalashni qo'llab-quvvatlamasa (faqat ob-havo sifatida Excel.Workbook shaklida), faqat mavhum COM ob'ektlarini qo'llab-quvvatlaydi. (Dim obj As sifatida). Bundan tashqari, xuddi shu yondashuv Objective-C va Kakaoda qo'llaniladi. Download 0.95 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling