[ Pobierz całość w formacie PDF ]
.Konsolidacjê statyczn¹ cechuje jedna podstawowa wada, ujawniaj¹ca siê jedyniew przypadku aplikacji, które korzystaj¹ z bibliotek DLL zdefiniowanych przezu¿ytkownika.Wad¹ t¹ jest duplikowanie siê kodu VCL i RTL w ka¿dym module (wg³Ã³wnej aplikacji) i ka¿dej bibliotece DLL.Oznacza to, ¿e kod jestniepotrzebnie powtarzany.Powiedzmy, dla przyk³adu, ¿e ka¿dy modu³ wymaga minimum 200 KB podstawowegokodu VCL i RTL.Dodatkowo za³Ã³¿my, ¿e posiadasz aplikacjê g³Ã³wn¹ i dziesiêæwspieraj¹cych j¹ bibliotek DLL.Wynika z tego ¿e 2200 KB zostaje zu¿ytych nakod (11 × 200 KB), podczas gdy w rzeczywistoœci wystarczy³oby 200 KB.Zarównoaplikacja, jak i wszystkie biblioteki DLL s¹ konsolidowane statycznie i dlategonie mog¹ wspólnie korzystaæ z kodu bibliotek VCL i RTL.Konsolidowanie dynamiczneKonsolidowanie dynamiczne odnosi siê do scenariusza, w którym aplikacjadynamicznie ³aduje kod bibliotek w trakcie swojej pracy.W przypadku aplikacjistworzonej w Delphi oznacza to, ¿e ka¿dy wymagany pakiet jest ³adowany wtrakcie jej pracy.W sk³ad wymaganych pakietów z ca³¹ pewnoœci¹ wejdzieprzynajmniej jeden pakiet VCL, a byæ mo¿e równie¿ dodatkowe pakietyzewnêtrzne.Aplikacja ³aduje pakiety w sposób automatyczny.Nie wymaga to pisaniadodatkowego oprogramowania, poniewa¿ problemem tym zajmuje siê samo Delphi.Wybranie konsolidacji dynamicznej nie wymaga równie¿ wprowadzania jakichkolwiekzmian w kodzie.Wymagana jest natomiast zmiana sposobu dystrybucji aplikacji, oczym bêdzie mowa za chwilê.Konsolidowanie dynamiczne ma jedn¹ podstawow¹ przewagê nad konsolidowaniemstatycznym: kilka modu³Ã³w jest w stanie korzystaæ z centralnie ulokowanego kodu(pakietu).Pamiêtasz przytoczony niedawno przyk³ad aplikacji i 10 wspieraj¹cychj¹ bibliotek DLL? W przypadku konsolidacji dynamicznej, aplikacja i wszystkiebiblioteki DLL mog¹ wspólnie korzystaæ z kodu zawartego w pakiecie VCL.Ka¿dy ztych modu³Ã³w bêdzie mniejszy o oko³o 200 KB, poniewa¿ podstawowy kod bêdziezawarty w bibliotekach DLL bior¹cych udzia³ w pracy aplikacji.Zaleta tauwydatnia siê, gdy na produkt sk³ada siê kilka aplikacji lub wiele bibliotek.Z konsolidacj¹ dynamiczn¹ ³¹czy siê jednak kilka problemów.Po pierwsze –pakiety i biblioteki DLL, które nale¿y dystrybuowaæ razem z aplikacj¹, mog¹przybraæ ogromne rozmiary.Sam podstawowy pakiet VCL – VCL40.BPL – zajmuje 1.8MB.Oprócz tego pakietu Twoja aplikacja mo¿e wymagaæ równie¿ innych, a tooznacza ¿e minimalny rozmiar bibliotek DLL wyniesie w³aœnie 1.8 MB.Drugi problem konsolidacji dynamicznej jest jeszcze bardziej k³opotliwy idotyczy ogólnie rzecz bior¹c ró¿nych wersji programów.Zobrazujê to zagadnieniena przyk³adowym scenariuszu.Powiedzmy, ¿e tworzysz aplikacjê wykorzystuj¹cpakiet Delphi 4.02 (zak³adamy istnienie kilku wersji Delphi 4) i dodatkowokorzystasz z konsolidacji dynamicznej, która wymaga od Ciebie do³¹czenia doprogramu pakietów VCL i RTL DLL.Klient, któremu sprzeda³eœ aplikacjê,instaluje oprogramowanie na swoim komputerze i wszystko dzia³a poprawnie.W miêdzyczasie, ja budujê aplikacjê korzystaj¹c z pakietu Delphi 4.0 (Jestemzbyt sk¹py, aby zap³aciæ za przes³anie uaktualnienia) i równie¿ stosujêkonsolidacjê dynamiczn¹.Twój klient kupuje i instaluje moj¹ aplikacjê.Mójprogram instalacyjny jest nieprofesjonalny i dzia³a niezgodnie z przyjêtymizasadami, powoduj¹c zast¹pienie pakietów i bibliotek DLL, które zainstalowa³aTwoja aplikacja.Niespodziewanie Twoja aplikacja przerywa pracê poniewa¿zainstalowane przeze mnie pakiety s¹ starsze od tych zainstalowanych uprzednio(przez Twój program) i nie s¹ on kompatybilne miêdzy sob¹.Widzisz w czym tkwiproblem?W rzeczywistoœci, kompanie (takie jak Inprise) produkuj¹ce oprogramowaniekomercyjne, zapobiegaj¹ powstawaniu takich problemów stosuj¹c inne nazwypakietów i bibliotek DLL w ka¿dej kolejnej wersji produktu, a tak¿e do³¹czaj¹cdo bibliotek i pakietów informacje o ich wersji.(Dobry program instalacyjny napocz¹tku sprawdza numer wersji i instaluje nowe pakiety tylko wtedy, gdy teistniej¹ce w systemie u¿ytkownika s¹ starsze od instalowanych.) Niemniej jednakproblemem nie s¹ pakiety pochodz¹ce z firmy Borland.Prawdziwy problem pojawia siê przy stosowaniu komponentów pochodz¹cych od firmnie dbaj¹cych zbytnio o sposób prowadzenia interesów.Kupuj¹c pakiet pochodz¹cyz firmy komputerowej Jana Kowalskiego, zak³adasz, ¿e Jan Kowalski zna siê natworzeniu pakietów.To mo¿e (ale wcale nie musi) byæ dobre za³o¿enie.Spójrzmyprawdzie w oczy: od momentu kiedy Internet sta³ siê tak popularny, wszelkiegotypu komponenty dostêpne s¹ z szerokiego krêgu Ÿróde³.W wielu przypadkach niewiesz, co dostajesz do r¹k, dlatego b¹dŸ czujny sprowadzaj¹c niedrogie lubdarmowe komponenty.Który sposób jest lepszy?Ju¿ s³yszê jak siê zastanawiasz, „Czy powinienem wiêc stosowaæ konsolidacjêstatyczn¹, czy te¿ dynamiczn¹?”.OdpowiedŸ na to pytanie zale¿y od programujaki tworzysz.Generalnie, je¿eli budujesz pojedyncz¹ aplikacjê ma³ego lubœredniego rozmiaru, powinieneœ zastosowaæ konsolidacjê statyczn¹.W przypadku,gdy tworzysz bardzo obszerne aplikacje lub aplikacje z du¿¹ iloœci¹ bibliotekDLL, korzystniejsze mo¿e okazaæ siê zastosowanie konsolidacji dynamicznej.Rozpatrzenie prostego przyk³adu mo¿e pomóc w lepszym zrozumieniu tegozagadnienia.W rozdziale szóstym stworzy³eœ program ScratchPad.Program ten, poskompilowaniu i statycznym skonsolidowaniu, przyjmuje rozmiar (w przybli¿eniu)równy 365 KB.Je¿eli skonsolidujesz ScratchPad korzystaj¹c z pakietów,otrzymasz plik wykonywalny (.exe) o rozmiarze 21 KB, ale do programu musiszdo³¹czyæ zbiór pakietów o ³¹cznym rozmiarze 1.8 MB.Jak widzisz, konsolidacjadynamiczna w tym przypadku okaza³a siê nieefektywna.Stosowanie pakietów wykonywalnychwe w³asnych aplikacjachDynamiczna konsolidacja wymaga zmiany tylko jednego ustawienia w opcjachprojektu.Postêpuj wed³ug poni¿szych kroków:Aby otworzyæ okno dialogowe opcji projektu, wybierz polecenie menu Project½Options.Wybierz zak³adkê Packages i kliknij na opcji Build with runtime packages (Budujz pakietami wykonywalnymi), widocznej o do³u okna (górn¹ czêœæ okna, dotycz¹c¹pakietów œrodowiskowych, mo¿esz zignorowaæ.)Kliknij na przycisku OK, aby zamkn¹æ okno opcji projektu.Ponownie zbuduj projekt (za pomoc¹ opcji Project|Build…).To wszystko.Pamiêtaj, ¿e konsolidacja dynamiczna nie wymaga ¿adnych zmian wkodzie programu
[ Pobierz całość w formacie PDF ]
Darmowy hosting zapewnia PRV.PL