Hiểu về internet không quốc tịch [đóng]


15

Tôi đang chuyển từ một nhà phát triển máy tính để bàn sang một nhà phát triển web và tôi gặp khó khăn trong việc hiểu tại sao HTTP là không trạng thái. Những lý do cho nó là gì? Một số cách mà một nhà phát triển máy tính để bàn như tôi có thể thực hiện chuyển đổi sang môi trường phát triển không trạng thái là gì?


3
Xin chào Brian, Lập trình viên.SE không phải là một ban thảo luận . Có vấn đề cụ thể nào mà bạn gặp phải mà bạn cần trợ giúp không? Nếu vậy, bạn có thể viết lại câu hỏi của bạn?

Thông thường, bạn để máy chủ xử lý các chi tiết của công cụ cookie phiên.
Thất vọngWithFormsDesigner

Tôi nghĩ rằng điều này nên được mở lại, bây giờ nó có một tá "câu trả lời đầy đủ". Đặc biệt bởi vì nó được chỉ ra bởi một câu hỏi gần đây được cho là trùng lặp câu hỏi này. Nó không thể là một bản sao theo một trong hai hướng nếu nó không được cho là ở đây ngay từ đầu. Hãy có một chút tỉnh táo ở đây.

Câu trả lời:


18

Đây là lời giải thích tốt nhất về internet không quốc tịch mà tôi đã thấy:

Làm thế nào tôi giải thích REST  cho vợ tôi
http://www.looah.com/source/view/2284

Vợ: Roy Fielding là ai?

Ryan: Một số người. Anh ấy thông minh.

Vợ: Ồ? Anh ấy đã làm gì?

Ryan: Anh ấy đã giúp viết các máy chủ web đầu tiên và sau đó thực hiện rất nhiều nghiên cứu giải thích lý do tại sao web hoạt động theo cách đó. Tên của anh ấy là trên đặc điểm kỹ thuật của giao thức được sử dụng để đưa các trang từ máy chủ đến trình duyệt của bạn.

Vợ: Nó hoạt động thế nào?

Ryan: Trang web?

Vợ: Ừ.

Ryan: Hừm. Vâng, đó là tất cả khá tuyệt vời thực sự. Và điều buồn cười là tất cả đều bị đánh giá thấp. Giao thức mà tôi đang nói đến, HTTP, nó có khả năng cho tất cả các loại công cụ gọn gàng mà mọi người bỏ qua vì một số lý do.

Vợ: Ý anh là http giống như bắt đầu những gì tôi gõ vào trình duyệt?

Ryan: Vâng. Đó là phần đầu tiên cho trình duyệt sử dụng giao thức nào. Những thứ bạn gõ vào đó là một trong những bước đột phá quan trọng nhất trong lịch sử điện toán.

Vợ: Tại sao?

Ryan: Bởi vì nó có khả năng mô tả vị trí của một cái gì đó trên thế giới từ bất cứ nơi nào trên thế giới. Đó là nền tảng của web. Bạn có thể nghĩ về nó như tọa độ GPS cho kiến ​​thức và thông tin.

Vợ: Cho các trang web?

Ryan: Đối với bất cứ điều gì thực sự. Anh chàng đó, Roy Fielding, anh ta nói rất nhiều về những điều mà những điều đó chỉ ra trong nghiên cứu mà tôi đang nói đến. Web được xây dựng theo phong cách kiến ​​trúc gọi là REST. REST cung cấp một định nghĩa về tài nguyên, đó là những gì những điều đó chỉ ra.

Vợ: Một trang web là một tài nguyên?

Ryan: Loại. Một trang web là một đại diện của một tài nguyên. Tài nguyên chỉ là khái niệm. URL - những thứ mà bạn nhập vào trình duyệt ...

Vợ: Tôi biết những gì một URL là ..

Ryan: Ồ, phải rồi. Những người nói với trình duyệt rằng có một khái niệm ở đâu đó. Một trình duyệt sau đó có thể yêu cầu một đại diện cụ thể của khái niệm này. Cụ thể, trình duyệt yêu cầu đại diện trang web của khái niệm này.

Vợ: Có những loại đại diện nào khác không?

Ryan: Thật ra, đại diện là một trong những thứ không được sử dụng nhiều. Trong hầu hết các trường hợp, một tài nguyên chỉ có một đại diện duy nhất. Nhưng chúng tôi hy vọng rằng các đại diện sẽ được sử dụng nhiều hơn trong tương lai vì có một loạt các định dạng mới xuất hiện ở khắp mọi nơi.

