2005-04-28 19:45:00
Tym artykułem rozpoczynam cykl opisujący tworzenie kompletnej aplikacji internetowej z przyległościami, jaką jest witryna http://theexpedition.info. Tekst ten jest dostępny także w języku angielskim, pod adresem mojego drugiego bloga.
W poprzedniej notce ogłosiłem uruchomienie witryny internetowej poświęconej mojej planowanej wyprawie dookoła świata. Jak nietrudno zauważyć, witryna ta wykorzystuje technologię ASP.NET - od siebie dodam zaś, że "pod spodem" leży jeszcze baza danych Microsoft SQL Server. W tym miejscu muszę podziękować kolegom z firmy Xenium za udostępnienie miejsca na serwerze i całej niezbędnej infrastruktury.
Wybór technologii był w moim przypadku dość oczywisty, natomiast ciekawsze mogą być uwarunkowania i wymagania, jakie stawiałem tej aplikacji. Ponieważ nie były one zbyt typowe, zdecydowałem się napisać własną aplikację. Postaram się tutaj przedstawić podstawowe cechy tego, co powstało (i szczerze powiedziawszy, jeszcze powstaje - mam jeszcze kilka rzeczy do zrobienia).
Po pierwsze: witryna posiada strukturę bloga. Publikowane notki są wyświetlane w kolejności odwrotnej chronologicznej, 10 na pierwszej stronie, a pozostałe - w postaci nagłówków z linkiem do pełnej treści - w archiwum.
Po drugie: oprócz notek w stylu blogowym, witryna pozwala na publikowanie dłuższych treści, które nazwałem artykułami. Artykuły te mogą być opatrzone aliasami (np. alias "car" odnosi się do strony opisującej mój nieistniejący jeszcze pojazd), dzięki czemu łatwiej publikować odnośniki do nich - po prostu nie trzeba znać skomplikowanych identyfikatorów przybierających postać w rodzaju
Po trzecie: wpisy w blogu mogą być komentowane. Nic nadzywczajnego, chociaż należało zadbać, aby kod obsługujący komentarze był zabezpieczony przed atakami typu SQL Injection i Script Injection (to temat na osobną notkę).
Po czwarte: Witryna ma udostępniać kanał informacyjny RSS pozwalający na bieżące śledzenie zmian na stronie.
Na razie nic nadzwyczajnego, poniżej wymienię te wymagania, które sprawiły że żadne istniejące oprogramowanie nie nadawało się do użycia na mojej witrynie.
Po pierwsze: Witryna musi być dwujęzyczna. Mam zamiar promować ją w Polsce i za granicą (licząc na znalezienie sponsorów), dlatego konieczne było aby wybór języka (PL/EN) dotyczył wszystkich elementów strony: fragmentów stałych, takich jak etykiety menu, jak i zawartości. Co więcej, chciałem aby witryna automatycznie rozpoznawała język ustawiony jako domyślny w przeglądarce odwiedzającego, jednakże umożliwiała przełączenie pomiędzy językami w przypadku błędnej detekcji i zapamiętanie tego wyboru na przyszłość.
Po drugie: Oprócz standardowych elementów bloga/witryny informacyjnej, strona TheExpedition.info powinna zawierać także ustrukturalizowane informacje o kolejno odwiedzanych miejscach, powiązane z pozycjami geograficznymi (na podstawie odbiornika GPS) i galeriami zdjęć z poszczególnych miejsc.
Po trzecie i najważniejsze: Mam zamiar aktualizować zawartość witryny bezpośrednio z terenu. Warunki będą różne - czasem będę miał dostęp do kawiarenki internetowej, czasem będę musiał ograniczyć się do połączenia GPRS, a czasem - i to pod warunkiem, że finanse mi na to pozwolą (słyszycie, Sponsorzy? ;-) - będę mógł korzystać jedynie z drogiego i wolnego łącza satelitarnego. Potrzebuję możliwości publikowania wszystkich wymienionych wyżej elementów bez przebijania się przez internetowy interfejs administracyjny w sposób maksymalnie oszczędnie korzystający z łącza. Z tego wynika...
Po czwarte: Z witryną internetową stowarzyszona będzie aplikacja kliencka pozwalająca na przygotowanie treści (notek, artykułów, galerii, informacji o miejscach, pozycjach geograficznych itp.) i wysłanie ich na serwer w postaci skompresowanej paczki za pośrednictwem protokołu FTP. Serwer powinien taką paczkę zauważyć, rozpakować i samodzielnie zaktualizować zawartość witryny. Dodatkowo,
Po piąte: Z uwagi na konieczność użycia wolnych i drogich łącz, aplikacja kliencka powinna pozwalać na publikację: samych tekstów, tekstów z miniaturami zdjęć, tekstów z miniaturami i pełnymi zdjęciami, samych zaległych miniatur (tj. przygotowanych uprzednio ale przytrzymanych do publikacji przy bardziej sprzyjających warunkach) lub zaległych miniatur wraz ze zdjęciami o pełnej rozdzielczości.
Po szóste: Dodatkowo, w samochodzie zamontowana będzie kamerka internetowa, robiąca co 5 minut zdjęcie trasy przed samochodem. Daje to 144 zdjęcia dziennie (przy założeniu jazdy przez 12 godzin), tych materiałów prawdopodobnie nie będę wysyłał na serwer lecz udostępnię dopiero po powrocie. Gratka dla wszystkich: szybka przejażdżka dookoła świata w postaci slideshowu złożonego z kilkudziesięciu tysięcy zdjęć. Aplikacja kliencka powinna te fotografie rejestrować i opatrywać informacjami o tym, gdzie zostały zrobione.
Po siódme: Witryna powinna rejestrować podstawowe statystyki oglądalności, w formie jednak nie nadwyrężającej udostępnionego mi za darmo serwera.
I to z grubsza byłoby na tyle. W ciągu najbliższych tygodni, po troszku, opiszę budowę i zastosowane rozwiązania które pozwoliły (lub pozwolą) na osiągnięcie tej funkcjonalności. Oczywiście technologie to ASP.NET, Windows Forms, C# i MS SQL Server.
Jeżeli ktoś jest zainteresowany wsparciem tego projektu, to wkrótce udostępnię taką możliwość. Na razie proszę zwrócić uwagę, jakie ciekawe reklamy pojawiają się tu i na theexpedition.info!!
Jeżeli czytasz tego bloga w agregatorze RSS i chcesz go wesprzeć, to zajrzyj od czasu do czasu przez przeglądarkę internetową na http://dotnet.blog.pl i zobacz czy nie ma tam jakichś reklam wartych kliknięcia...
W poprzedniej notce ogłosiłem uruchomienie witryny internetowej poświęconej mojej planowanej wyprawie dookoła świata. Jak nietrudno zauważyć, witryna ta wykorzystuje technologię ASP.NET - od siebie dodam zaś, że "pod spodem" leży jeszcze baza danych Microsoft SQL Server. W tym miejscu muszę podziękować kolegom z firmy Xenium za udostępnienie miejsca na serwerze i całej niezbędnej infrastruktury.
Wybór technologii był w moim przypadku dość oczywisty, natomiast ciekawsze mogą być uwarunkowania i wymagania, jakie stawiałem tej aplikacji. Ponieważ nie były one zbyt typowe, zdecydowałem się napisać własną aplikację. Postaram się tutaj przedstawić podstawowe cechy tego, co powstało (i szczerze powiedziawszy, jeszcze powstaje - mam jeszcze kilka rzeczy do zrobienia).
Po pierwsze: witryna posiada strukturę bloga. Publikowane notki są wyświetlane w kolejności odwrotnej chronologicznej, 10 na pierwszej stronie, a pozostałe - w postaci nagłówków z linkiem do pełnej treści - w archiwum.
Po drugie: oprócz notek w stylu blogowym, witryna pozwala na publikowanie dłuższych treści, które nazwałem artykułami. Artykuły te mogą być opatrzone aliasami (np. alias "car" odnosi się do strony opisującej mój nieistniejący jeszcze pojazd), dzięki czemu łatwiej publikować odnośniki do nich - po prostu nie trzeba znać skomplikowanych identyfikatorów przybierających postać w rodzaju
2d91cf9e-dfe5-4648-a493-068f12b0e628.Po trzecie: wpisy w blogu mogą być komentowane. Nic nadzywczajnego, chociaż należało zadbać, aby kod obsługujący komentarze był zabezpieczony przed atakami typu SQL Injection i Script Injection (to temat na osobną notkę).
Po czwarte: Witryna ma udostępniać kanał informacyjny RSS pozwalający na bieżące śledzenie zmian na stronie.
Na razie nic nadzwyczajnego, poniżej wymienię te wymagania, które sprawiły że żadne istniejące oprogramowanie nie nadawało się do użycia na mojej witrynie.
Po pierwsze: Witryna musi być dwujęzyczna. Mam zamiar promować ją w Polsce i za granicą (licząc na znalezienie sponsorów), dlatego konieczne było aby wybór języka (PL/EN) dotyczył wszystkich elementów strony: fragmentów stałych, takich jak etykiety menu, jak i zawartości. Co więcej, chciałem aby witryna automatycznie rozpoznawała język ustawiony jako domyślny w przeglądarce odwiedzającego, jednakże umożliwiała przełączenie pomiędzy językami w przypadku błędnej detekcji i zapamiętanie tego wyboru na przyszłość.
Po drugie: Oprócz standardowych elementów bloga/witryny informacyjnej, strona TheExpedition.info powinna zawierać także ustrukturalizowane informacje o kolejno odwiedzanych miejscach, powiązane z pozycjami geograficznymi (na podstawie odbiornika GPS) i galeriami zdjęć z poszczególnych miejsc.
Po trzecie i najważniejsze: Mam zamiar aktualizować zawartość witryny bezpośrednio z terenu. Warunki będą różne - czasem będę miał dostęp do kawiarenki internetowej, czasem będę musiał ograniczyć się do połączenia GPRS, a czasem - i to pod warunkiem, że finanse mi na to pozwolą (słyszycie, Sponsorzy? ;-) - będę mógł korzystać jedynie z drogiego i wolnego łącza satelitarnego. Potrzebuję możliwości publikowania wszystkich wymienionych wyżej elementów bez przebijania się przez internetowy interfejs administracyjny w sposób maksymalnie oszczędnie korzystający z łącza. Z tego wynika...
Po czwarte: Z witryną internetową stowarzyszona będzie aplikacja kliencka pozwalająca na przygotowanie treści (notek, artykułów, galerii, informacji o miejscach, pozycjach geograficznych itp.) i wysłanie ich na serwer w postaci skompresowanej paczki za pośrednictwem protokołu FTP. Serwer powinien taką paczkę zauważyć, rozpakować i samodzielnie zaktualizować zawartość witryny. Dodatkowo,
Po piąte: Z uwagi na konieczność użycia wolnych i drogich łącz, aplikacja kliencka powinna pozwalać na publikację: samych tekstów, tekstów z miniaturami zdjęć, tekstów z miniaturami i pełnymi zdjęciami, samych zaległych miniatur (tj. przygotowanych uprzednio ale przytrzymanych do publikacji przy bardziej sprzyjających warunkach) lub zaległych miniatur wraz ze zdjęciami o pełnej rozdzielczości.
Po szóste: Dodatkowo, w samochodzie zamontowana będzie kamerka internetowa, robiąca co 5 minut zdjęcie trasy przed samochodem. Daje to 144 zdjęcia dziennie (przy założeniu jazdy przez 12 godzin), tych materiałów prawdopodobnie nie będę wysyłał na serwer lecz udostępnię dopiero po powrocie. Gratka dla wszystkich: szybka przejażdżka dookoła świata w postaci slideshowu złożonego z kilkudziesięciu tysięcy zdjęć. Aplikacja kliencka powinna te fotografie rejestrować i opatrywać informacjami o tym, gdzie zostały zrobione.
Po siódme: Witryna powinna rejestrować podstawowe statystyki oglądalności, w formie jednak nie nadwyrężającej udostępnionego mi za darmo serwera.
I to z grubsza byłoby na tyle. W ciągu najbliższych tygodni, po troszku, opiszę budowę i zastosowane rozwiązania które pozwoliły (lub pozwolą) na osiągnięcie tej funkcjonalności. Oczywiście technologie to ASP.NET, Windows Forms, C# i MS SQL Server.
Jeżeli ktoś jest zainteresowany wsparciem tego projektu, to wkrótce udostępnię taką możliwość. Na razie proszę zwrócić uwagę, jakie ciekawe reklamy pojawiają się tu i na theexpedition.info!!
Jeżeli czytasz tego bloga w agregatorze RSS i chcesz go wesprzeć, to zajrzyj od czasu do czasu przez przeglądarkę internetową na http://dotnet.blog.pl i zobacz czy nie ma tam jakichś reklam wartych kliknięcia...
