112

Tôi tiếp tục nghe những lời này ' callback ' và ' postback ' ném xung quanh.
Sự khác biệt giữa hai là gì?

Là postback rất cụ thể cho các trang ASP.NET?

|
199

Một Postback xảy ra khi dữ liệu (toàn bộ trang) trên trang được đăng từ máy khách lên máy chủ..ie dữ liệu được đăng - trở lại máy chủ , và do đó trang được làm mới (vẽ lại) ... nghĩ về nó như ' gửi máy chủ toàn bộ trang (asp.net) đầy dữ liệu '.

Mặt khác, gọi lại cũng là một loại postback đặc biệt , nhưng nó chỉ là một chuyến đi nhanh đến máy chủ để có được một bộ dữ liệu nhỏ (thông thường), và do đó trang không được làm mới, không giống như postback ... Hãy nghĩ về nó như là ' gọi máy chủ và nhận lại một số dữ liệu '.

Với Asp.Net, ViewState không được làm mới khi gọi lại , không giống như gửi lại.

Lý do khiến toàn bộ trang được đăng với ASP.Net là vì ASP.Net bao quanh toàn bộ trang <form>bằng một phương thức đăng và do đó, khi nhấp vào nút gửi trong trang, biểu mẫu được gửi đến máy chủ với tất cả các trường ở dạng ... về cơ bản là toàn bộ trang.

Nếu bạn đang sử dụng FireBug (cho Firefox), bạn thực sự có thể thấy các cuộc gọi lại được gọi đến máy chủ trong Console. Bằng cách đó, bạn sẽ thấy dữ liệu cụ thể nào đang được gửi đến máy chủ ( Request) và cả dữ liệu mà máy chủ đã gửi lại cho bạn ( Response).


Hình ảnh dưới đây minh họa Vòng đời Trang của cả postback và callback trong Website dựa trên ASP.NET:


(nguồn: esri.com )

|
18

Một postback xảy ra khi một yêu cầu được gửi từ máy khách đến máy chủ cho cùng một trang với người dùng hiện đang xem. Khi một postback xảy ra, toàn bộ trang được làm mới và bạn có thể thấy tiến trình điển hình trên thanh tiến trình ở cuối trình duyệt.

Một cuộc gọi lại, thường được sử dụng với AJAX, xảy ra khi một yêu cầu được gửi từ máy khách đến máy chủ mà trang không được làm mới, chỉ một phần của nó được cập nhật mà không có bất kỳ nhấp nháy nào xảy ra trên trình duyệt

|
5

Tôi đồng ý với câu trả lời của Dreas, nhưng tôi muốn thêm một vài điểm. Postback là một thuật ngữ được giới thiệu rất gần đây bởi lập trình ASP .NET như Dreas đã giải thích, trong khi gọi lại thì chung chung hơn và đã được sử dụng trước khi phát triển web tồn tại. Trong thực tế lần đầu tiên tôi nghe về việc gọi lại vào những ngày khi tôi bắt đầu lập trình bằng C (có thể là thuật ngữ tồn tại trước đó, tôi không biết) và nó chỉ đơn giản có nghĩa là một con trỏ để hoạt động và con trỏ này cho một chức năng (tên A này) được chuyển đến một chức năng khác (tên B này) mà sau này sẽ gọi A. Callback gần đây cũng được sử dụng bởi Trình quản lý kết nối giao diện người dùng Yahoo và các khung công tác Ajax khác nhưng tôi tin rằng thuật ngữ này đã được sử dụng lần đầu tiên trong những ngày C cũ.

|
3

Rất nhiều cuộc thảo luận này là ngôn ngữ gobbledygook ASP.NET ....

Câu trả lời là CÓ. Postback là một "thuật ngữ" cụ thể đối với ASP.NET của Microsoft Nhưng hãy nhớ rằng, các nhà cung cấp như Microsoft bao bọc các phiên bản OWN của họ về các quy trình này xung quanh việc triển khai chúng, khiến chúng ta nhầm lẫn về những gì THỰC SỰ HẠNH PHÚC trong thế giới http / Html.

Phiên bản POSTBACK của họ về cơ bản là một yêu cầu POST HTTP truyền thống được gửi lại cho máy chủ ban đầu. Nhưng trong ASP.NET họ làm điều đó bằng cách dán một thẻ phần tử FORM HTML khổng lồ (với thuộc tính phương thức POST) trên toàn bộ trang web thay vì các điều khiển biểu mẫu truyền thống trong một phần nhỏ của trang web. Họ làm điều này bởi vì họ đang sử dụng đặc tả HTTP để duy trì "trạng thái" trang của họ và các điều khiển của trang đó và để đảm bảo toàn bộ trang, ngay cả đánh dấu trường không phải dạng truyền thống, vẫn còn nguyên vẹn.

Thật không may, điều này sẽ gửi một lượng lớn dữ liệu đơn nhất qua dây sao cho VIEWSTATE của họ và POSTBACK của họ trong trang đã bị nhiều người xem là lãng phí băng thông và cách thức triển khai trang web cẩu thả. Tôi có thể cho bạn thấy rằng hầu hết các trình duyệt và trang web hiện đại, nếu được thiết kế bằng cách sử dụng CSS có thể lưu vào bộ nhớ cache và đánh dấu HTML nhất quán, sẽ trả về trạng thái trang khá tự nhiên bằng cách sử dụng bộ đệm HTML gốc của trình duyệt. tức là Full POSTBACK thường không cần thiết.

CALLBACK chỉ là JavaScript. Nó chỉ là trò xiếc ECMASCRIPT lưu trữ ASP.NET trong cái mà họ gọi là API AJAX của họ trong các thư viện JavaScript khổng lồ mà trình duyệt của bạn tải xuống từ máy chủ và các nhà phát triển ASP.NET vô tình đóng gói vào các trang web của họ để kích hoạt các thay đổi trong trang web mà không cần POSTBACK. API ASP.NET cho AJAX chỉ tạo tất cả Javascript khổng lồ này ở phía máy khách và được kích hoạt trong trình duyệt khi người dùng thay đổi thứ gì đó, cuộn qua một cái gì đó hoặc nhấp vào cái gì đó trong trình duyệt kích hoạt các sự kiện DOM trình duyệt JavaScript truyền thống, mà sau đó chuyển một khối lượng lớn JSON hoặc dữ liệu khác trở lại máy chủ để xử lý. Điều đó sau đó được trả về và chấp nhận bởi các thư viện và đối tượng Javascipted trong bộ nhớ trong trình duyệt và thay đổi các phần của trang web và đánh dấu người dùng.

Nó cho biết khoảng 5-10% người dùng và trình duyệt đã tắt Javascript, vì vậy tất cả JSON và AJAX này sẽ bị sập và cháy cho những người đó. tức là CALLBACK sẽ không hoạt động.

Đó là những gì diễn ra sau hậu trường. Phần lớn là quá mức cần thiết, nếu bạn hỏi tôi. Và đó là lý do tại sao các mô hình Web Control trong ASP.NET đã bị chỉ trích trong quá khứ.

Nếu bạn từ bỏ ASP.NET trong một giây, bạn có thể tự viết một trường FORM đơn giản trong một trang web HTML với một hộp văn bản và nút và nhấn nó và xem nó đăng lên máy chủ, giống hệt như một trang ASP.NET sẽ làm nhưng nhanh hơn và đơn giản hơn Đó là những gì POSTBACK thực sự là. Trình duyệt tự nhiên gửi cho máy chủ tiêu đề POST HTTP cần thiết để làm như vậy, nhưng lưu trữ HTML trong phần còn lại của trang, do đó, nó tự hiển thị nhanh như chớp.

Đối với CALLBACK, bạn chỉ có thể thêm mã Javascript / ECMAScript đơn giản vào cùng trang HTML đó, khi người dùng cuộn qua một số văn bản hoặc nút, nhấp hoặc thay đổi trường biểu mẫu, trang web không POST, nhưng đằng sau hậu trường bạn Có Javascript gửi một cái gì đó lên máy chủ. Cách bạn xử lý điều đó thông qua JavaScript, JSON hoặc thư viện của riêng bạn là một thỏa thuận khác. Nhưng nó không phải là phép thuật. Đối với những người không có Javascipt hoặc Javascript bị vô hiệu hóa, bạn nên thiết kế các trang không có CALLBACK và chỉ lưu trữ bất kỳ thay đổi nào trả về khi nhấp vào điều khiển trường biểu mẫu hoặc siêu liên kết. Đó là một lý do để xem xét lại các thói quen gọi lại mặc dù hầu hết các tác nhân người dùng hiện đại hiện đang thiết lập cho các thói quen trang web ECMAScripted.

Đó là điều khiến mọi người nhầm lẫn ...... các nhà cung cấp này thực hiện các yêu cầu HTTP rất cơ bản và các thủ thuật Javascript được sắp xếp thành ngôn ngữ không rõ ràng. Sau đó, nó khiến mọi người xây dựng các ứng dụng web quái dị làm tất cả những thứ không cần thiết này mà mã hóa rất đơn giản sẽ giải quyết.

Tôi vẫn sử dụng và giới thiệu ASP.NET. Đó là một chặng đường dài và một hệ thống tuyệt vời. Nhưng nó sẽ giúp nếu nhiều người hiểu những điều cơ bản về những gì họ làm trước khi sử dụng chúng vì những khung này có thể được tùy chỉnh và đơn giản hóa một chút để cải thiện chúng nếu bạn thấy những gì đang thực sự diễn ra dưới mui xe.

|
0

Một postback cũng là một chuyến đi khứ hồi về cơ bản khi một postback được thực hiện tại thời điểm đó nó gọi phương thức đặc biệt được gọi là khứ hồi..Postback nằm ở phía máy chủ trong đó chuyến đi khứ hồi nằm ở phía máy khách.

|
0

Một postback xảy ra khi một yêu cầu được gửi đến một máy chủ không cần cung cấp chi tiết về bảo mật cho mỗi yêu cầu.

Khi bạn thực hiện một yêu cầu cho cuộc gọi lại trang khác được sử dụng bởi máy chủ

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.