Z całkowicie cofniętego punktu widzenia, Blankman, oto moja „Strona wprowadzająca” dla interfejsu Web Services Gateway:
CZĘŚĆ PIERWSZA: SERWERY INTERNETOWE
Serwery WWW obsługują odpowiedzi. Siedzą dookoła, czekając cierpliwie, a potem bez żadnego ostrzeżenia, nagle:
- proces klienta wysyła żądanie. Procesem klienta może być serwer WWW, bot, aplikacja mobilna, cokolwiek. To po prostu „klient”
- serwer WWW otrzymuje to żądanie
- celowe mamrotanie zdarza się różne rzeczy (patrz poniżej)
- Serwer WWW odsyła coś do klienta
- serwer sieciowy znów działa
Serwery WWW (przynajmniej te lepsze) są w tym bardzo BARDZO dobre. Skalowują przetwarzanie w górę iw dół w zależności od zapotrzebowania, niezawodnie prowadzą rozmowy z najbardziej niestabilnymi klientami w naprawdę prymitywnych sieciach i nigdy nie musimy się o to martwić. Po prostu nadal służą.
To jest mój punkt widzenia: serwery WWW to po prostu: serwery. Nie wiedzą nic o treści, nic o użytkownikach, nic poza tym, jak dużo czekać i rzetelnie odpowiadać.
Wybór serwera internetowego powinien odzwierciedlać preferencje dotyczące dostarczania, a nie oprogramowanie. Twój serwer WWW powinien być odpowiedzialny za obsługę, a nie przetwarzanie lub logikę.
CZĘŚĆ DRUGA: OPROGRAMOWANIE (PYTHON)
Oprogramowanie nie działa. Oprogramowanie istnieje tylko w czasie wykonywania. Oprogramowanie nie jest zbyt przystosowane, jeśli chodzi o nieoczekiwane zmiany w swoim środowisku (pliki nie są zgodne z oczekiwaniami, zmiana nazw parametrów itp.). Chociaż optymalizacja powinna być głównym założeniem twojego projektu (oczywiście), samo oprogramowanie nie optymalizuje. Programiści optymalizują. Oprogramowanie wykonuje. Oprogramowanie wykonuje wszystkie czynności opisane w sekcji „celowe mamrotanie” powyżej. Cokolwiek.
Twój wybór lub projekt oprogramowania powinien odzwierciedlać Twoją aplikację, wybór funkcjonalności, a nie wybór serwera WWW.
W tym miejscu tradycyjna metoda „kompilowania” języków na serwery sieciowe staje się bolesna. W końcu umieszczasz kod w swojej aplikacji, aby poradzić sobie z fizycznym środowiskiem serwera lub przynajmniej jesteś zmuszony do wybrania odpowiedniej biblioteki „opakowującej”, która ma być dołączona w czasie wykonywania, aby stworzyć iluzję jednolitości na serwerach internetowych.
CZYM JEST WSGI?
A więc w końcu czym jest WSGI? WSGI to zestaw reguł , napisanych w dwóch częściach. Są napisane w taki sposób, że można je zintegrować z każdym środowiskiem, które sprzyja integracji.
Pierwsza część, napisana po stronie serwera WWW, mówi „OK, jeśli chcesz mieć do czynienia z aplikacją WSGI, oto jak oprogramowanie będzie myśleć po jej załadowaniu. Oto rzeczy, które musisz udostępnić aplikacji, a tutaj to interfejs (układ), którego możesz oczekiwać od każdej aplikacji. Co więcej, jeśli coś pójdzie nie tak, oto jak aplikacja będzie myśleć i jak możesz oczekiwać, że będzie się zachowywać ”.
Druga część, napisana dla oprogramowania aplikacji Python, mówi „OK, jeśli chcesz mieć do czynienia z serwerem WSGI, oto jak serwer będzie myślał, kiedy się z Tobą skontaktuje. Oto rzeczy, które musisz udostępnić serwerowi i tutaj jest interfejs (układ), którego możesz oczekiwać od każdego serwera. Ponadto, jeśli coś pójdzie nie tak, oto jak powinieneś się zachować, a oto co powinieneś powiedzieć serwerowi. "
Więc masz to - serwery będą serwerami, a oprogramowanie będzie oprogramowaniem, a oto sposób, w jaki mogą się świetnie dogadać bez konieczności uwzględniania specyfiki drugiego. To jest WSGI.
Z drugiej strony mod_wsgi jest wtyczką do Apache, która pozwala mu komunikować się z oprogramowaniem zgodnym z WSGI, innymi słowy mod_wsgi jest implementacją - w Apache - zasad części pierwszej powyższej instrukcji.
A co do CGI ... zapytaj kogoś innego :-)