【发布时间】:2010-06-19 14:43:01
【问题描述】:
我正在开发一个应该通过 http 进行接口的小型服务器。由于我希望它可以与不同成熟的 http 服务器一起使用,所以我选择了 FastCGI 作为通用接口。
现在我找不到实现 FCGI 接口并为我完成所有艰苦工作的(免费).NET 库。你认识一个吗?
【问题讨论】:
我正在开发一个应该通过 http 进行接口的小型服务器。由于我希望它可以与不同成熟的 http 服务器一起使用,所以我选择了 FastCGI 作为通用接口。
现在我找不到实现 FCGI 接口并为我完成所有艰苦工作的(免费).NET 库。你认识一个吗?
【问题讨论】:
在
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 CLIENTs 的例子,你可以看看这个 go library
【讨论】:
是的,有很多库,如 SharpCGI 和 FCGIDotNet,但它们都实现了协议的服务器端。我仍然需要找到与现有 FastCGI 服务器通信的代码,这与所有这些库所做的正好相反(尽管它的代码 90% 相同)。
【讨论】:
我不知道(我也在寻找)
其中一个困难在于,FastCGI 似乎要求您将一个侦听器套接字的句柄传递给一个子进程,而不是普通的 StdIn 句柄——标准 .Net 类(进程、套接字等)的东西。 ..) 不允许。这意味着在 .Net 中实现 FastCGI 库最终需要使用对原生 Windows 函数的 P/Invoke 调用重新实现 Process 和 Socket 类。
【讨论】:
我最近在 F# 中实现了这样一个库:SharpCGI
也完全可以在 C# 中使用。
Kragen 描述的问题通过一些 Win32 黑客技术解决,利用 .NET 内部结构。但是,如果您将 Web 服务器配置为使用 FastCGI 的指定端口,则不必使用它。
【讨论】:
我来这里是为了说我创建了一个用 C# 编写的 FastCGI 库,它可能对未来的读者有用。它没有大量文档(FastCgi 是一个非常简单的标准,所以我不明白为什么会这样),但我认为它的文档足够好,可以被其他人使用。
目前,它为应用程序服务器和 Web 服务器都公开了一个 API,尽管可能仍然缺少一些功能。您仍然应该检查一下。
我最近没怎么接触过它,但它对我来说确实很好用(我仍在使用它)。
您可以通过 NuGet 或我的GitHub 下载它。它被称为 FastCgiNet。
【讨论】: