- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要您在以下方面提供帮助。近一个月来,我一直在阅读有关任务和异步的内容。
我想尝试在一个简单的 wep api 项目中实现我新获得的知识。我有以下方法,并且它们都按预期工作:
public HttpResponseMessage Get()
{
var data = _userServices.GetUsers();
return Request.CreateResponse(HttpStatusCode.OK, data);
}
public async Task Get()
{
var data = _userServices.GetUsers();
return await Task.Factory.StartNew(() =>
{
return Request.CreateResponse(HttpStatusCode.OK, data);
});
}
所以问题来了。我尝试使用 fiddler 看看这两者有什么区别。异步的速度要快一些,但除此之外,在 Web api 中实现类似的东西的真正好处是什么?
1 Câu trả lời
正如其他人所指出的,ASP.NET 上的không đồng bộ
的要点在于它释放了 ASP.NET 线程池线程之一。这对于自然异步操作(例如 I/O 绑定(bind)操作)非常有用,因为服务器上少了一个线程(没有线程“处理”异步操作 as I explain on my blog )。因此,服务器端异步
的主要好处是可扩展性.
但是,您希望避免在 ASP.NET 上使用 Task.Run
(更糟糕的是 Task.Factory.StartNew
)。我称其为“假异步”,因为它们只是在线程池线程上执行同步/阻塞工作。它们在您希望将工作从 UI 线程中推送出去以便 UI 保持响应的 UI 应用程序中很有用,但它们(几乎)永远不应该在 ASP.NET 或其他服务器应用程序上使用。
在 ASP.NET 上使用 Task.Run
hoặc Task.Factory.StartNew
实际上会降低可伸缩性。它们会导致一些不必要的线程切换。对于运行时间较长的操作,您最终可能会放弃 ASP.NET 线程池启发式方法,导致创建额外的线程,然后又不必要地销毁这些线程。我一步步探索这些性能问题in another blog post .
因此,您需要考虑每个操作正在做什么,以及其中任何操作是否应该是异步的。如果应该,那么该操作应该是异步的。对于您的情况:
public HttpResponseMessage Get()
{
var data = _userServices.GetUsers();
return Request.CreateResponse(HttpStatusCode.OK, data);
}
Request.CreateResponse
到底在做什么?它只是创建响应对象。就是这样 - 只是一个奇特的mới
。那里没有发生任何 I/O,而且它当然不需要被推送到后台线程。
Nhưng,GetUsers
更有趣。这听起来更像是基于 I/O 的数据读取。如果您的后端可以扩展(例如,Azure SQL/表/等),那么您应该首先考虑使该异步,一旦您的服务公开了 GetUsersAsync,那么此操作也可以变为异步
:
public async Task Get()
{
var data = await _userServices.GetUsersAsync();
return Request.CreateResponse(HttpStatusCode.OK, data);
}
关于c# - 异步任务
Tôi mới làm quen với Mercurial và vẫn đang trong quá trình đánh giá nên bốn khái niệm này có chút khó hiểu với tôi. Một số được cho là tương đương với khái niệm Staging/Index của Git và một số thậm chí còn tiên tiến hơn cả Staging của Git.
đóng cửa. Câu hỏi này cần tập trung hơn. Hiện tại, câu hỏi này không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để tập trung vào một câu hỏi duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 6 tháng trước. Cải thiện câu hỏi này
Có ai có thể cho tôi biết thông tin chi tiết không? Ví dụ? #ID là một thuộc tính, một thuộc tính, một bộ chọn hay một neo? Thuộc tính mặc định và thuộc tính mặc định có phải là hai thứ khác nhau không? Đây có phải là tất cả các thẻ hay phần tử không? Chúng ta sẽ nói gì về điều này.....và những điều này
đóng cửa. Câu hỏi này cần tập trung hơn. Hiện tại, câu hỏi này không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để tập trung vào một vấn đề duy nhất bằng cách chỉnh sửa bài đăng này. Đã đóng 8 năm trước. Cải thiện điều này
Tôi có một danh sách thả xuống được điền bằng Javascript. Trong khi quyết định các giá trị mặc định để hiển thị khi tải, tôi nhận ra rằng các thuộc tính sau đây hiển thị cùng một giá trị chính xác: innerText innerHTML label text textContent
Tôi có thể biết sự khác biệt giữa mỗi Exec không? , ExecWait , ExecShell , nsExec::Exec , nsExec::ExecToLog, nsExec::ExecToStac
Bạn bảo trì phần mềm của mình như thế nào khi đang sử dụng phiên bản 1 và phiên bản 2? Theo quan điểm của tôi, các thuật ngữ như "bản vá", "bản sửa lỗi nhanh", "bản phát hành bảo trì", "gói dịch vụ", v.v. đều mơ hồ và có định nghĩa khác nhau tùy thuộc vào người bạn nói chuyện. Bạn gọi phiên bản này như thế nào?
Tôi vừa phát hiện ra có một phương pháp toán học mới trong ES6: Math.trunc. Tôi đã đọc mô tả của nó trong bài viết MDN này. , nghe giống như sử dụng |0 . Ngoài ra, >0 , &-1 , ^0 cũng làm những việc tương tự (cảm ơn
Tôi muốn biết chiều cao của tất cả các mục trong StackPanel của tôi. Sự khác biệt là gì: Chiều cao - Lấy hoặc đặt chiều cao được đề xuất của phần tử. ActualHeight - Lấy chiều cao được hiển thị của phần tử. (Chỉ đọc) ExtentHeight
đóng cửa. Câu hỏi này không liên quan đến chủ đề. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để phù hợp với chủ đề trên Stack Overflow. Đã đóng cửa 9 năm trước. Cải thiện điều này
Tôi bối rối vì tất cả các hàm Mathematica tích hợp đều tuyên bố có thể ngăn chặn việc tính toán theo một cách nào đó: Unevaluated, Defer, Hold và hơn nửa tá biểu mẫu Hold*. Tài liệu Mathematica chỉ có sẵn cho cá nhân
Tôi thậm chí còn không chắc chắn về thuật ngữ chính xác, vậy nên hãy để tôi bắt đầu với mục tiêu của mình: có một ứng dụng đơn giản ("Data Doler") chỉ đọc một lượng lớn dữ liệu từ tệp vào bộ nhớ, sau đó cung cấp dịch vụ cắt dữ liệu đó thành một ứng dụng nhiều lớp duy nhất có tên là "Data Lapper".
Tôi vừa bắt đầu sử dụng Elasticsearch trong dự án của mình và tôi muốn tìm kiếm giống như từ khóa sql 'like %'. Ai đó có thể giải thích sự khác biệt giữa ký tự đại diện, tiền tố, chuỗi truy vấn và biểu thức chính quy không? Người nào có thể tìm kiếm tốt nhất cho
Vì tôi không thực sự hài lòng với bất kỳ trình duyệt chính nào (Firefox, Chrome, Opera) và không có trình duyệt ít phổ biến nào mà tôi đã thử (gần chục trình duyệt) hoạt động được, nên tôi quyết định tự làm và tạo một trang web có thể trở thành trình duyệt tốt nhất mà tôi có thể. Mục tiêu chính là làm cho nó
Tôi biết cách phân tích cú pháp một trang bằng Python. Câu hỏi của tôi là trong số tất cả các kỹ thuật phân tích cú pháp, phương pháp nào là nhanh nhất và các phương pháp khác nhanh như thế nào? Các kỹ thuật phân tích cú pháp mà tôi biết là Xpath, DOM, BeautifulSoup và fin sử dụng Python.
Tôi đang cố gắng tìm ra hàm nào là tốt nhất để chuyển đổi số thập phân, thập lục phân hoặc bát phân thành số int từ dòng lệnh mà tôi phân tích tốt nhất - mà không biết trước dữ liệu đầu vào. Mục tiêu là sử dụng một hàm để nhận dạng các loại đầu vào khác nhau và gán chúng cho các giá trị số nguyên (int).
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bởi các sự kiện, tài liệu tham khảo hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
Chúng tôi cần hiển thị thông tin siêu dữ liệu (ví dụ: địa chỉ, tên) của nhiều địa điểm khác nhau như quán bar, nhà hàng và nhà hát trên trang web của mình. Trong trường hợp lý tưởng, người dùng sẽ nhập tên địa điểm cùng với mã bưu chính và chúng tôi sẽ cung cấp kết quả khớp nhất. Mọi người đang sử dụng API nào cho mục đích định vị địa lý tương tự?
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
Tôi đang tạo ứng dụng web đầu tiên của mình và thực sự bối rối không biết nên sử dụng công nghệ nào. Ứng dụng của tôi cần trông nghiêm túc (như một ứng dụng thông thường), không cần nhiều giao diện đồ họa nhiều màu sắc. Nó chỉ cần một thanh công cụ, một thanh tab, một bảng chia tách (hầu hết
Tôi là một lập trình viên xuất sắc, rất giỏi!