Biz mijoz tomoni nisbatan murakkab dasturni (ActiveX / .net / Delphi / C++ / COM) SxS dan foydalanishga moslashtirmoqdamiz, bu esa administrator bo'lmagan joylashuvga erishish va mahsulotimizning eski versiyalaridan izolyatsiya qilish imkonini beradi.
Biz .net ui, Delphi ui va biz procda ishlatadigan COM serverlari kabi deyarli barcha proc komponentlarimiz uchun bu maqsadga erishdik, bu jarayonda foydalanilgan barcha kutubxonalarni tavsiflovchi manifest faylni tuzib, ro'yxatdan o'tmasdan. har qanday komponentning mijozida (deyarli).
Va bu erda deyarli qism keladi: Ayni paytda bizning ilovamiz (uning c++ qismidan) proc dan tashqari ActiveX serverini (Delphi ActiveX EXE) chaqiradi, bu esa o'z navbatida boshqa proc ActiveX serverlarini (uchinchi tomon plaginlari, har qanday narsa bu erda ishlaydi, Delphi, C++, har qanday narsa, agar u ActiveX EXE proc dan tashqarida bo'lsa va bizning interfeyslarimizni amalga oshiradi).
Bizga ma'lumki SxS proc ActiveX serverlarini qo'llab-quvvatlamaydi. Va biz ushbu ob'ektlardan proc com serverlarida bo'lgani kabi, asosiy jarayonimizda foydalana olmaymiz, chunki bu bizning ilovamizni jiddiy qayta yozishni va hatto eng yomoni, uchinchi tomon vositalari va sotuvchilari tomonidan ishlatiladigan ochiq API-ning uzilishini talab qiladi, api. biz ruxsat bera olmaydigan buzilish.
Biz ushbu maqolaga duch keldik, unda IHTMLDocument2 faylini Internet Explorer oynasidan qanday chiqarish mumkinligi tasvirlangan. alohida jarayon. Bu bizni ushbu yondashuv haqida o'ylashga majbur qildi:
Biz ikkilamchi sun'iy yo'ldosh ilovasini/jarayonini yaratamiz, u ActiveX-ni jarayon serveridagi kabi ishga tushiradi. Keyin biz LresultFromObject va ObjectFromLresult sun'iy yo'ldoshdan ActiveX ob'ektiga havolani o'tkazish uchun asosiy ariza jarayoniga ariza. Sun'iy yo'ldosh ilovasi SxS rejimida ishlashga imkon beruvchi o'zining manifest fayliga ega bo'ladi.
Ushbu Delphi ActiveX EXE va uchinchi tomon AciveX EXE plaginlari o'rtasida muloqot qilish uchun xuddi shunday yondashuv qo'llaniladi.
Muqobil yechim mavjud, biz hozircha yuqoridagi taklif qilingan yechimdan afzal ko'rmaymiz, bu ikki jarayon o'rtasidagi aloqa kanalini ochish uchun .net remoting va .net com proksi sinflaridan foydalanish, com so'rovini .net ga tarjima qilish. remoting va ikkinchi jarayonda com ga qayting.
Shunday qilib, savol tug'iladi:
- Ushbu yondashuv haqida nima deb o'ylaysiz?
- Muammoning yaxshiroq yechimini ko'ryapsizmi?