1. Wstęp Od zarania dziejów człowiek na każdym kroku starał się ułatwiać sobie życie. Zaczęło się od prostych narzędzi i doszło do samolotów, elektroniki i wszystkich wynalazków którymi możemy się cieszyć na co dzień. Odkąd wynaleziono komputery zawsze był problem z ich szybkim programowaniem. Wszyscy słyszeliśmy o kartach perforowanych, językach niskiego poziomu takich jak Asembler i wielu innych rozwiązaniach które w końcu zostały wyparte w efekcie rozwoju technologicznego i nowych zastosowań jakie elektronika wzięła na swoje barki. Pojawiła się potrzeba uproszczenia procesu programowania. Pojawiły się języki wysokiego poziomu, takie jak C, C++, Pascal, których kompilatory przejmowały na swoje barki większość procesu zarządzania niskopoziomowymi funkcjami procesora, takimi jak wykorzystanie rejestrów lub kontrola nad wykorzystaniem pamięci. Pojawiły się jednak nowe potrzeby. Wachlarz zastosowań maszyn liczących rozrósł się do ogromnych rozmiarów. Takich, że w tej chwili nikt nie jest w stanie być specjalistą w każdej dziedzinie związanej z informatyką. Komputer zaczął pełnić role nie tylko edytora tekstów lub maszyny liczącej. Stał się również centrum domowej rozrywki. Pojawiły się nowe technologię, nowy sprzęt nad którym trzeba było jakoś efektywnie zapanować. Pojawiły się interfejsy API i Framework-i. API służą do komunikowania się jednego systemu z innym. Może to być komunikacja oprogramowania z oprogramowaniem jak również oprogramowania ze sprzętem. Do najpopularniejszych interfejsów API należą np.: Windows API, OpenGL, DirectX. Framework-i natomiast to rozszerzenia języków programowania pozwalające, na skróty, realizować najczęstsze dla danego języka zadania. Jednymi z bardziej znanych Framework-ów są: .NET, Ruby on Rails, CakePHP, NetBeans, Zend Framework, Prototype. W mojej pracy magisterskiej postanowiłem się skupić na Framework-ach języków skryptowych PHP i JavaScript. Postaram się przybliżyć nieco ich zastosowanie i możliwości które dają programiście na przykładzie aplikacji aukcji internetowych. Pokaże jak w bardzo krótkim czasie można stworzyć aplikację która po drobnych modyfikacjach i rozbudowaniu mogłaby stanowić świetną platformę dla handlu internetowego. Tezą mojej pracy mogłoby być zdanie: Można w przeciągu miesiąca stworzyć bezpieczny system aukcji internetowych korzystając z najnowszych technologii i najpopularniejszych Framework-ów języków skryptowych. Innymi moimi celami są np. przyjazny interfejs użytkownika, możliwie szerokie wykorzystanie technologii AJAX 1 (zapewniającej mniejsze obciążenie serwera i znacznie poprawiającą wygodę użytkowania aplikacji www) i wdrożenie nowatorskiego sposobu licytacji nie spotykanego w żadnych serwisach aukcyjnych istniejących w naszym kraju. Kod aplikacji będzie zgodny ze wszystkimi ogólnie przyjętymi standardami w sieci (np. każda pod strona musi się poprawnie walidować). W mojej pracy omówię szerzej niektóre dostępne darmowe Framework-i języków PHP i JavaScript oraz nakreślę szerzej problemy związane z projektowaniem serwisów www ze szczególnym uwzględnieniem systemów aukcji internetowych. Praca będzie zawierać szczegółowy opis projektowania i implementacji systemu aukcji internetowych. Na zakończenie podsumuję efekt zastosowania wykorzystanych technologii. 2 2. Framework-i języków skryptowych Framework-i języków skryptowych zostały stworzone w odpowiedzi na rosnące wymagania rynku. Zastosowania stron www rozrastają się w niesamowitym tempie. Nie ma mowy już żeby jakikolwiek liczący się serwis mógł się obejść bez dynamicznie zmieniającej się zawartości, systemu rozbudowy treści przez samych użytkowników, pod stron które dynamicznie reagują na poczynania użytkownika i takich elementów jak ankiety, kanały rss lub animacje. Aplikacje internetowe coraz bardziej przypominają te znane nam z Windows-ów. Całe to zamieszanie określane jest szumną nazwą Web 2.0. Bez języków skryptowych działających zarówno po stronie serwera jak i po stronie przeglądarki nie dało by się zrealizować tej koncepcji. Natomiast bez Framework-ów nie dało by się zrealizować jej w rozsądnym czasie. Framework-i załatwiają mnóstwo zadań które wcześniej programiści musieli realizować praktycznie od zera korzystając tylko ze standardowych funkcji jakie zapewniają skryptowe języki programowania. Takimi zadaniami są np.: Komunikacja z bazą danych Autentykacja użytkowników Zarządzanie datami i walutami Obsługa kanałów rss Obsługa plików Wyświetlanie zawartości Obsługa zadań związanych z pocztą email Catcheowanie zawartości Walidacja danych przesyłanych przez użytkownika Przy zastosowaniu Framework-ów ilość kodu do wpisania zmniejsza się często nawet o połowę, a jakość i czytelność kodu jest bez porównania lepsza. Framework-i poza opisanymi wcześniej zaletami zwiększają również bezpieczeństwo aplikacji skrzętnie filtrując dane które np. wprowadzamy do bazy danych. Jeśli korzystamy np. z gotowego systemu autentykacji, nie ma mowy o pomyłkach w postaci pozostawienia otwartych drzwi dla ataków typu SQL injection. Framework-i języka javascript pozwalają na szybszy dostęp do elementów interfejsu DOM strony internetowej oraz zapewniają gotowe rozwiązania dla połączeń asynchronicznych stosowanych w technologii AJAX. Wszystko to sprawia, że w przeważającej większości przypadków wykorzystanie Framework-ów do programowania serwisów internetowych ma bardzo dobre uzasadnienie. 3 Jeśli są zalety to muszą być też wady i niestety jak zwykle tak jest i w tym przypadku. Wykorzystanie framework-ów łączy się niestety z lekkim spadkiem wydajności serwisów. Jest to związane z niejednokrotnie niemałym narzutem operacji wykonywanych przez serwer http. W większości przypadków, jednak, zwiększenie czasu generowania strony www jest pomijalne i korzyści wynikające z zastosowania gotowego rozwiązania ogromnie przewyższają wady. 2.1 Framework-i PHP 2.1.1 Zend Framework 4