2009-09-24 24 views
8

Tôi đang viết một ứng dụng web ASP.NET sẽ chạy trên Windows Server 2008 (IIS7).Có bao nhiêu cuộc gọi HttpWebRequest ra bên ngoài có thể được thực hiện trong ASP.NET/IIS7?

Mỗi mã của trang sẽ cần phải thực hiện ít nhất một cuộc gọi dịch vụ web đồng bộ đến máy chủ bên ngoài bằng cách sử dụng HttpWebRequest và GET.

Câu hỏi của tôi - có giới hạn nào về số lượng các cuộc gọi HttpWebRequest ra bên ngoài mà tôi có thể thực hiện không? (giả sử rằng máy chủ tôi đang gọi không có giới hạn)

Có phương tiện nào để gộp các kết nối này để làm cho quy mô ứng dụng tốt hơn không? Cấu hình web vườn có giúp ích gì không?

Trả lời

5

Theo mặc định, một HTTP/1.1 máy chủ được giới hạn trong hai kết nối, và HTTP/1.0 máy chủ được giới hạn trong bốn kết nối. Vì vậy, ứng dụng ASP.NEt của bạn sẽ có các vấn đề thông lượng nghiêm trọng nếu bạn đang cố gắng phát hành hơn hai yêu cầu chưa xử lý cho máy chủ HTTP/1.1, ví dụ:

Bạn sẽ cần tăng giới hạn kết nối, cho mỗi máy chủ hoặc trên toàn cầu.

Đối với ví dụ trên toàn cầu:

ServicePointManager.DefaultConnectionLimit = 10; // allow 10 outstanding connections 

Hope this helps.

+0

Điều này thực sự hữu ích. Nghĩ rằng tôi sẽ thêm rằng để thiết lập điều này thông qua web.config, bạn có thể thêm địa chỉ vào system.net/connectionManagement. – Jacob

1

Tôi nghĩ câu hỏi của bạn nên được hướng tới cấu hình mạng.

Tôi muốn nói rằng bạn đang yêu cầu gặp sự cố nếu mọi trang phụ thuộc vào cuộc gọi bên ngoài đồng bộ. Điều gì sẽ xảy ra nếu bạn nhận được số lượng yêu cầu được treo trên (các) dịch vụ web bên ngoài? Bạn sẽ có một số vấn đề về kết thúc của bạn sau đó và bạn không thể làm gì về nó.

Bạn có coi cuộc gọi không đồng bộ với cuộc gọi lại không?

EDIT: Asynchronous Pages in ASP.NET 2.0

+0

sẽ async cuộc gọi làm việc khi gọi từ codebehind một trang của ASPX? – frankadelic

+0

Đó là một câu hỏi được tải, nhưng tôi đã thêm một liên kết có ví dụ sẽ giúp bạn tiếp tục. –

Các vấn đề liên quan