Przechodzę z programisty komputerowego na webowy i mam problem ze zrozumieniem, dlaczego HTTP jest bezstanowy. Jakie są tego powody? W jaki sposób programista komputerowy, taki jak ja, może przejść na bezpaństwowe środowisko programistyczne?
15
Odpowiedzi:
Oto najlepsze wytłumaczenie bezpaństwowego Internetu, jakie widziałem:
Jak wyjaśniłem REST mojej żonie
http://www.looah.com/source/view/2284
źródło
Jak myślisz, jak byłoby możliwe przechowywanie stanu miliardów miliardów miliardów miliardów połączeń? :) Więc przechowujesz stan tylko w razie potrzeby, w sesjach.
BTW: HTTP nie jest bezpołączeniowy.
źródło
persistent connections
tak zwane utrzymywanie aktywności. Nie jestem ekspertem od sieci, ale przez większość czasu masz prawdziwe połączenie HTTP :)Jako programista pulpitu możesz czuć się bardziej komfortowo dzięki bogatemu interfejsowi użytkownika. Przejście do sieci może być krokiem wstecz. W świecie internetowym jest mniej swobody twórczej i może dać ci poczucie ograniczenia. Nie pozwól, żeby cię to przygnębiło! Istnieje wiele rzeczy, które mogą pomóc Ci przejść, a oto ich krótka lista:
Miłego programowania!
źródło
Ponieważ był czas, kiedy miliony stron internetowych nie istniały. Ponieważ był czas, kiedy tylko uniwersytety i ośrodki badawcze miały kilka stron. Był czas, kiedy nie było łączności szerokopasmowej, a http komunikowano z modemami 1200 bodów umieszczonymi na telefonach biurkowych. Był czas, kiedy „bogate aplikacje internetowe” wymagałyby, ich zdaniem, absurdalnej przepustowości. I pamiętaj, TCP / IP został stworzony, ponieważ wczesny Internet był bardzo zawodny.
HTTP 1.0 istniał już na początku lat 90. Zastanów się, jak wyglądał wtedy Internet i dlaczego zaprojektowali go w taki sposób.
źródło
Wszystko ewoluowało. Internet istniał przed przeglądarkami internetowymi i internetem. To był bulgoczący garnek ftp, telnet, gopher, ping, finger i kilku innych drobiazgów. Pierwsza przeglądarka internetowa, Mosaic (wydaje mi się, że dawno temu, 1991, chyba byłam na studiach) działała jak swoista mieszanka ftp i przeglądarki dokumentów. Magia polegała na tym, że w dokumencie mogłeś mieć linki, które utworzyłyby nowy dokument.
Cała interaktywność, którą rozwinęliśmy w ciągu następnych 20 lat. To też nie była szczęśliwa ewolucja. Mieliśmy wojny przeglądarkowe, IE i Netscape wykopały go w celu kontroli standardów (trochę uproszczenia;)), a różne inne firmy trzecie zaczęły wprowadzać wtyczki, aby umożliwić bogatą zawartość. Java miała być magiczną kulą i oczywiście Flash. Czy ktoś pamięta wtyczki VRML, które obiecały światy 3d i dostarczyły dokładnie pół tuzina modeli 3D Star Wars?
Trochę mnie poniosło pod koniec, ale masz pomysł :)
źródło
Głównymi przyczynami są kombinacja tego, co według wierzącego było celem HTTP, oraz ze względu na skalowalność. HTML został pierwotnie zaprojektowany do udostępniania informacji lub prac dyplomowych ponad granicami akademickimi. To był wyłącznie stylizowany tekst. Dopiero pierwsza przeglądarka pozwoliła wyświetlać zdjęcia, o których ludzie zaczęli myśleć poza tym modelem.
Następujące względy utrwaliły decyzję bezpaństwowca:
Ponieważ strony internetowe stały się bardziej złożone i zawierały wiele grafik i arkuszy stylów, HTTP poprawiono flagą „keep-alive”. Dzięki temu gniazdo będzie działało i klient będzie mógł zażądać kilku zasobów w tej samej rozmowie.
Biorąc pod uwagę obecny model korzystania z Internetu, pierwotna decyzja jest nadal ważna. Czasami może to być niewygodne, ale kilka małych, kwantowanych interakcji z serwerem skaluje się lepiej niż bezczynne gniazda.
źródło
Jeśli masz na myśli przeglądarki dwukierunkowe.
Względy bezpieczeństwa.
Na przykład SPAM !.
Przenoszenie komunikacji dwukierunkowej w Internecie na wyższy poziom
W przeciwnym razie internet będzie działał TCP / IP (dwa protokoły) i UDP.
źródło
W aplikacji komputerowej zakłada się, że użytkownik wykonuje pewną serię zadań z określonym początkiem i końcem. W takiej aplikacji sensowne jest (w rzeczywistości niewiele), aby użytkownicy logowali się na serwerach dostarczających dane i pozostawali zalogowani, dopóki nie skończą.
Interakcje internetowe (zwykle) nie są zgodne z tym samym modelem. Na przykład w witrynie eCommerce użytkownik może dojść do opisu produktu w wyniku wyszukiwania w Google i natychmiast opuścić tę stronę, aby spojrzeć na ofertę tego samego produktu w innej witrynie. Lub może rozpocząć proces realizacji zamówienia, a następnie zdecydować, że produkt jest zbyt drogi i porzucić go w połowie. Podstawowa koncepcja „hipertekstu” oznacza zdolność i oczekiwanie na przeskakiwanie z jednego miejsca do drugiego.
Stałe połączenia zużywają zasoby. Być może tylko gniazdo sieciowe, być może pula przeanalizowanych zapytań do bazy danych; wszystko zależy od aplikacji. Biorąc pod uwagę użytkownika, który może zniknąć w dowolnym momencie, utrzymywanie tych zasobów nie ma sensu.
W praktyce użytkownik nie musi mieć stałego połączenia. Aplikacja internetowa utrzymuje połączenia z dowolnymi potrzebnymi zasobami (np. Bazą danych) i współdzieli je między wszystkimi żądaniami użytkowników. Struktura aplikacji internetowych zapewnia sesje, które są ograniczonymi czasowo miejscami do przechowywania danych dotyczących poszczególnych użytkowników dla różnych żądań. Jedyną rzeczą, której nie możesz (łatwo) zrobić, są długotrwałe transakcje kontrolowane przez klienta, ale to zły pomysł nawet w aplikacji, która utrzymuje połączenia.
źródło
Internet niekoniecznie jest bezstanowy - w rzeczywistości, gdy spojrzysz na Java EE - mają Stateful EJB i Stateless EJB.
Głównym powodem, dla którego programiści zalecają stosowanie architektury bezstanowej, jest skalowalność. Wyobraź sobie, że próbujesz utrzymać stan wszystkich użytkowników po dodaniu i upuszczeniu serwerów w celu obsługi ruchu.
Naprawdę nie jest trudno stworzyć bezpaństwową architekturę. Najważniejsze jest utrzymanie jak najmniejszego stanu (zwykle identyfikator użytkownika - najlepiej w pliku cookie) i zmiana bazy danych zgodnie z wymaganiami.
źródło
Myślę, że tak się zaczęło i po prostu tak pozostało. Teraz, gdy wokół niego zbudowano tak wiele infrastruktury, nie można jej zmienić.
Być może zaczęło się to bezstanowe, ponieważ połączenia były początkowo mniej niezawodne, a także przepustowość była mniejsza. Jeśli nie masz wielu aktywnych połączeń, możesz łatwiej obsłużyć większy ruch.
Edytuj lub zostaw komentarz, jeśli masz lepsze informacje lub jeszcze lepiej, opublikuj własną odpowiedź!
źródło
Jest tak, ponieważ serwery zapewniają usługę (jest w nazwie). Składasz wniosek i otrzymujesz odpowiedzi - to wszystko.
Jeśli chodzi o przejście do tworzenia stron internetowych, wierzę, że ASP.NET Web Forms zrobi to w sposób, który będzie dla ciebie bardziej zrozumiały - ale tylko dlatego, że ukrywa to, co faktycznie dzieje się pod warstwami abstrakcji.
źródło
Wiele można zrozumieć, analizując nazwę HTTP (HyperText Transfer Protocol). Nigdy nie został zaprojektowany jako bogaty protokół interfejsu użytkownika. Pierwotny pomysł polegał na udostępnianiu dokumentów z łączami między nimi. Proszę o dokument, odpowiadasz kopią tego dokumentu.
Pierwotnie HTTP miał tylko jeden czasownik GET. W tym względzie został zaprojektowany dla treści statycznych. Dlaczego potrzebujesz stanu, gdy wszystko, co robisz, to zamawianie dokumentu, który ktoś udostępnia? I dlatego HTTP jest bezstanowy ... ze względu na swoje pochodzenie.
źródło