【发布时间】:2011-11-16 22:32:49
【问题描述】:
背景
我有一个用 C# 编写的 Windows 控制台应用程序,它需要 UI。我开始使用 WPF,但由于我来自 web 背景,我想使用 html 和 html5 的一些功能,包括用于与另一个应用程序实时通信的 web 套接字。 最初,我将使用 Web 浏览器作为 UI,但稍后我可能会在主应用程序中托管 Web 浏览器。这一点我暂时不关心。
经过大量的谷歌搜索/阅读后,我正在兜圈子。看起来 WCF 可用于提供 html、基于 json 的 Web 服务以及可能的 Web 套接字流。 很多谷歌搜索的信息都与 .NET 4.0 之前的社区项目有关。即使在 4.0 之后,也有几个 NuGet 包在我看来与框架中已有的内容重叠。对于 WCF 菜鸟来说,这完全是一个雷区。
那么,我应该将精力集中在 .NET 4.0 WCF 的哪些领域以及各种开源项目上。
要求
我需要一个轻量级的自托管网络服务器。它不能基于 IIS,因为用户不会安装它。服务器(或服务器)必须:
- 能够提供完整的网页,包括 html、链接图像、css 和 js 文件。 C# MiniHttpd 做得很好,但不是基于 http.sys。 HttpListener 似乎是我想要的核心,但是我还没有找到一个完整的基于它的web服务器项目。
- [可选] 能够通过 asp.net 或 razor 解析这些页面
- 能够通过 json 响应 web 服务调用。这一点我有一个使用 System.ServiceModel 的工作示例。这是正确的方法吗?
- 能够使用新兴的 Web Sockets 标准。 SuperWebSocket 正在积极开发中,但似乎不是基于 http.sys 或 wcf。
偏好
- 我更愿意坚持使用一个基本堆栈来满足我的所有 3 个主要要求 - 我怀疑 WCF 可能就是那个平台。
- 我更喜欢基于 http.sys 的方法来满足所有三个要求,因此我可以保留相关的 url/port/namespace 组合并防止与其他 Web 服务器或服务发生冲突
虽然其他 SO 问题可能对我的要求的各个方面有所帮助,但我需要有关更全面方法的建议。
【问题讨论】: