2012-05-15 28 views
6

Dường như có một vài tùy chọn sẵn có để thực hiện lập trình async/push-style với asp.net. Nhưng tôi là một chút bối rối như những gì là tốt nhất và những gì cung cấp phương pháp tiếp cận thân thiện với nhà phát triển nhất. Những điều tôi đã đi qua là,Cách tốt nhất để thực hiện lập trình async với Asp.Net

NodeJs

SignalR

Using PushStreamContent (Web API) and something like KnockoutJS

Mặc dù SignalR is deemed to make it to asp.net 4.5, tôi thấy rất nhiều sự quan tâm trên NodeJs within MS (Đặc biệt xung quanh Azure). Bất cứ ai có thể làm sáng tỏ một số sự khác biệt (của ít nhất là NodeJs và SignalR)?

Trả lời

15

SignalR là "thư viện phía máy khách và máy chủ cho .NET cung cấp tính năng nhắn tin và trừu tượng qua kết nối liên tục". Điều này không kỳ diệu làm cho mã của bạn không đồng bộ - nó chỉ cho phép máy chủ của bạn gọi cho khách hàng (bao gồm cả JavaScript đang chạy trong trình duyệt của người dùng) một cách không đồng bộ.

Tuy nhiên, C# 5.0 mà đi cùng với .NET 4.5 & Visual Studio 2012 (cũng như trong Mono 2.11+) cho phép bạn viết/sửa đổi mã được async thông qua việc sử dụng các async & await từ khoá mới.

Nếu bạn đã là nhà phát triển .NET, C# async & đang chờ và SignalR rất dễ dàng để chọn, tìm hiểu và chạy, cho phép bạn xây dựng hệ thống hiệu suất cao, có khả năng mở rộng cao.

Node.js cho phép bạn viết mã của mình bằng JavaScript và lưu trữ nó trong máy chủ ứng dụng.

Nút đang nhận được nhiều sự chú ý vào lúc này nhưng nếu bạn đến từ nền phát triển .NET, điều đáng chú ý là một số điều có thể làm bạn ngạc nhiên khi chuyển sang JavaScript trên máy chủ:

  1. JavaScript là một ngôn ngữ động rất mạnh mẽ và cực kỳ linh hoạt. Tuy nhiên, sự linh hoạt này có thể rất nguy hiểm và có vấn đề cho đến khi bạn đã học được nhiều sai sót của nó và cách khắc phục chúng. Nếu bạn PHẢI thực thi mã JavaScript, hãy xem xét viết nguồn của bạn bằng các ngôn ngữ như TypeScriptCoffeeScript để biên dịch thành JavaScript nhưng cách ly bạn khỏi rất nhiều mối nguy hiểm của JavaScript.

  2. Khi nút cung cấp khả năng gửi không đồng bộ tuyệt vời, hiệu suất thực thi mã của nó có thể chậm hơn so với thực thi C#. Nếu mã của bạn ít/không xử lý dữ liệu, bạn có thể không nhận thấy vấn đề này. Tuy nhiên, nếu mã của bạn thực hiện một số lượng xử lý dữ liệu/tính toán/phân tích/v.v. hợp lý, bạn có thể thấy hiệu suất JavaScript của nút không thể chấp nhận được.

  3. Nút là đơn luồng! Nếu mã của bạn phải thực hiện một số xử lý nặng, ví dụ, thực hiện một phép tính phức tạp trên một lượng lớn dữ liệu, nó sẽ ngăn chặn một cá thể nút duy nhất phục vụ các yêu cầu đến khác cho đến khi mỗi thao tác xử lý hoàn tất. Vì vậy, bạn sẽ cần phải có kế hoạch cho phép node clustering (hiện một tính năng thử nghiệm) hoặc, nếu bạn lưu trữ nút trên Windows, sử dụng IIS & IISNode] 4 mà xử lý quản lý dụ nút sử dụng (tuyệt vời) IIS & của Windows cơ sở hạ tầng Process Activation.

  4. So với thông thường.Kinh nghiệm gỡ lỗi của nhà phát triển NET, gỡ lỗi mã chạy dưới nút là một quá trình chậm và rườm rà ngay bây giờ. Để làm như vậy yêu cầu bạn sử dụng trình kiểm tra nút và trình duyệt web Chrome để gỡ lỗi mã, nhưng trải nghiệm kém: Các điểm ngắt không được bảo toàn trên các lần chạy; các điểm ngắt có điều kiện không được hỗ trợ; ngăn xếp cuộc gọi được hiển thị là nông; v.v.

+1

Danh sách thập phân, nhưng có một số vấn đề rõ ràng. Động cơ javascript V8 nhanh. Nó thực sự rất nhanh. Có một số trường hợp sử dụng mà C# là nhanh hơn, và tin hay không, một số nơi javascript trội (regex). Bất kể, không ai trong số này có thể là một vấn đề một cách này hay cách khác trong một ứng dụng web như thực thi mã cho khá nhiều bất kỳ ngôn ngữ những ngày này là * đủ nhanh *. Vấn đề khác là nói về javascript đang hoạt động. Trong khi đó là sự thật, bạn cũng tốt hơn là viết mã một cách chức năng trong C# quá nếu bạn đang sử dụng SignalR một Async. –

+0

Và có, tôi đồng ý ... các công cụ javascript hút ngay bây giờ, đặc biệt là khi bạn đang sử dụng Visual Studio. –

+0

Tôi sẽ gắn với SignalR. Tuy nhiên, phải thử nút đôi khi. Tkx cho câu trả lời chi tiết! – Illuminati

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