Có phải việc thiếu các trạng thái trên HTTP làm cho giao thức không phù hợp với các ứng dụng hiện đại? [đóng cửa]


8

Tôi đã thay đổi từ PHP sang ASP.NET, bây giờ tôi đang làm việc với các biểu mẫu web trong một công ty lớn. Tôi đã đưa ra một số và nghiên cứu để lấy lại ấn tượng của mình về các biểu mẫu web ASP.NET và tôi đã đi đến kết luận rằng Webforms là một nỗ lực để làm cho các ứng dụng web dễ viết hơn cho những người đến từ thế giới "lập trình máy tính để bàn".

Nhưng trước khi lẩn tránh các WebForms, tôi đã quyết định phân tích nhu cầu của phần mềm chúng tôi viết và gặp phải vấn đề duy trì trạng thái ứng dụng trên Web.

Tôi hiểu rằng HTTP là một giao thức không trạng thái và ASP.NET cố gắng mô phỏng các trạng thái với các biến phiên, trường ẩn và khung nhìn, theo cách hiểu của tôi, tất cả các trích dẫn ở trên đều có sai sót và không phải là cách hoàn hảo để giữ trạng thái trong tôi ứng dụng, nhưng tôi cũng hiểu sự cần thiết phải giữ trạng thái trên ứng dụng của mình.

Điều này đặt ra câu hỏi, liệu HTTP có thực sự phù hợp với loại công việc này (tạo ra các ứng dụng yêu cầu trạng thái) không? Các công cụ hiện có sẵn cho các nhà phát triển web có đủ không? Các công cụ mới có sẵn với HTML5 có hiệu quả trong công việc không hay chúng chỉ là cách giải quyết cho các hạn chế đối với HTTP.

Tôi thích phát triển web và tôi quen thuộc với web hơn so với máy tính để bàn, tôi chỉ băn khoăn về điều không trạng thái HTTP này một thời gian và tôi muốn hiểu nếu tôi thiếu một số điểm hoặc nếu tôi m ngay trên quan niệm của tôi.


2
Toán học Chính nó và không cố gắng mô phỏng với những thứ như viewstate khét tiếng? là nó?
Jonathan dos Santos

2
@MathewFoscarini Tôi nghĩ bạn đang nhầm lẫn một cái gì đó. Không có gì trong câu hỏi phù hợp với HTML và mọi thứ đều phù hợp với HTTP.

2
@delnan nhầm lẫn là một trạng thái tâm trí bình thường đối với tôi.
Phản ứng

1
HTTP là một giao thức truyền ... khác với chuyển tập tin, trạng thái nào được cho là theo dõi? Tôi đồng ý với Matthew, bạn đang nhầm lẫn HTTP & HTML. Ngoài ra, bỏ phiếu để đóng vì nó khá ngớ ngẩn để hỏi liệu nó có 'hoàn thành nhiệm vụ' trên một hệ thống dựa trên web như trang web này không.
GrandmasterB

2
Tôi nghĩ rằng điều này đi xuống định nghĩa của "Nhà nước". Về mặt bạn đã có thể coi mã phản hồi HTTP là biểu tượng của trạng thái máy chủ nhưng ứng dụng là gì? Trạng thái ứng dụng không nằm trong phạm vi của thông số HTTP nhưng phần lớn các ứng dụng web được yêu cầu.
NickSuperb

Câu trả lời:


10

Giao thức có thể không trạng thái, nhưng ứng dụng bạn viết có thể duy trì bất kỳ trạng thái nào :)


1
Tôi hiểu quan điểm của bạn, nhưng sau đó không phải là các công nghệ hiện tại bên dưới nhiệm vụ? Tôi đã nói rằng các biến Phiên không phù hợp để giữ các đối tượng lớn và tuần tự hóa chúng hoặc "cơ sở dữ liệu" chúng là không phù hợp, tôi có sai không?
Jonathan dos Santos

1
Bạn không sai, nhưng cảm ơn chúa, chúng tôi đủ thông minh để làm cho giao thức HTTP đủ cho chúng tôi. HTTP cũng đơn giản đến mức về cơ bản bạn có thể xây dựng bất cứ thứ gì bạn muốn lên trên nó: một viên gạch chỉ là một viên gạch, nhưng bạn có thể xây dựng những ngôi nhà và những cây cầu bằng nó. :) Nói về các phiên ... Còn về các phiên được triển khai trong Redis hoặc các cơ sở dữ liệu NoQuery khác thì sao? Vase.pocoo.org/snippets/75 (và nhiều người khác)
Napolux

1
@jonathan - Có sẵn bộ lưu trữ cục bộ nơi bạn có thể lưu dữ liệu nhiều hơn bất kỳ thứ gì trong cookie.
Cướp

@Rob Nhưng nó chỉ dành cho HTML5 / trình duyệt hiện đại ...
Napolux

Chà, anh ấy đã nói "ứng dụng hiện đại".
Cướp

7

HTTP chắc chắn là một công nghệ cũ đã trở nên khá phổ biến khi web trở nên như vậy. Kết quả là mọi người đang mở rộng công nghệ này để làm nhiều việc hiện nay với các ứng dụng web hiện đại, nó có thể xuất hiện tình trạng không trạng thái của HTTP là một vấn đề. Do đó bạn thấy rất nhiều tiện ích như viewstates.

Tuy nhiên, cũng có thể mã hóa các ứng dụng web hiện đại theo cách không trạng thái và điều này thường được ưa thích, phát triển web RESTful dựa trên ý tưởng này. Nhiều API web tạo nền tảng cho các ứng dụng web hiện đại thực sự không trạng thái và nên như vậy. Đó là một cách khác nhau để suy nghĩ và kiến ​​trúc sư. Nhu cầu của bạn có thể thay đổi tùy thuộc vào những gì bạn đang làm.


6
Statless cũng dễ dàng hơn để mở rộng quy mô và bộ nhớ cache.
Phản ứng

5

Nhiều giao thức không trạng thái khi bạn xuống tầng giao thức thô. Tính trạng thái không phải là trở ngại chính cho Phát triển Web. Trở ngại chính là HTTP theo mặc định là Không phiên. Đó là, theo mặc định, một loạt các yêu cầu của trình duyệt đến một máy chủ không liên quan đến nhau.

Chúng tôi khắc phục điều này bằng cách sử dụng cookie để biểu thị một phiên. Máy chủ ASP.NET cung cấp cookie cho trình duyệt, người này sẽ trả lại nó theo yêu cầu tiếp theo. Đằng sau hậu trường, ASP.NET tìm kiếm cookie đó và kết nối nó với Phiên mà nó đã lưu trong bộ nhớ cache (giả sử phiên không hết thời gian).

Từ đó, các dữ liệu khác có thể được liên kết với phiên và được sử dụng để tạo trải nghiệm tùy chỉnh cho mỗi người dùng. Máy chủ và khung công tác web đã trở nên tốt đến mức các máy khách phong phú có thể được xây dựng dựa trên giao thức HTTP. Trường hợp cụ thể, khách hàng Twitter sử dụng http cho tất cả mọi thứ từ lấy danh sách bạn bè và tweet, đến gửi tin nhắn trực tiếp đến người dùng khác. (Tôi đang đơn giản hóa phần nào, có một giao thức truyền phát TCP được kết nối đầy đủ có sẵn thông qua twitter, nhưng đối với hầu hết các phần, HTTP là cốt lõi của mọi thứ.

HTML ở một mức độ đã đạt đến giới hạn của nó như là một công nghệ hiển thị đầy đủ, nhưng tiêu chuẩn HTML 5 cùng với JavaScript và CSS 3 đã giúp tạo ra các UI phong phú cạnh tranh với những khách hàng bản địa. Trên thực tế, HTML 5 đã xuất hiện cho đến nay, nó được hỗ trợ như một công nghệ gốc cho các ứng dụng Windows 8. Với các thư viện như JQuery cho máy khách và NodeJS cho máy chủ, người ta có thể tạo một ứng dụng sử dụng JavaScript cho logic của nó trên máy khách và máy chủ và HTML để hiển thị và HTTP thuần để liên lạc.

Vì vậy, trong khi trước đây, lập luận rằng HTML / HTTP đã đạt đến giới hạn của nó có thể có một số giá trị, thì thực tế không còn như vậy nữa.

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.