FASADA to napisany w C++ zestaw bibliotek i aplikacji (mini-framework) umożliwiający komunikację na wzór WWW pomiędzy przystosowanymi programami, a za pośrednictwem własnego mini-serwera WWW także z dowolnymi programami rozumiejącymi protokół HTTP, przynajmniej w sieci lokalnej.
Także głównym interfejsem użytkownika jest przeglądarka WWW.
Użycie standardowych formatów plików, takich jak JSON, XML, CSV, TXT i przeglądarki jako interfejsu uniezależnia aplikacje używające tego framework'u od specyfiki lokalnego systemu operacyjnego, a jednocześnie pozwala zachować wydajność języka C++.
Daje to różnorodne możliwości twórcom prostych aplikacji użytkowych i rozrywkowych.
W czasach gdy zaczynałem programować jedna osoba mogła zrobić aplikację użytkową i sprzedawać ją jako tzw. shareware . Od tego czasu jednak świat informatyki się skomplikował, a programiści wyspecjalizowali. Takich którzy ogarniają, chociaż z grubsza, wszystko co jest potrzebne do zrobienia aplikacji webowej od "wykopania piwnicy", czyli zaimplementowania bazy danych, aż po fronton znaczy fasadę, czyli interfejs zakodowany mniej lub bardziej automatycznie w HTML jest coraz mniej.
Są oczywiście różne narzędzia czy też pakiety to ułatwiające - tzw. frameworki. Nawet C++ ma takie bezpośrednie połączenie z WWW/HTML. Nazywa się Qt. Ale to wyższa szkoła jazdy.
To co próbuje zachować w moim mini frameworku to:
Najlepiej zacząć od funkcjonującego przykładu czyli działającej aplikacji.
Pierwszym zastosowaniem Fasady jest system
"yo-hy-da"*
umożliwiający przeglądanie zasobów jakie użytkownik wygenerował w takich sieciach społecznościowych jak Facebook, Twitter, LinkedIn i Google+ (o ile ściągnęliście w porę dane z tego serwisu).
Sieci te zgodnie z wymaganiami prawa dane użytkownika udostępniają, ale w formie praktycznie bezużytecznej dla "zwykłego zjadacza bitów".
Można też zindeksować i podłączyć inne pliki w rozpoznawanych formatach, a także, jeśli nie ma innego wyjścia pliki SPSS czy Excela które de facto są archiwami ZIP zawierającymi głównie pliki XML. Wystarczy zmienić rozszerzenie i można całą zawartość wypakować do folderu, który aplikacja zindeksuje i w razie potrzeby załaduje plik po pliku.
Możesz dowiedzieć się więcej o tej aplikacji z --> tej strony
* yo(ur)-hy(per)-da(ta)
Aplikacje oparte o FASADĘ mogą umożliwiać, a przynajmniej ułatwiać, użytkownikowi nie znającemu się tworzeniu kontentu WWW aktywne korzystanie z takiej możliwości w sieci lokalnej, a nawet globalnej, jeśli dysponuje hostem globalnie widocznym.
Stąd drugim, zaplanowanym, przykładem jest prosta gra WWW, działająca w sieci lokalnej - np. RTS bitwy morskiej.
Trzecim prawdopodobnie będzie interfejs do Pythona jako niemal najpopularniejszego w tej chwili jezyka szerokiego stosowania i napisana z jego użyciem aplikacja analizująca dane użytkownika z rożnych portali społecznościowych.
Kolejna możliwość to włączenie interfejsu FASADY programom symulacyjnym i obliczeniowym, dzięki czemu kontrola ich działania i podgląd wyników będzie możliwy bezpośrednio przez przeglądarkę.
*
W tej chwili rdzeń FASADY składa się z biblioteki i dwóch aplikacji - serwera danych oraz prostego, jednowątkowego, serwera www. W danej chwili może pracować tylko jedna instancja serwera danych.
Jest to sytuacja tymczasowa związana z aktualnym prowizorycznym poziomem rozwoju projektu, który i tak okazał się dosyć czasochłonny jak na hobby :-)
W założeniu aplikacja serwera WWW będzie wielowątkowa, a różnorodnych serwerów danych na pojedynczym hoście, będzie mogła być niemal dowolna liczba.
https://github.com/borkowsk/fasada-core
Repozytorium ze starsza wersja oraz aplikacja YoHyDa