ne6o za COM+
5 отговора
181 прегледа
ne6o za COM+
Zna4i, iskam da razbera dali e vezmojno da napravq slednoto ne6o?
Na edit komputer v LAN mreja registriram edin COM obect koito raboti kato out-off-proccess server. Klientite se sverzvat ot drugite komputri, v smisal vzimat interfeisen ukazatel. Komponenta trqbva da upravlqva harduera na komputera na koito e instaliram, veprosa e 4e ne znam kak to4no da konfiguriram COMa taka 4e da ima sinhronizaciq mejdu klientite(klientite edna instanciq li da polzvat ili kak?).
6e byda mnogo blagodaren na vseki koito dade nqkakva ideq!

Na edit komputer v LAN mreja registriram edin COM obect koito raboti kato out-off-proccess server. Klientite se sverzvat ot drugite komputri, v smisal vzimat interfeisen ukazatel. Komponenta trqbva da upravlqva harduera na komputera na koito e instaliram, veprosa e 4e ne znam kak to4no da konfiguriram COMa taka 4e da ima sinhronizaciq mejdu klientite(klientite edna instanciq li da polzvat ili kak?).
6e byda mnogo blagodaren na vseki koito dade nqkakva ideq!
Re: ne6o za COM+
Аз съм правил такова нещо, когато навлизах в COM, и дори работи, но не с COM+, а с DCOM. Идеята е следната: правиш обектите си free-threaded, за да могат да бъдат използвани от много клиенти. Нещата, които искаш да са общи, ги слагаш в статични променливи за класа, или пък в глобални променливи (все пак си говорим за EXE). Освен това трябва да конфигурираш DCOM property-тата по такъв начин, че да се стартира само едно EXE. Може би трябва да се укаже, че компонентът ти тръгва като някой точно определен user, а не с identity-то на човека, който го ползва, за това не съм сигурен. Експериментирай 
Re: ne6o za COM+
Вариантите са в общи линии 2 - едното е да конфигурираш DCOM ръчно в registry- тата на клиентите и сървъра така че да извикват компонента на сървъра, както е описано в предишния постинг. Другото е да ползваш COM+ който ще направи за теб същото, само дето няма да е занимаваш (предимство 1). На кратко - създаваш COM+ приложение (предимство - така можеш и с appartment да работиш, COM+ ще създаде до 8 треда), и му експортваш стъбовете, които инсталираш на другите машини. Виж в хелпа е описано как се прави, с няколко кликания е. Трето предимство е че ще можеш да затегнеш securiy.
не ме ебе как е Вуте, аз гледам да съм си добре
не ме ебе как е Вуте, аз гледам да съм си добре
Re: ne6o za COM+
Не съм казал, че трябва да се прави ръчно. Значи, в сървърното приложение променяш извикването към RegisterClassObjects, за да се стартира само едно exe. Става така:
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED);
На сървъра security пермишъните се нагласят с DCOMCNFG.EXE.
На клиентските машини нищо не е необходимо да става ръчно - просто трябва да се регистрира proxy/stub-а на сървърното приложение. Освен това, в извикването към CoCreateInstanceEx трябва да подадеш името на сървъра в COSERVERINFO обекта, и това е.
hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE | REGCLS_SUSPENDED);
На сървъра security пермишъните се нагласят с DCOMCNFG.EXE.
На клиентските машини нищо не е необходимо да става ръчно - просто трябва да се регистрира proxy/stub-а на сървърното приложение. Освен това, в извикването към CoCreateInstanceEx трябва да подадеш името на сървъра в COSERVERINFO обекта, и това е.
Re: ne6o za COM+
Е .... добре де. Нека го формулирам така - с COM+ ще стане по-бързо и лесно от който и начин на регистрация с DCOM да избере. Съгласен?
не ме ебе как е Вуте, аз гледам да съм си добре
не ме ебе как е Вуте, аз гледам да съм си добре
Re: ne6o za COM+
Възможно е... Предполагам, че силно зависи от това точно какво иска да направи.