【问题标题】:HttpListener vs HttpHandler dilemmaHttpListener 与 HttpHandler 的困境
【发布时间】:2011-07-26 22:55:46
【问题描述】:

在 Windows 服务中,我实现了一个 HttpListener,它将处理传入特定端口的 HTTP 请求,解析查询字符串,将其插入数据库并发送确认响应。一切正常,我对我的解决方案非常满意。然而,客户表示他们有点怀疑,并询问是否可以通过网页进行同样的操作。就像让 HTTPHandler 监听某个端口一样。让我思考。在我的情况下你会怎么做?

使用 HttpListener/Windows 服务还是 HTTPHandler/.aspx?

非常感谢!

【问题讨论】:

  • 如果没有人会使用带有 Web-UI 的产品,那么绝对绝对没有必要将 ASP.NET 站点暴露给 Web - 服务意味着对可靠性的需求,网页不是那个
  • 是的,这是一个有效的论点,我将在明天的会议上提出这个问题。是否可以通过 Web 服务完成相同的操作?
  • 技术上,是的,当然;但实际上,将它托管在 IIS 中没有任何意义或好处(据我所知),除非它位于随附网站旁边 - 只是系统中某个更明显的位置的一组额外记录。

标签: c# asp.net httphandler httplistener


【解决方案1】:

您有什么理由不想使用网络服务器?我们已经实现了我们自己的 Http 服务服务,因为它们在处理请求的方式上相当不寻常,并且会证明对正常配置的 IIS 实例造成负担。

在您的情况下,情况似乎并非如此,所以是的,我发现自己想知道您为什么也不走网络服务器路线。

编辑

您的应用程序中还有其他面向 Web 的部分吗?如果不是,我同意@Mr Disappoinment 的推理是合理的。你只是暴露了你需要的东西,这比 IIS 实例的攻击面要小得多。

【讨论】:

  • 我实施的 win 服务只是网络电子商店的附属部分,人们可以通过它购买电子报纸订阅。我使用 Windows 服务将我们的数据库与客户的数据库同步。我认为在我们的服务器以及我们客户的服务器(发布者)上安装 Windows 服务是一个可行的选择。当我已经有一个使用线程的工作 Windows 服务时,我看不到使用 Web 服务的好处。我对你的观点很感兴趣,因为你有 15.4k 的声誉 :)
  • 我认为这是一个实现细节。如果解决方案稳健且符合规范,则没有问题。服务器技术人员往往不愿意将软件安装为服务,因为(他们认为)锁定/保护一些专有软件比在 IIS 下运行的软件更难。从开发人员的 POV 来看,更容易限制服务的运行并更严格地控​​制内存。归根结底,如果您已正确交付,如果他们对交付类型提出延迟要求,则可能有机会从交易中榨取更多工作。
【解决方案2】:

我会通过 IIS 使用某些东西,仅仅是因为我认为我的客户的 IT 人员需要一个非常重要的论据才能告诉他们在他们的服务器上安装自定义服务。我对 HttpListener 的线程行为知之甚少(它是否使用线程池?最大线程数?一旦达到最大值就排队?)可以肯定地说,但我想您的客户也有类似的担忧.

【讨论】:

  • 我明白你的意思,但我们的客户只是想知道使用 Windows 服务而不是 .aspx 或 winservice 的好处。对于初学者来说,我对使用 HttpListener 类感到非常自在。顺便说一句,您对使用线程池的 HttpListener 是正确的。这显着降低了处理器的开销。你不觉得吗?感谢您的回复。欣赏它。
  • @joelt 的观点是,IIS 让您可以更好地控制您希望将多少进程和线程专用于 Web 服务、排队请求、回收等。
猜你喜欢
  • 1970-01-01
  • 2014-10-23
  • 2010-10-20
  • 2010-12-30
  • 2011-03-31
  • 2012-08-15
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多