-
11. Data: 2011-09-18 07:42:47
Temat: Re: Modułowość programu - założenia
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-09-17 23:40, Maciej Sobczak pisze:
> On Sep 17, 5:02 pm, Michoo<m...@v...pl> wrote:
>
>> Tylko co w sytuacji gdy nie da si tego zlinkowa bo mamy plugin X i
>> jego wersj dla firm A,B r ni ce si kilkoma szczeg ami, kt rych
>> wprowadzenie do mainline nie jest ani celowe ani korzystne?
>
Miałem/mam pewien mało ambitny jako dzieło programistyczne, ale ważny
dla działów firmy program.
Początkowo różnice prowadziłem #ifdef'ami, czyli miałem z jednego kodu
inne binarki dla rożnych działów firmy. Kiedyś przeszedłem na jedną dla
wszystkich binarkę, parametrem konfiguracyjnym przełączającą funkcjonalność.
Wydzielone 'pluginy' też zaczynałem, miało ułatwić życie (próba nowej
wersji, te sprawy), ale okazało się kłopotliwe, jak piszecie.
jedna binarka, zakładam próbny katalog, od niczego z DLL nie jest
zależny, potwierdzam z użytkownikiem poprawne działanie - to mój obecny
wybór.
PS. DLL w Windows, można mieć odmienne wersje w katalogach przy różnych
aplikacjach, ale jak jest jedna z nich załadowana, działa dla nich
wszystkich. Niektórzy mówią DLL hell.
-
12. Data: 2011-09-18 08:12:34
Temat: Re: Modułowość programu - założenia
Od: Artur Muszyński <a...@u...wytnijto.com.pl>
W dniu 2011-09-18 09:42, Jacek Czerwinski pisze:
> PS. DLL w Windows, można mieć odmienne wersje w katalogach przy różnych
> aplikacjach, ale jak jest jedna z nich załadowana, działa dla nich
> wszystkich. Niektórzy mówią DLL hell.
A to nie dotyczy tylko Win16?
artur
-
13. Data: 2011-09-18 08:32:04
Temat: Re: Modułowość programu - założenia
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-09-18 10:12, Artur Muszyński pisze:
> W dniu 2011-09-18 09:42, Jacek Czerwinski pisze:
>> PS. DLL w Windows, można mieć odmienne wersje w katalogach przy różnych
>> aplikacjach, ale jak jest jedna z nich załadowana, działa dla nich
>> wszystkich. Niektórzy mówią DLL hell.
>
> A to nie dotyczy tylko Win16?
>
32 na poziomie generacji NT, XP na pewno, własną krwią sprawdzony
konflikt. DLL o nazwie X jak już jest załadowana (aktywna), ma
priorytet, i inna nie jest ładowana.
Konflikt mają nawet programy z wiodącego "rządowego" softwarehousu, z
różnych działów tej firmy, o ile się zejdą na jednym komputerze. Dla
świętego spokoju kupuje się księgowej drugi komputer.
Czy w Vista/7 wyeliminowali? Nie wiem. Pewnie w jakiejś wirtualizacji
dało by się wyeliminować.
-
14. Data: 2011-09-18 08:59:41
Temat: Re: Modułowość programu - założenia
Od: Patryk Włos <p...@i...peel>
>> Za my, e mamy aplikacj obs uguj c kilkaset da na minut . W
>> przypadku odpowiednio rozwi zanego systemu plugin w mo emy oznaczy
>> plugin jako przeznaczony do wy adowania(zostanie wy adowany gdy sko cz
>> si wszystkie po czenia), za adowa now wersj i mie aktualizacj bez
>> downtime.
>
> Widziałeś już coś takiego w praktyce? Nazwa produktu, please.
Serwerowe programy antywirusowe tak działają. Kaspersky przykładowo.
Nawet ClamAV, tylko ClamAV nie ma w swoich bazach prekompilowanego kodu
wykonywalnego, a same sygnatury. Ale idea ta sama.
> BTW - co to znaczy "gdy skończą się wszystkie połączenia" i czym to
> się różni od downtime?
>
> BTW2 - a co jak się połączenia nie skończą, bo zawsze przyjdzie jakieś
> nowe i nigdy nie będzie ich zero? Trzeba zrobić jakiś mechanizm, który
> nie pozwoli na stworzenie nowych połączeń. I czym *to* się różni do
> downtime z punktu widzenia tego odrzuconego klienta?
W antywirusach jest taki patent, że połączenia odebrane do pewnego
momentu są obsługiwane przez stary silnik, a po tym momencie już przez
nowy silnik (czyli w pewnym zakresie czasu działają oba silniki
jednocześnie i po zakończeniu obsługi starych połączeń stary silnik jest
wywalany z pamięci).
Patryk
-
15. Data: 2011-09-18 09:31:23
Temat: Re: Modułowość programu - założenia
Od: "Robert Winkler" <n...@n...org>
>>> PS. DLL w Windows, można mieć odmienne wersje w katalogach przy różnych
>>> aplikacjach, ale jak jest jedna z nich załadowana, działa dla nich
>>> wszystkich. Niektórzy mówią DLL hell.
>>
>> A to nie dotyczy tylko Win16?
>>
>
> 32 na poziomie generacji NT, XP na pewno, własną krwią sprawdzony
> konflikt. DLL o nazwie X jak już jest załadowana (aktywna), ma priorytet,
> i inna nie jest ładowana.
>
> Konflikt mają nawet programy z wiodącego "rządowego" softwarehousu, z
> różnych działów tej firmy, o ile się zejdą na jednym komputerze. Dla
> świętego spokoju kupuje się księgowej drugi komputer.
>
> Czy w Vista/7 wyeliminowali? Nie wiem. Pewnie w jakiejś wirtualizacji dało
> by się wyeliminować.
Już w Windows XP rozwiązano ten problem.
W Windows XP i nowszych aby aplikacja miała XP-kowe UI
trzeba było do niej dodać manifest,
zmuszało to system do załadowania dla danego programu
Microsoft.Windows.Common-Controls w wersji 6.0.
Każdy może skorzystać z tego mechanizmu
wystarczy zainstalować swoje biblioteki w winsxs
i do programu dodać manifest określający jakie wersje tych bibliotek
mają być ładowane z winsxs.
--
__________
Pozdrawiam
Robert Winkler
-
16. Data: 2011-09-18 12:49:23
Temat: Re: Modułowość programu - założenia
Od: Paweł Kierski <n...@p...net>
W dniu 2011-09-18 10:59, Patryk Włos pisze:
>>> Za my, e mamy aplikacj obs uguj c kilkaset da na minut . W
>>> przypadku odpowiednio rozwi zanego systemu plugin w mo emy oznaczy
>>> plugin jako przeznaczony do wy adowania(zostanie wy adowany gdy sko cz
>>> si wszystkie po czenia), za adowa now wersj i mie aktualizacj bez
>>> downtime.
>>
>> Widziałeś już coś takiego w praktyce? Nazwa produktu, please.
>
> Serwerowe programy antywirusowe tak działają. Kaspersky przykładowo.
> Nawet ClamAV, tylko ClamAV nie ma w swoich bazach prekompilowanego kodu
> wykonywalnego, a same sygnatury. Ale idea ta sama.
>
>> BTW - co to znaczy "gdy skończą się wszystkie połączenia" i czym to
>> się różni od downtime?
>>
>> BTW2 - a co jak się połączenia nie skończą, bo zawsze przyjdzie jakieś
>> nowe i nigdy nie będzie ich zero? Trzeba zrobić jakiś mechanizm, który
>> nie pozwoli na stworzenie nowych połączeń. I czym *to* się różni do
>> downtime z punktu widzenia tego odrzuconego klienta?
>
> W antywirusach jest taki patent, że połączenia odebrane do pewnego
> momentu są obsługiwane przez stary silnik, a po tym momencie już przez
> nowy silnik (czyli w pewnym zakresie czasu działają oba silniki
> jednocześnie i po zakończeniu obsługi starych połączeń stary silnik jest
> wywalany z pamięci).
To, że tak się robi, to nie znaczy, że ta metoda jest warta polecenia.
Sam coś takiego pisałem w AV, ale teraz bym tego nie powtórzył 8-)
Na desktopie lepiej wymusić restart engine'u (co najwyżej blokując na
ten czas sieć).
A na serwerach - lepiej mieć hot-swap na poziomie aplikacji
(równoległych instancji razem ze sprzętem).
Teraz mam system, który wygląda, jakby się prosił o rozwiązanie
z dynamicznym ładowaniem modułów, Mam graf przetwarzania, przez
który płyną komunikaty. Każdy węzeł to moduł, który robi specyficzne
przetwarzanie.
Ale zrezygnuję z dynamicznego ładowania Właśnie na rzecz tworzenia
nowych instancji, które będą miały wkompilowane nowe/zmienione moduły.
Wystarczyło dodać moduł generycznego serwera i klienta, żeby połączyć
grafy z różnych instancji. Jeśli muszę wymienić kawałek grafu, mogę
zrobić obejście przez inną instancję aplikacji - do czasu najbliższego
down-time'u, który i tak czasem musi wystąpić.
--
Paweł Kierski
n...@p...net
-
17. Data: 2011-09-18 13:31:12
Temat: Re: Modułowość programu - założenia
Od: Jacek Czerwinski <...@...z.pl>
W dniu 2011-09-18 11:31, Robert Winkler pisze:
>>
>> Czy w Vista/7 wyeliminowali? Nie wiem. Pewnie w jakiejś wirtualizacji
>> dało by się wyeliminować.
>
> Już w Windows XP rozwiązano ten problem.
...
> wystarczy zainstalować swoje biblioteki w winsxs
> i do programu dodać manifest określający jakie wersje tych bibliotek
> mają być ładowane z winsxs.
Nie wiedziałem. Człowiek całe życie się uczy.
O ile o tym samym mówimy
a) nie mamy żadnej załadowanej, i szukamy 'właściwej'
b) jest jedna już załadowana i system NIE SZUKA pliku z następną.
W każdym razie więksi ode mnie (o kilka rzędów wielkości) tego nie
robią. Nie wiem dlaczego. Program (tej samej firmy) dla biurokracji w
przychodni po użyciu (jednocześnie) programem do składek zus wykłada się
na spornej SSL*.DLL
Mnie osobiście (jako użytkownika windows) winsxs przyprawia o doznania
żołądkowe, nie mam mocnego przekonania że dla specyficznej zmienności
aplikacji biznesowych to dobra droga.
-
18. Data: 2011-09-18 15:55:56
Temat: Re: Modu?owo?? programu - za?o?enia
Od: A.L. <l...@a...com>
On Thu, 15 Sep 2011 15:12:49 +0200, Lukasz <k...@a...pl[usun]>
wrote:
>
>Sam malutki program będzie składał się z okna głównego i np. dialogu
>logowania oraz będzie ładował dll od frameworka, jeśli będą dostępne
>pluginy modułów, to wtedy będzie rysowany interfejs od modułu. Moduły
>będą też korzystały z dll frameworka(zawiera bazowe, więc chyba musi).
Ja mysle ze nei masz zielonego pojecia co to jest modul, modulowosc i
po co one sa. Moeze bys tak cos poczytal?...
A.L.
-
19. Data: 2011-09-18 16:21:58
Temat: Re: Modu?owo?? programu - za?o?enia
Od: "Waldek M." <w...@l...localdomain>
Dnia Sun, 18 Sep 2011 10:55:56 -0500, A.L. napisał(a):
>>Sam malutki program będzie składał się z okna głównego i np. dialogu
>>logowania oraz będzie ładował dll od frameworka, jeśli będą dostępne
>>pluginy modułów, to wtedy będzie rysowany interfejs od modułu. Moduły
>>będą też korzystały z dll frameworka(zawiera bazowe, więc chyba musi).
>
> Ja mysle ze nei masz zielonego pojecia co to jest modul, modulowosc i
^^^^^
> po co one sa. Moeze bys tak cos poczytal?...
^^^^^^ ^^^^^^^^^^^^
Sam byś poczytał, może byś wreszcie przestał mieć problemy
z rozumieniem dyskusji w Usenecie.
A i może pisanie w języku polskim poszłoby Ci lepiej.
Waldek
-
20. Data: 2011-09-18 16:59:43
Temat: Re: Modu?owo?? programu - za?o?enia
Od: Lukasz <k...@a...pl[usun]>
W dniu 18.09.2011 17:55, A.L. pisze:
> Ja mysle ze nei masz zielonego pojecia co to jest modul, modulowosc i
> po co one sa. Moeze bys tak cos poczytal?...
Myślę że Pan myśli inaczej niż większość, bo jak widać dyskusja trwa i w
dodatku na temat.
Pozdrawiam i zapraszam do innych wątków gdzie ma Pan coś w temacie do
powiedzenia.