Tôi đang cố gắng ràng buộc nguồn dữ liệu với bộ lặp, ví dụ, với dịch vụ web (.asmx từ một trang web khác) trên tải trang. Webservice trả về một DataSet từ một cuộc gọi sql. Cách tốt nhất để thực hiện điều này là gì?cách tốt nhất để sử dụng dịch vụ web trong mã asp.net phía sau
Trả lời
Gọi dịch vụ web, lấy kết quả và liên kết nó với bộ lặp của bạn.
Nếu có thể, bạn cũng có thể cố gắng lưu trữ thông tin trong một khoảng thời gian ở bên cạnh bạn, nếu có thể để trợ giúp hiệu suất tổng thể.
Vì bạn đang gọi một trang web khác, bạn phải tranh luận với hai vấn đề (đặc biệt nếu dịch vụ web này nằm trên trang web của người khác hoặc qua internet công cộng). Đầu tiên, có thể có sự chậm trễ để truy xuất dữ liệu từ trang web khác. Thứ hai, trang web khác có thể hết thời gian chờ.
Ít nhất bạn nên xem xét yêu cầu asychronous page. Vì đây MSDN bang Bài chi tiết:
Nếu một yêu cầu đồng bộ trở nên I/O ràng buộc-ví dụ, nếu nó gọi ra một dịch vụ Web từ xa hoặc truy vấn một cơ sở dữ liệu từ xa và chờ đợi cuộc gọi đến trở lại — khi đó, chuỗi được gán cho yêu cầu bị kẹt không làm gì cả cho đến khi cuộc gọi trả về. Điều đó cản trở khả năng mở rộng vì hồ bơi chủ đề có số lượng chủ đề hữu hạn khả dụng. Nếu tất cả các yêu cầu xử lý chủ đề bị chặn đang chờ các hoạt động I/O hoàn thành, các yêu cầu bổ sung được xếp hàng chờ đợi cho các chủ đề miễn phí. Tốt nhất, thông số giảm do yêu cầu chờ đợi lâu hơn để được xử lý. Tệ nhất là, hàng đợi sẽ đầy và ASP.NET bị lỗi yêu cầu tiếp theo với lỗi "Máy chủ Không khả dụng".
Nhưng giải pháp tốt nhất có thể là sử dụng AJAX. Tải trang sau đó thực hiện yêu cầu ajax để lấp đầy bộ lặp. Bằng cách đó bạn có thể có hình ảnh "quay" đẹp hoặc một thứ khác đang diễn ra trong khi bạn đang chờ trên webservice.