2010-06-19 39 views
5

Tôi đang phát triển một máy chủ nhỏ được cho là giao diện qua http. Vì tôi muốn nó có thể sử dụng được với các máy chủ http trưởng thành khác nhau, tôi đã chọn FastCGI làm giao diện chung.Có thư viện .NET FastCGI không?

Bây giờ tôi không thể tìm thấy thư viện .NET (miễn phí) triển khai giao diện FCGI và thực hiện tất cả công việc khó khăn cho tôi. Bạn có biết một?

Trả lời

2

Không phải là tôi biết (tôi cũng đang tìm)

Một trong những khó khăn nằm trong thực tế là FastCGI dường như đòi hỏi rằng bạn vượt qua một tay cầm vào một ổ cắm để nghe một quá trình con ở vị trí của bình thường StdIn xử lý - một cái gì đó mà các lớp tiêu chuẩn. Net (Process, Socket vv ...) không cho phép. Điều này có nghĩa là thực hiện một thư viện FastCGI trong .Net cuối cùng yêu cầu thực hiện lại các lớp Process và Socket bằng cách sử dụng P/Invoke các cuộc gọi đến các hàm Windows nguyên gốc.

+0

cảm ơn câu trả lời của bạn. Tôi vẫn đang tìm kiếm một thư viện như vậy. tôi đã không nhận thức được những khó khăn, sau đó có thể nó sẽ được dễ dàng hơn để tạo ra một wrapper bản địa xung quanh thư viện c và proxy các yêu cầu đến máy chủ quản lý của tôi? – Milan

+0

@ entity64 Điều đó nghe có vẻ giống như một ý tưởng hay - thay thế sẽ là thực hiện lại nó bằng ngôn ngữ .Net. – Justin

+0

Tôi không hiểu điểm thứ hai của bạn. Từ sự hiểu biết của tôi có máy chủ web đó là khách hàng đến một quá trình fastcgi (máy chủ) để chuyển tiếp các yêu cầu. Quá trình đó có thể là chính máy khách cho một quy trình máy chủ khác. Theo hiểu biết của tôi, không cần phải chuyển quyền sở hữu ổ cắm để xử lý giao diện webserver/fastcgi. – schoetbi

2

Gần đây tôi đã thực hiện như một thư viện trong F #: SharpCGI

Cũng hoàn toàn có thể sử dụng từ C#.

Sự cố Mô tả Kragen được giải quyết với một số tin tặc Win32, khai thác nội bộ .NET. Tuy nhiên, bạn không phải sử dụng điều đó nếu bạn định cấu hình máy chủ web của mình để sử dụng cổng được chỉ định cho FastCGI.

+1

SharpCgi có chạy trên Mono hay không và vấn đề mà Kragen mô tả ảnh hưởng như thế nào đến thiết lập SharpCgi trên Mono? – ssn

1

Có, có rất nhiều libaries như SharpCGI và FCGIDotNet, nhưng tất cả đều thực hiện phía máy chủ của giao thức. Tôi vẫn cần phải tìm mã để nói chuyện với một máy chủ FastCGI hiện có, nó hoàn toàn trái ngược với những gì tất cả các thư viện này làm (mặc dù mã cho nó là cho 90% như nhau).

+0

hãy xem nginx;) –

+0

@Quandary Thats không được viết bằng C# – Muis

2

Tôi đã đến đây sau tất cả thời gian này để nói rằng tôi đã tạo một thư viện FastCGI được viết bằng C# có thể hữu ích cho người đọc trong tương lai. Nó không phải là tài liệu rất nhiều (FastCgi là một tiêu chuẩn khá đơn giản, vì vậy tôi không thấy lý do tại sao nó sẽ được), nhưng tôi nghĩ rằng nó là tài liệu cũng đủ để được sử dụng bởi những người khác.
Hiện tại, nó hiển thị API cho cả máy chủ ứng dụng đối với máy chủ web, mặc dù một số tính năng có thể vẫn bị thiếu. Bạn vẫn nên kiểm tra xem nó ra.
Tôi chưa chạm vào nó nhiều thời gian gần đây nhưng nó hoạt động thực sự tốt cho tôi (tôi vẫn sử dụng nó).

Bạn có thể tải xuống thông qua NuGet hoặc tại GitHub của tôi. Nó được gọi là FastCgiNet.

2

Xem Mono.WebServer.FastCGI tại
https://github.com/mono/xsp/tree/master/src

Ngoài ra còn có một FastCGI KHÁCH HÀNG đây:
http://sourceforge.net/projects/fcgidotnet/

Và đặc tả FastCGI là ở đây:
http://www.fastcgi.com/devkit/doc/fcgi-spec.html

Bạn có thể tìm thấy một OWIN thực hiện phù hợp ở đây:
https://github.com/mzabani/Fos

Bên cạnh đó, các thư viện này cũng là thú vị:


HyperFastCGI:
https://github.com/xplicit/HyperFastCgi

hoặc
https://github.com/gigi81/sharpfastcgi

hoặC#cgi
https://github.com/wmeyer/SharpCGI

Nếu bạn cần thêm ví dụ về FastCGI CLIEN Ts, bạn có thể xem thư viện này đi

https://github.com/tomasen/fcgi_client