【问题标题】:C# CGI executables - good or bad idea?C# CGI 可执行文件 - 好主意还是坏主意?
【发布时间】:2011-05-04 00:31:58
【问题描述】:

我想编写一个 C# 应用程序来处理我的 HTTP(包括 AJAX 请求),而不是走 PHP、PERL 或 ASP 路由,因为我只需要返回一些标准 HTML,尽管很明显,因为我想要 CGI,动态生成.

更新:我不打算编写自己的网络服务器,而是将 exe 托管在 IIS 或 Apache 等网络服务器上。另外我不想学习和使用 ASP(我知道我可以更快地完成它,开发时间,我自己在 C# 中),我只想将 W3C 有效的 html 发送回客户端。

有什么好的理由不这样做吗?

我意识到每次发出 HTTP 请求时,都必须加载并运行 exe - 但是 Perl、ASP 和 PHP 肯定也是如此吗?有没有办法让 exe 继续运行以处理特定页面的所有 HTTP 请求? (虽然感觉我只是在写一个迷你 HTTP 服务器!)

有什么好的教程吗?我读过这个,但有点过时了(2005):http://www.codeproject.com/KB/cs/cgi_csharp.aspx

UPDATE2:我认为无论如何速度都不是问题(运行没有 GUI 的小型 exe 几乎是瞬间完成的),但如果我想真正高效,我可以编写 C# 服务器然后非静态页面请求可以有一个用 C 编写的小型 exe,它将请求发送到 C# 服务器并返回回复。我不能吗? :)

【问题讨论】:

  • 您为什么选择这样做而不是在网络服务器中运行您的 C#?教程过时的原因是概念已经过时了。
  • 这不是 ASP.net 的用途吗?
  • @spender 我说的是在网络服务器中运行它 - 具体来说是 IIS,但任何一个都适用..
  • @Mrk Mnl - 我认为,特别是使用 MVC 框架,您可以生成非常干净的 HTML。我认为你在某种程度上重新发明了轮子,但这是你的轮子......
  • 它只是简单的 HTML(所以它不难维护)为什么我需要巨大的框架是 ASP。我也喜欢没有其他所有东西的细粒度控制,我觉得自己做也很有趣。

标签: c# http xmlhttprequest webserver


【解决方案1】:

有诸如FastCGI 之类的解决方案可以消除每次您想要处理请求时启动可执行文件的开销。很少有人仍然使用传统的 CGI。不知道有没有兼容.net的解决方案。

.NET 有一个更好的选择,System.Web.IHttpHandler 类。

你所要做的就是继承IHttpHandler,并重载1个方法来处理一个请求。在我看来,它是更简单的 CGI。

MSDN Site 上有一个很好的例子。

【讨论】:

  • 是的,似乎不支持带有 FastCGI 的 .Net - 但如果速度是个问题,我可以拥有自己的 C# 守护程序,然后有一个小型 exe 编写的 C 来处理页面请求并传递它到服务上......或者我想知道是否可以将 IIS 请求发送到我的守护进程......?
  • 不确定如何使用:System.Web.IHttpHandler,因为它似乎对编写 HTTP 标头和 c 很有用。如果我正在编写自己的 HTTP 服务器——但我不想那样做——我想这将比人们立即想到的要多得多。如果我想缩放等。
  • @Mrk Mnl,我认为您应该停止尝试解决您没有的问题。我认为 IHttpHandler 不会遇到任何可伸缩性问题。
  • 只是为了澄清一下,您是否建议我用它编写自己的 HTTP 服务器?
【解决方案2】:

如果 IIS 真的不适合你,我建议使用 HttpListener API 来处理这种事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2010-11-23
    • 2011-10-26
    • 1970-01-01
    • 2019-11-11
    • 2011-03-06
    • 2015-07-20
    相关资源
    最近更新 更多