Vợ: Thích gì?

Ryan: Hừm. Vâng, có khái niệm này rằng mọi người đang gọi Dịch vụ web. Nó có nghĩa là rất nhiều thứ khác nhau đối với nhiều người khác nhau nhưng khái niệm cơ bản là máy móc có thể sử dụng web giống như mọi người.

Vợ: Đây có phải là một thứ robot khác?

Ryan: Không, không thực sự. Tôi không có nghĩa là máy móc sẽ ngồi xuống bàn và duyệt web. Nhưng các máy tính có thể sử dụng các giao thức tương tự để gửi tin nhắn qua lại với nhau. Chúng tôi đã làm điều đó trong một thời gian dài nhưng không có kỹ thuật nào chúng tôi sử dụng ngày nay hoạt động tốt khi bạn cần có thể nói chuyện với tất cả các máy trên toàn thế giới.

Vợ: Tại sao không?

Ryan: Bởi vì chúng không được thiết kế để được sử dụng như thế. Khi Fielding và những người bạn của mình bắt đầu xây dựng web, việc có thể nói chuyện với bất kỳ máy nào ở bất cứ đâu trên thế giới là mối quan tâm hàng đầu. Hầu hết các kỹ thuật chúng tôi sử dụng tại nơi làm việc để khiến máy tính nói chuyện với nhau không có những yêu cầu đó. Bạn chỉ cần nói chuyện với một nhóm nhỏ máy móc.

Vợ: Và bây giờ anh cần nói chuyện với tất cả các máy?

Ryan: Có - và hơn thế nữa. Chúng ta cần có thể nói chuyện với tất cả các máy về tất cả những thứ trên tất cả các máy khác. Vì vậy, chúng ta cần một số cách để có một máy nói với một máy khác về một tài nguyên có thể có trên một máy khác.

Vợ: Cái gì?

Ryan: Hãy nói rằng bạn đang nói chuyện với em gái của bạn và cô ấy muốn mượn người quét rác hoặc một cái gì đó. Nhưng bạn không có nó - Mẹ bạn có nó. Vì vậy, bạn nói với em gái của bạn để có được nó từ mẹ của bạn thay vào đó. Điều này xảy ra mọi lúc trong cuộc sống thực và nó xảy ra mọi lúc khi máy móc cũng bắt đầu nói chuyện.

Vợ: Vậy làm thế nào để máy móc nói với nhau mọi thứ ở đâu?

Ryan: URL, tất nhiên. Nếu mọi thứ mà máy cần nói về đều có một URL tương ứng, bạn đã tạo ra máy tương đương với một danh từ. Rằng bạn và tôi và phần còn lại của thế giới đã đồng ý nói về danh từ theo một cách nào đó là khá quan trọng, nhỉ?

Vợ: Ừ.

Ryan: Máy móc không có một danh từ chung - đó là lý do tại sao chúng hút. Mỗi ngôn ngữ lập trình, cơ sở dữ liệu hoặc loại hệ thống khác có một cách nói khác nhau về danh từ. Đó là lý do tại sao URL rất quan trọng. Nó để tất cả các hệ thống này nói với nhau về danh từ của nhau.

Vợ: Nhưng khi tôi đang xem một trang web, tôi không nghĩ về nó như thế.

Ryan: Không có ai. Ngoại trừ Fielding và một số ít người khác. Đó là lý do tại sao máy vẫn hút.

Vợ: Thế còn động từ và đại từ và tính từ?

Ryan: Bạn đã hỏi vui vì đó là một khía cạnh lớn khác của REST. Vâng, động từ là anyway.

Vợ: Tôi chỉ nói đùa.

Ryan: Đó là một trò đùa vui nhưng thực ra nó không phải là một trò đùa. Động từ rất quan trọng. Có một khái niệm mạnh mẽ trong lập trình và lý thuyết CS gọi là đa hình. Đó là một cách nói táo bạo mà các danh từ khác nhau có thể có cùng một động từ được áp dụng cho chúng.

Vợ: Tôi không hiểu.

Ryan: Chà .. Nhìn vào bàn cà phê. Các danh từ là gì? Cốc, khay, báo, từ xa. Bây giờ, một số điều bạn có thể làm cho tất cả những điều này là gì?

Vợ: Tôi không hiểu ...

Ryan: Bạn có thể có được chúng, phải không? Bạn có thể chọn chúng. Bạn có thể đánh bật chúng. Bạn có thể đốt chúng. Bạn có thể áp dụng những động từ chính xác tương tự cho bất kỳ đối tượng ngồi ở đó.

Vợ: Được rồi ... vậy sao?

Ryan: Điều đó quan trọng. Điều gì sẽ xảy ra nếu thay vì tôi có thể nói với bạn, "lấy cốc" và "lấy báo" và "lấy điều khiển từ xa"; Điều gì xảy ra nếu thay vì chúng ta cần phải đưa ra các động từ khác nhau cho mỗi danh từ? Tôi không thể sử dụng từ "get" một cách phổ biến, nhưng thay vào đó phải nghĩ ra một từ mới cho mỗi kết hợp động từ / danh từ.

Vợ: Chà! Lạ nhỉ.

Ryan: Vâng, đúng vậy. Bộ não của chúng ta đủ thông minh để biết rằng các động từ tương tự có thể được áp dụng cho nhiều danh từ khác nhau. Một số động từ cụ thể hơn những động từ khác và chỉ áp dụng cho một nhóm danh từ nhỏ. Chẳng hạn, tôi không thể lái một chiếc cốc và tôi không thể uống xe hơi. Nhưng một số động từ gần như phổ biến như GET, PUT và DELETE.

Vợ: Bạn không thể XÓA một cốc.

Ryan: Được, được, nhưng bạn có thể vứt nó đi. Đó là một trò đùa khác, phải không?

Vợ: Ừ.

Ryan: Dù sao đi nữa, HTTP - giao thức này Fielding và bạn bè của anh ấy đã tạo ra - tất cả là về việc áp dụng các động từ cho danh từ. Chẳng hạn, khi bạn truy cập một trang web, trình duyệt sẽ thực hiện HTTP GET trên URL bạn nhập và quay lại một trang web.

Các trang web thường có hình ảnh, phải không? Đó là những tài nguyên riêng biệt. Trang web chỉ định URL cho hình ảnh và trình duyệt đi và thực hiện thêm HTTP GET cho chúng cho đến khi tất cả các tài nguyên được lấy và trang web được hiển thị. Nhưng điều quan trọng ở đây là các loại danh từ rất khác nhau có thể được đối xử giống nhau. Cho dù danh từ là hình ảnh, văn bản, video, mp3, trình chiếu, bất cứ điều gì. Tôi có thể NHẬN tất cả những điều đó theo cùng một cách được cung cấp một URL.

Vợ: Âm thanh như GET là một động từ khá quan trọng.

Ryan: Đúng vậy. Đặc biệt là khi bạn đang sử dụng trình duyệt web vì trình duyệt khá nhiều công cụ justGET. Họ không thực hiện nhiều loại tương tác khác với tài nguyên. Đây là một vấn đề bởi vì nó đã khiến nhiều người cho rằng HTTP chỉ dành cho NHẬN. Nhưng HTTP thực sự là giao thức mục đích chung để áp dụng các động từ cho danh từ.

Vợ: Mát mẻ. Nhưng tôi vẫn không thấy điều này thay đổi như thế nào. Những loại danh từ và động từ bạn muốn?

Ryan: Các danh từ ở đó nhưng không đúng định dạng.

Hãy suy nghĩ về khi bạn duyệt qua amazon.com để tìm những thứ để mua cho tôi vào Giáng sinh. Hãy tưởng tượng mỗi sản phẩm là danh từ. Bây giờ, nếu chúng có sẵn trong một đại diện mà một cỗ máy có thể hiểu, bạn có thể làm rất nhiều thứ gọn gàng.

Vợ: Tại sao máy không thể hiểu một trang web bình thường?

Ryan: Bởi vì các trang web được thiết kế để mọi người hiểu. Một cỗ máy không quan tâm đến bố cục và kiểu dáng. Máy cơ bản chỉ cần dữ liệu. Lý tưởng nhất, mỗi URL sẽ có một đại diện có thể đọc được và con người có thể đọc được. Khi một máy NHẬN tài nguyên, nó sẽ yêu cầu máy có thể đọc được. Khi một trình duyệt NHẬN tài nguyên cho con người, nó sẽ yêu cầu tài nguyên có thể đọc được.

Vợ: Vậy mọi người sẽ phải tạo định dạng máy cho tất cả các trang của họ chứ?

Ryan: Nếu nó có giá trị.

Hãy nhìn xem, chúng ta đã nói về điều này với rất nhiều sự trừu tượng. Làm thế nào về chúng tôi lấy một ví dụ thực tế. Bạn là giáo viên - ở trường, tôi cá là bạn có một hệ thống máy tính lớn, hoặc nhiều hơn ba hoặc bốn hệ thống máy tính, cho phép bạn quản lý học sinh: họ học lớp nào, lớp nào họ nhận được, liên hệ khẩn cấp, thông tin về những cuốn sách bạn dạy, v.v. Nếu các hệ thống dựa trên web, thì có lẽ có một URL cho mỗi danh từ liên quan ở đây: học sinh, giáo viên, lớp, sách, phòng, v.v. Ngay bây giờ, hãy lấy URL qua trình duyệt cung cấp cho bạn một trang web. Nếu có một đại diện có thể đọc được bằng máy cho mỗi URL, thì việc chốt các công cụ mới vào hệ thống sẽ là chuyện nhỏ vì tất cả thông tin đó sẽ được tiêu thụ theo cách tiêu chuẩn. Nó cũng sẽ làm cho nó dễ dàng hơn một chút để mỗi hệ thống nói chuyện với nhau. Hoặc, bạn có thể xây dựng một hệ thống toàn tiểu bang hoặc quốc gia có thể nói chuyện với từng hệ thống trường học riêng lẻ để thu thập điểm kiểm tra. Các khả năng là vô tận.

Mỗi hệ thống sẽ nhận thông tin từ nhau bằng cách sử dụng HTTP GET đơn giản. Nếu một hệ thống cần thêm một cái gì đó vào hệ thống khác, nó sẽ sử dụng HTTP POST. Nếu một hệ thống muốn cập nhật một cái gì đó trong một hệ thống khác, nó sử dụng PUT HTTP. Điều duy nhất còn lại để tìm ra là dữ liệu sẽ trông như thế nào.

Vợ: Vậy đây là những gì bạn và tất cả những người máy tính đang làm việc bây giờ? Quyết định dữ liệu nên như thế nào?

Ryan: Đáng buồn thay, không. Thay vào đó, phần lớn đang bận rộn viết các lớp thông số kỹ thuật phức tạp để thực hiện công cụ này theo một cách khác gần như không hữu ích hoặc hùng hồn. Danh từ không phổ biến và động từ không đa hình. Chúng tôi đang đưa ra hàng thập kỷ sử dụng thực tế và kỹ thuật đã được chứng minh và bắt đầu lại với thứ gì đó trông rất giống các hệ thống khác đã thất bại trong quá khứ. Chúng tôi đang sử dụng HTTP nhưng chỉ vì nó giúp chúng tôi nói chuyện với mạng và những người bảo mật ít hơn. Chúng tôi đang giao dịch đơn giản cho các công cụ và thuật sĩ hào nhoáng.

Vợ: Tại sao?

Ryan: Tôi không có ý tưởng.

Vợ: Sao anh không nói gì?

Ryan: Có lẽ tôi sẽ làm.


1
Đó là một đọc tuyệt vời. Vì vậy, http đang được sử dụng bởi quy ước vì nó dễ dàng. Điều duy nhất tôi thêm vào là điều gì đó về các hạn chế về bộ nhớ như Slawek đã chỉ ra, chúng tôi sẽ nhanh chóng hết tài nguyên cho các trang web lớn hơn. Có thể một ngày nào đó khi tài nguyên của một cỗ máy lớn so với nhu cầu của người dùng thì chúng ta có thể có internet.
P.Brian.Mackey

5
Tôi sẽ không sợ bị mất trạng thái; nó chỉ là một cách khác nhau để nhìn vào mọi thứ. Theo thời gian, bạn có thể thấy rằng nó thực sự là một cách hợp lý hơn, đặc biệt là đối với các ứng dụng lớn, có thể mở rộng. Dù sao, bạn luôn có thể lưu trữ trạng thái trong cơ sở dữ liệu của mình và truy xuất trạng thái đó trong các yêu cầu trang tiếp theo. Statless khiến bạn suy nghĩ nhiều hơn về các giao dịch, thay vì cập nhật lên một chút trạng thái.
Robert Harvey

2
Tôi đã rất mù quáng bởi cách tiếp cận lập trình trạng thái của tôi, tôi đã bỏ lỡ một điểm cơ bản trong bài viết. Tôi cần dồn nén phương châm "không quốc tịch không phải là khiếm khuyết" vào bộ não của tôi vài trăm lần ... Cảm ơn vì nhận xét và câu trả lời tuyệt vời.
P.Brian.Mackey

Đoạn cuối (5 dòng từ cuối) là gì? Tôi đã có một ý tưởng, nhưng tôi không muốn cảm thấy như một kẻ ngốc đưa ra bất kỳ giả định nào.
Steven

1
@Steven: Tôi tin rằng đoạn văn đó đề cập đến những thứ như SOAP , hoặc có thể là CORBA (shudder).
Robert Harvey

6

Làm thế nào để bạn nghĩ rằng nó sẽ có thể lưu trữ trạng thái của hàng tỷ tỷ tỷ kết nối hàng tỷ? :) Vì vậy, bạn chỉ lưu trữ trạng thái khi cần thiết, trong phiên.

BTW: HTTP không kết nối.


1
@P. Thật khó để yên tâm khi tài liệu tham khảo mà bạn trích dẫn mở ra: Bài viết này chứa các từ chồn, cụm từ mơ hồ thường đi kèm với thông tin sai lệch hoặc không thể kiểm chứng.
chrisaycock

3
HTTP là không kết nối. Bạn gửi một yêu cầu HTTP, nhận lại một cái gì đó, khi có liên quan đến HTTP, kết nối đã kết thúc. Máy chủ có thể kết nối các yêu cầu khác nhau để tạo thành một phiên, nhưng đó không phải là một thuộc tính vốn có của HTTP.
David Thornley

2
HTTP đang sử dụng TCP / IP làm phương tiện vận chuyển (không phải UDP), nhưng đó là một lớp ISO OSI khác, và bạn có thể có persistent connections, đó gọi là giữ nguyên. Tôi không phải là chuyên gia về mạng nhưng, bạn có một kết nối thực sự trong HTTP hầu hết thời gian :)
Slawek

2
Ok, vì vậy những gì tôi nhận được từ điều này là niềm tin phổ biến rằng không kết nối có thể được đánh đồng với không quốc tịch là sai. Tôi nghĩ rằng chúng ta có thể đồng ý rằng http là trạng thái không trạng thái hoặc xem thông số kỹ thuật để tự mình xem w3.org/TR/html401/interact/forms.html (tìm kiếm không trạng thái). Xem thêm RFC2616 để biết trạng thái không trạng thái của http ietf.org/rfc/rfc2616.txt . Có kết nối, nhưng kết nối là "rơle mù".
P.Brian.Mackey

2
Kết nối là ảo trên web. Về mặt kỹ thuật, để có một kết nối thực sự, bạn cần có một dây chuyên dụng kết nối bạn với phía bên kia, như dây điện thoại (ít nhất là trong những năm <90). Nếu một bên 'ngắt kết nối', bên kia sẽ không biết trừ khi nhận được gói tin rằng bên kia không nghe nữa. Về lý thuyết, gói đó có thể không bao giờ đến. Sau khi hết thời gian, máy chủ cũng 'ngắt kết nối'. Tuy nhiên, kết nối luôn ảo vì lý do này.
Neil

4

Là một nhà phát triển máy tính để bàn, bạn có thể thoải mái hơn với trải nghiệm UI phong phú. Di chuyển đến web có thể cảm thấy như lùi một bước. Trong thế giới web, có ít sự tự do sáng tạo hơn và nó có thể mang lại cho bạn cảm giác gò bó. Đừng để điều đó làm bạn thất vọng! Có một số điều có thể giúp bạn thực hiện chuyển đổi và đây là một danh sách ngắn về chúng:

  1. Trạng thái có thể được chia sẻ nhưng thường xuyên được giữ trên máy chủ và được tham chiếu bằng cách sử dụng mã thông báo, chẳng hạn như id phiên, tham số URL, trường ẩn hoặc giá trị cookie.
  2. Các mô hình phi trạng thái rất phù hợp để xử lý giao dịch. Cố gắng xây dựng mô hình của bạn theo cách có thể giảm lượng trạng thái cần thiết. Các nguyên tắc ACID của xử lý giao dịch có thể giúp bạn đạt được điều này.
  3. Làm quen với mẫu MVC (nếu bạn chưa có). Điều này sẽ giúp cải thiện thiết kế của bạn bằng cách duy trì một mối quan tâm riêng biệt. Một số khung phổ biến như Struts (Java) và MVC (.NET) được xây dựng xung quanh khái niệm này.
  4. Cân nhắc sử dụng một plugin như Java , Flash hoặc Silverlight để có trải nghiệm UI siêu phong phú. Để có trải nghiệm bán phong phú, hãy xem xét sử dụng các thư viện dựa trên tập lệnh java phổ biến như JQuery hoặc AJAX .

Chúc bạn lập trình vui vẻ!


1
chỉ là một lưu ý phụ: hãy cẩn thận với từ viết tắt MVC; ban đầu nó được định nghĩa là một thiết kế OO cho các ứng dụng GUI, sau đó nó được đưa vào một kiến ​​trúc lớp cho các ứng dụng web. Đây là hai điều rất khác nhau.
Javier

Bạn đang đề nghị OP đi sâu vào các công nghệ cung cấp một số cách giải quyết trên web ong không trạng thái thay vì học những điều cơ bản trước?
Tulains Córdova

3

Bởi vì đã có lúc không có hàng triệu trên hàng triệu trang web. Bởi vì đã có lúc chỉ có các trường đại học và cơ sở nghiên cứu có một vài trang. Đã có lúc không có băng thông rộng và http được liên lạc với các modem 1200 baud được đặt trên đầu của điện thoại bàn. Đã có lúc "ứng dụng web phong phú" sẽ yêu cầu, theo quan điểm của họ, một lượng băng thông vô lý. Và hãy nhớ rằng, TCP / IP đã được tạo vì internet ban đầu rất không đáng tin cậy.

HTTP 1.0 xuất hiện vào đầu những năm 1990. Hãy suy nghĩ về internet lúc đó như thế nào và tại sao họ lại thiết kế nó theo cách họ đã làm.


Internet "muộn" vẫn không đáng tin cậy.
Pemdas

@Pemdas - ý bạn là "muộn" internet là gì?
P.Brian.Mackey

Chỉ cần chọn nit. Truyền dữ liệu vẫn không đáng tin cậy nếu không có các giao thức như TCP và thậm chí TCP không thể tính đến kết nối không khả dụng.
Pemdas

3

Tất cả các loại tiến hóa. Internet tồn tại trước các trình duyệt web và Web. Đó là một nồi sủi bọt của ftp, telnet, gopher, ping, ngón tay và một vài bit và bobs khác. Trình duyệt web đầu tiên, khảm (? Tôi nghĩ, là một thời gian dài trước đây, năm 1991 tôi nghĩ, tôi đã ở trường đại học) hoạt động như một sự nhầm lẫn giữa ftp và một người xem tài liệu. Điều kỳ diệu đã xảy ra ở chỗ bạn có thể có các liên kết trong tài liệu sẽ tạo ra một tài liệu mới.

Tất cả các tương tác chúng tôi đã phát triển trong suốt 20 năm sau đó. Đó cũng không phải là một sự tiến hóa hạnh phúc. Chúng tôi đã có các cuộc chiến trình duyệt, IE và Netscape đã giải quyết vấn đề này để kiểm soát các tiêu chuẩn (Bit of a Simplization;)) và nhiều bên thứ 3 khác bắt đầu giới thiệu các trình cắm để cho phép nội dung phong phú. Java sẽ là viên đạn ma thuật và dĩ nhiên là Flash. Có ai còn nhớ các plugin VRML đã hứa hẹn với thế giới 3d và phân phối chính xác nửa tá mô hình 3d của các mô hình Star Wars không?

Tôi đã có một chút mang đi đến cuối cùng, nhưng bạn có ý tưởng :)


Không sao, rất nhiều người khác cũng đã bị mang đi, chủ yếu là những người làm Marketing. Bây giờ chúng ta sẽ ở đâu ngoại trừ động cơ lợi nhuận thô? Vẫn còn một vài chuyên viên máy tính "kết nối một số máy tính" tôi đoán.

3

Những lý do chính liên quan đến sự kết hợp của những gì acedemia tin rằng mục đích của HTTP là và vì lý do khả năng mở rộng. HTML ban đầu được thiết kế để chia sẻ thông tin hoặc luận điểm vượt qua ranh giới học thuật. Đó là văn bản hoàn toàn cách điệu. Mãi cho đến khi trình duyệt đầu tiên cho phép bạn phục vụ những bức ảnh mà mọi người bắt đầu nghĩ xa hơn mô hình đó.

Những cân nhắc sau đây đã củng cố quyết định không quốc tịch:

  • Các tương tác thông thường sẽ là tải xuống nhanh chóng và đọc. Trong thời gian trì hoãn cho đến khi yêu cầu tiếp theo, ổ cắm sẽ không hoạt động.
  • Ổ cắm chiếm tài nguyên hệ thống quý giá. Nếu chúng tôi không phải duy trì một cuộc trò chuyện như với SMTP, bạn có thể làm rất nhiều việc để có một máy xử lý hàng ngàn khách hàng.
  • Họ đã học được những bài học quý giá từ việc quản lý tài khoản shell từ xa, NFS, SMTP và các giao thức kết nối trạng thái khác.

Khi các trang web trở nên phức tạp hơn và bao gồm rất nhiều đồ họa và bảng định kiểu, HTTP đã được gắn cờ "giữ nguyên". Điều đó sẽ giữ cho ổ cắm hoạt động và cho phép khách hàng yêu cầu một số tài nguyên với cùng một cuộc trò chuyện.

Xem xét mô hình sử dụng hiện tại của internet, quyết định ban đầu vẫn còn hiệu lực. Nó có thể bất tiện đôi khi, nhưng một số tương tác nhỏ, được lượng tử hóa với một máy chủ có quy mô tốt hơn so với ổ cắm nhàn rỗi.


3

Nếu bạn có nghĩa là trình duyệt hai chiều.

Lý do an ninh.

Ví dụ SPAM!.

Đưa truyền thông hai chiều trên web lên cấp độ tiếp theo

Nếu không, internet chạy TCP / IP (hai giao thức) và UDP.

Giao thức điều khiển truyền dẫn(TCP) là một trong những giao thức cốt lõi của Bộ giao thức Internet. TCP là một trong hai thành phần ban đầu của bộ phần mềm, bổ sung cho Giao thức Internet (IP) và do đó toàn bộ bộ phần mềm thường được gọi là TCP / IP. TCP cung cấp dịch vụ trao đổi dữ liệu trực tiếp giữa hai máy chủ trên cùng một mạng, trong khi IP xử lý địa chỉ và thông báo định tuyến trên một hoặc nhiều mạng. Cụ thể, TCP cung cấp việc phân phối một luồng byte đáng tin cậy từ một chương trình trên một máy tính sang một chương trình khác trên một máy tính khác. TCP là giao thức mà các ứng dụng Internet lớn dựa vào, các ứng dụng như World Wide Web, e-mail và truyền tệp. Các ứng dụng khác, không yêu cầu dịch vụ luồng dữ liệu đáng tin cậy,

Giao thức Internet(IP) là giao thức truyền thông chính được sử dụng để chuyển tiếp các datagram (gói) qua mạng nội bộ bằng Bộ giao thức Internet. Chịu trách nhiệm định tuyến các gói qua ranh giới mạng, đây là giao thức chính thiết lập Internet. IP là giao thức chính trong Lớp Internet của Bộ giao thức Internet và có nhiệm vụ phân phối các datagram từ máy chủ nguồn đến máy chủ đích chỉ dựa trên địa chỉ của chúng. Với mục đích này, IP định nghĩa các phương thức và cấu trúc địa chỉ cho đóng gói datagram. Trong lịch sử, IP là dịch vụ datagram không kết nối trong Chương trình điều khiển truyền dẫn ban đầu được giới thiệu bởi Vint Cerf và Bob Kahn vào năm 1974, còn lại là Giao thức điều khiển truyền dẫn hướng kết nối (TCP). Do đó, Bộ giao thức Internet thường được gọi là TCP / IP.


3

Trong một ứng dụng máy tính để bàn, người dùng được cho là đang thực hiện một số chuỗi nhiệm vụ, với một bắt đầu và kết thúc được xác định. Trong một ứng dụng như vậy, thực sự có ý nghĩa (thực tế không nhiều) cho người dùng đăng nhập vào bất cứ máy chủ nào cung cấp dữ liệu của họ và vẫn đăng nhập cho đến khi hoàn tất.

Các tương tác web không (thường) theo cùng một mô hình. Chẳng hạn, trong một trang web thương mại điện tử, người dùng có thể đến phần mô tả sản phẩm do kết quả tìm kiếm của Google và ngay lập tức rời khỏi trang đó để xem xét việc cung cấp cùng một sản phẩm của một trang web khác. Hoặc anh ấy có thể bắt đầu quá trình thanh toán, sau đó quyết định rằng sản phẩm quá đắt và từ bỏ nó giữa chừng. Ý tưởng cơ bản của "siêu văn bản" ngụ ý khả năng và kỳ vọng nhảy từ vị trí này sang vị trí khác.

Kết nối vĩnh viễn tiêu thụ tài nguyên. Có lẽ chỉ là một ổ cắm mạng, có lẽ là một nhóm các truy vấn cơ sở dữ liệu được phân tích cú pháp; tất cả phụ thuộc vào ứng dụng. Với một người dùng có thể biến mất bất cứ lúc nào, sẽ không có ý nghĩa gì khi giữ những tài nguyên đó được cam kết.

Trong thực tế, không có nhu cầu thực sự cho người dùng để có kết nối vĩnh viễn. Ứng dụng web duy trì các kết nối đến bất kỳ tài nguyên nào (ví dụ: cơ sở dữ liệu) mà nó cần và chia sẻ chúng giữa tất cả các yêu cầu của người dùng. Khung ứng dụng web cung cấp các phiên, là nơi giới hạn thời gian để lưu trữ dữ liệu theo người dùng cho các yêu cầu khác nhau. Điều duy nhất bạn không thể làm (dễ dàng) là có các giao dịch do khách hàng kiểm soát lâu dài, nhưng đó là một ý tưởng tồi ngay cả trong một ứng dụng duy trì kết nối.


2

Internet không nhất thiết là không trạng thái - thực tế khi bạn nhìn vào Java EE - chúng có EJB trạng thái và EJB không trạng thái.

Lý do chính tại sao các nhà phát triển khuyên bạn nên sử dụng kiến ​​trúc không trạng thái là vì khả năng mở rộng. Hãy tưởng tượng bạn đang cố gắng duy trì trạng thái của tất cả người dùng của mình sau khi bạn thêm và thả máy chủ để hỗ trợ lưu lượng truy cập của mình.

Thật sự không khó để phát triển một kiến ​​trúc không quốc tịch. Điểm chính là giữ càng ít trạng thái càng tốt (thường là id người dùng - tốt nhất là trong cookie) và thay đổi cơ sở dữ liệu theo yêu cầu.


1

Tôi nghĩ rằng nó đã bắt đầu theo cách đó và chỉ tiếp tục là như vậy. Bây giờ có rất nhiều cơ sở hạ tầng được xây dựng xung quanh nó, không thể thay đổi nó.

Có lẽ nó bắt đầu không trạng thái vì các kết nối ban đầu kém tin cậy hơn và băng thông cũng nhỏ hơn. Nếu bạn không có nhiều kết nối hoạt động, bạn có thể xử lý lưu lượng truy cập dễ dàng hơn.

Vui lòng chỉnh sửa hoặc để lại nhận xét nếu bạn có thông tin tốt hơn hoặc tốt hơn, gửi câu trả lời của riêng bạn!


1

Bởi vì các máy chủ cung cấp một dịch vụ (trong tên của nó). Bạn đưa ra yêu cầu và nhận câu trả lời - đó là tất cả những gì có trong đó.

Liên quan đến việc thực hiện chuyển đổi sang phát triển web, tôi tin rằng ASP.NET Web Forms sẽ thực hiện theo cách dễ hiểu hơn đối với bạn - nhưng đó chỉ là vì nó che giấu những gì thực sự xảy ra dưới các lớp trừu tượng.


Tôi là một nhà phát triển Winforms, người đã từng cố gắng thực hiện chuyển đổi sang dạng web ASP.NET. Trải nghiệm không dễ chịu. Tôi rất thích ASP.NET MVC.
Robert Harvey

À đúng rồi - tôi cũng bắt đầu bằng PHP rồi chuyển qua. Tôi mất khoảng 6 tháng để ngừng tạo HTML trong các vòng lặp
billy.bob

1

Rất nhiều điều có thể được hiểu bằng cách phân tích tên của HTTP (Giao thức truyền siêu văn bản). Nó không bao giờ được thiết kế để trở thành một giao thức UI phong phú. Ý tưởng ban đầu là chia sẻ tài liệu với các liên kết giữa chúng. Tôi yêu cầu bạn cho một tài liệu, bạn trả lời với một bản sao của tài liệu đó.

Ban đầu HTTP chỉ có một động từ NHẬN. Về vấn đề đó, nó được thiết kế cho nội dung tĩnh. Tại sao bạn cần trạng thái khi tất cả những gì bạn đang làm là yêu cầu một tài liệu mà ai đó đang chia sẻ? Và đó là lý do tại sao HTTP không trạng thái ... vì nguồn gốc của nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.