2010-06-19 66 views
5

我正在開發一個應該通過http接口的小型服務器。因爲我希望它可以與不同的成熟http服務器一起使用,所以我選擇了FastCGI作爲通用接口。有沒有.NET FastCGI庫?

現在我找不到一個實現FCGI接口的免費.NET庫,併爲我完成所有艱苦的工作。你知道嗎?

回答

2

這並不是說我知道(我也期待)

的困難之一在於,FastCGI的似乎需要您傳遞的句柄監聽套接字連接到子進程中發生的事實正常的StdIn句柄 - 標準.Net類(Process,Socket等)不允許的東西。這意味着在.Net中實現FastCGI庫最終需要使用對本機Windows函數的P/Invoke調用重新實現Process和Socket類。

+0

感謝您的回覆。我仍然在尋找這樣的圖書館。我沒有意識到這些困難,那麼在c庫上創建一個本地包裝並將請求代理到我的託管服務器會更容易? – Milan 2010-07-26 09:12:21

+0

@ entity64這聽起來像個好主意 - 替代方案是用.Net語言重新實現它。 – Justin 2010-12-14 05:08:53

+0

我不明白你的第二點。根據我的理解,有一個作爲客戶端的服務器的fastcgi進程轉發請求。該進程本身可能是另一個服務器進程的客戶端。根據我的理解,不需要轉移處理webserver/fastcgi接口的套接字的所有權。 – schoetbi 2013-11-04 09:17:45

2

我最近實施的F#這樣的庫:SharpCGI

另外,從C#完全可用。

Kragen描述的問題是用一些Win32 hackery解決的,它利用了.NET的內部機制。但是,如果將Web服務器配置爲使用FastCGI的指定端口,則不必使用該端口。

+1

SharpCgi是否在Mono上運行,Kragen描述的問題如何影響Mono上的SharpCgi設置? – ssn 2011-11-07 08:13:17

1

是的,有許多像夏普CGI和FCGIDotNet庫,但他們都實現協議的服務器端。我仍然需要找到代碼來與現有的FastCGI服務器交談,這與所有這些庫所做的事情完全相反(所有這些代碼都是90%的代碼)。

+0

看看nginx;) – 2013-06-07 15:45:44

+0

@Quandary那不是用C#編寫的 – Muis 2013-06-07 15:57:53

2

我一直都來這裏說我創建了一個用C#編寫的FastCGI庫,可能對未來的讀者有用。它沒有大量的文檔記錄(FastCgi是一個非常簡單的標準,所以我不明白爲什麼會這樣),但我認爲它被證明足以供其他人使用。
目前,它爲應用程序服務器提供了一個API,就像Web服務器一樣,儘管某些功能可能仍然會丟失。你應該仍然檢查出來。
我最近沒有碰過它,但它確實對我很好(我仍然使用它)。

您可以通過NuGet或我的GitHub下載。它被稱爲FastCgiNet

2

請參閱Mono.WebServer。FastCGI的在
https://github.com/mono/xsp/tree/master/src

還有一個FastCGI的CLIENT這裏:
http://sourceforge.net/projects/fcgidotnet/

而且FastCGI的規範是在這裏:
http://www.fastcgi.com/devkit/doc/fcgi-spec.html

你可以找到一個OWIN兼容的實現在這裏:
https://github.com/mzabani/Fos

此外,這些庫也很有趣:


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


https://github.com/gigi81/sharpfastcgi

或#cgi
https://github.com/wmeyer/SharpCGI

如果你需要更多的FastCGI實例CLIEN Ts,你可以看看這個去圖書館

https://github.com/tomasen/fcgi_client