FB Embedded i dwa jednoczesne połączenia

0

Witam

Tak kiedyś wpadłem na pomysł przeróbki pewnej aplikacji tak aby działała z FB Embedded. No i dzisiaj zgłębiłem temat i uświadomiłem sobie że nie przymyślałem jednej rzeczy. Razem z aplikacją działa inna która także nawiązuje połączenie z bazą danych. Reasumując są dwa programy a więc i połączenia dwa - co jak wiadomo nie wchodzi w gre przy FB Emb.

No i tak sobie główkuje jakie mam wyjscia ...

  1. Integracja obu aplikacji w jedną
    Przy głównej aplikacji cały czas siedzi user i coś klika. Druga aplikacja jest odpowiedzialna za synchronizację danych (przez TCP przesyłane są dane i importowane do bazy). I ta druga aplikacja właściwie jeśli chodzi o interfejs ma tylko okno z logami, lecz co gorsze ma czasem spore przymułki - w czasie importu/eksportu danych. Do tej pory nie stanowiło to problemu, ale po połączeniu na bank było by halo że program się zawiesza.

  2. Integracja obu aplikacji + druga aplikacja jako wątek
    To już bardziej sensowne, aczkolwiek gdzieś mi się obiło o uszy że lepiej przy wątkach zestawiać drugie połączenie z bazą. No i tu pytanie do was - ma to sens ? W zasadzie całą logikę musiał bym przenieść do Execute. Aplikacja w czasie pracy jak nie ma co robić - to sprawdza czy jest co do roboty co minutę - to chyba by pasowało Event'a zapiąć. No i w zasadzie w tej drugiej aplikacji jest też ClientSocket, ale jakby on sobie działał w stNonBlocking to może by nie zamulał ... chociaż jak pisałem tą drugą aplikację, to pamiętam że wywołanie ProcessMessages nie robiło dla niej dobrze ... Tego Socket'a też do wątka by trzeba wcisnąć ?

  3. Inna metoda udostępnienia połączenia dla drugiej aplikacji. Dało by rade coś takiego zrobić ? Nie jest żaden problem żeby między aplikacjami wymienić jakieś dane (messages). Więc mógłbym przekazać jakieś namiary do drugiej aplikacji - ale coś czuje że to nie pójdzie, bo to przecież rołączne przestrzenie adresowe ...

Macie jakieś pomysły ? Ew. który z trzech wymienionych ma szanse na realizację ?

Z góry dziękuję za podpowiedzi
b

0

UIB http://sourceforge.net/projects/uib są threadsafe więc powinno dać radę zrobić 2

0

No właśnie threadsafe.

A próbowałeś kiedyś Misiekd robić na IBX'ach takie rzeczy ? Bo tak się zastanawiam, stwierdzenie że każdy wątek powinien mieć osobny TIBDatabase, przewijało się na www kilka razy - ale może to chodzi o to jak wątków jest więcej ? Ja miałbym jeden (znaczy w sumie 2 bo główny i ten drugi), i w zasadzie nie ma opcji żeby aplikacja główna wykonywała kod z tej drugiej - może w takim przypadku nie ma problemu ?

Jeśli to możliwe nie chciałbym zmieniać technologii dostępu. Jeszcze w tej pobocznej aplikacji by to jako tako przeszło, ale ta główna to już jest kobyła i taka akcja nie wchodzi w grę. Proste testy nie ujawniają żadnych problemów, obawiam się jednak jak do wątku wcisnę całą tą drugą aplikację to coś się może zacząć dziać nie tak.

Swoją drogą zastanawiam się, bo pisało że IB 7.5 ma już gds'a threadsafe'owego, to możę i FB2 ma ... ?

Pozdro
b

0

ibxy nie są threadsafe i dlatego każdy wątek powinien mieć własne połączenie co przy fbembedded jest niemożliwe.
Co do szans, że się nie wysypie to 100% nie będziesz miał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1