2009-08-13 25 views
7

Có thực tế khi sử dụng C# .Net lớp HttpListener làm nền tảng cho một máy chủ web tầm cỡ sản xuất?Sử dụng HttpListener cho một máy chủ web tầm cỡ sản xuất?

Dịch vụ web http mà tôi cần lưu trữ không chứa tệp .aspx hoặc tệp tĩnh. Tất cả các câu trả lời http là động và được tạo bằng mã C# được gọi thông qua một vài câu lệnh chuyển đổi kiểm tra định dạng url an toàn.

Suy nghĩ của tôi là IIS thực sự là một trình bao bọc chế độ người dùng xung quanh mô-đun hạt nhân HTTP-SYS của Windows o, thực hiện tất cả các thao tác xử lý mạng hạng nặng và do đó là HttpListener.

Tôi đã có một máy chủ web đa luồng cơ bản chạy tuyệt vời để phát triển vì nó bắt đầu trong chế độ gỡ lỗi trong một cá thể, bây giờ tôi đang nghĩ mình cần quá mức của IIS cho sản xuất. Một dấu chân bộ nhớ thấp là một điểm thu hút khác.

+2

BTW, đó là lớp .NET 'HttpListener', không phải là" Lớp C# .NET 'HttpListener'". Mọi thứ trong .NET đều có thể được sử dụng bởi mọi ngôn ngữ, không chỉ C#. –

+1

@ John Saunders - Tôi đã cố gắng để làm cho nó rõ ràng câu hỏi của tôi không phải là về một lớp Java cùng tên, rõ ràng là tôi đã cố gắng quá khó. –

+1

Tôi sẽ không sử dụng HttpListener, nó không phải là trình bao bọc lớn nhất cho httpapi.dll, bạn có thể viết wrapper của riêng bạn, hoặc nếu bạn thực sự điên, bạn có thể xây dựng một từ TcpListener .. someones đã làm việc trên đó: http: // webserver.codeplex.com – meandmycode

Trả lời

6

Bạn có hai lựa chọn nghiêm trọng ở đây. Và không, mã hóa Máy chủ Web của riêng bạn với HttpListener không phải là cấp sản xuất.

1) Sử dụng IIS. Nó có rất nhiều tính năng về bảo mật, hiệu suất và có lẽ quan trọng hơn, quản lý , rằng bạn sẽ phải tự tạo lại chính mình. Giống như quản trị từ xa, ghi nhật ký, tích hợp Bảo mật Windows, v.v.

2) Sử dụng WCF và tạo ServiceHost để lưu trữ tệp của bạn. Sau đó, bạn sẽ phải thực hiện các dịch vụ của riêng bạn và tìm cách quản lý thời gian sống của họ. Bạn có thể làm điều đó, nhưng một lần nữa, nếu bạn đang nói các cuộc gọi web RESTFul, IIS thực sự là con đường để đi.

Nên tự tay lăn của riêng mình. IIS đã thay đổi rất nhiều trong 10 năm qua. Nó không phải là một máy chủ nguyên khối lớn nữa. Họ đã mô đun hóa tất cả mọi thứ, đặc biệt là trong Windows 2008, vì vậy bạn có được một hệ thống gọn gàng và nhanh chóng.

+0

@Dave Markle - Cảm ơn tôi cần phải đọc về các cải tiến IIS, kiến ​​thức của tôi bị trì hoãn ở Windows 2003. Lean và nhanh chóng là những gì tôi cần. –

+6

@Dave Markle - Không có quản trị viên từ xa = lỗ hổng bảo mật ít cấu hình tốt. Không đăng nhập = không có vấn đề, với các dịch vụ web động nhiều tính chất của yêu cầu được chôn cất trong dữ liệu bài đăng để các bản ghi không lộ nhiều cho chẩn đoán. Không có bảo mật tích hợp = tốt, không cần nó để một điều ít hơn để cấu hình sai. –

+1

Bạn đang đánh giá theo các tiêu chuẩn của Windows Server 2003. 2008-2003 = 5 năm khác biệt. Việc ghi nhật ký tốt hơn nhiều, không chỉ giới hạn ở một lớp lót trong nhật ký IIS, và bao gồm việc ghi nhật ký yêu cầu thất bại chi tiết. –

2

Nếu bạn viết, bạn sẽ phải duy trì nó. Microsoft đã viết một máy chủ web - bạn nên sử dụng nó.

+1

Mức tiêu thụ bộ nhớ là một lý do chính đáng để không sử dụng IIS. Thời gian qua tôi đã sử dụng nó trong sự tức giận, chúng tôi đã phải kích hoạt 3GB chuyển đổi để cung cấp cho bộ nhớ IIS hơn khoảng trống trên 1.7Gb. Làm toán cho lưu trữ trên nền tảng đám mây và bạn sẽ thấy vấn đề $$$. –

+0

Tôi đề nghị bạn thử IIS 7 và xem đây có phải là vấn đề không. Nó cũng có thể là do các ứng dụng cụ thể, và không phải để IIS. –

+1

@JS "Tôi đề nghị bạn thử IIS 7 và xem đây có phải là vấn đề hay không". Ok sẽ làm, tôi đang trên BizSpark bây giờ vì vậy tôi có thể cháy lên một số công cụ kiểm tra MS cho một bài kiểm tra bộ nhớ ngâm. Một lưu ý, nền tảng đám mây Amazon bị kẹt trên Windows 2003 trong thời điểm này ... ho hmm. –

6

Vâng, như đã nói - hãy thử sử dụng IIS lúc đầu.

HttpListener không tệ chút nào - đó là máy chủ lắng nghe được quản lý nhanh nhất mà bạn có thể có ngay bây giờ (nhanh hơn TcpListener và nhanh hơn lớp Socket). Và nó thực sự là cốt lõi giống như với IIS. Nhưng IIS có nhiều thứ hơn.

Tôi không thể nói IIS là nguyên khối - lưu trữ sử dụng cho thấy rằng nó trở nên tồi tệ hơn trong Win2008 về tính ổn định và quản lý. Nhưng giải pháp làm bằng tay của bạn có thể tồi tệ hơn nhiều. Và cũng đừng quên - http.sys có thể tùy chỉnh nhiều hơn HttpListener. I E. bạn không thể thực hiện việc đó với http.sys - Question about HttpListener streaming

Nhưng nếu bạn có đủ sức mạnh làm nhà phát triển - bạn có thể thử viết lên trình bao bọc http.sys của riêng mình và tốt nhất cách tiếp cận bằng cách viết máy chủ web riêng trong Windows.

+0

Bạn có URL chi tiết cách Win2008 bị từ chối trong sự ổn định và quản lý không? –

3

Rác, cuộn của riêng bạn. Kiến trúc cho phép nó. Hãy nhận biết mặc dù có một số hành vi lạ trong lớp. Đóng cửa nó xuống một vài lần trong một dịch vụ NT làm cho nó flakey như một túi bánh ngọt phun.

Nếu bạn chạy nó trên Bảng điều khiển, không có vấn đề gì, hãy chạy nó không đồng bộ và tất cả sẽ tốt, tuy nhiên, bắt đầu và dừng điều darn. thats một vấn đề khác nhau mà tôi hiện đang đấu tranh với như không có lỗi đang được sản xuất từ ​​các lớp học kín Microsoft niêm phong.

Tôi cảm thấy python đang đến với một chút dấu gạch ngang của cherryPy

+5

-1: không nhiều câu trả lời như một câu trả lời. –

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