1

我不太确定如何表达这个问题。

我想做的是在 C# 中创建一个简单的服务器类型应用程序,它只是侦听传入的套接字连接并按照我指定的方式处理它们。它可以是一个聊天应用程序或类似的东西,非常简单。

我查看了示例: http: //msdn.microsoft.com/en-us/library/fx6588te.aspx关于异步套接字。

我理解示例中的代码,但我不确定代码将如何执行。具体来说,示例中应用程序的入口点是什么?服务器如何知道启动它?

我对 IIS 的唯一体验是使用 C# 代码隐藏的 Web 表单。我知道当 url 指向该位置然后再次在回发等时执行 web 表单的代码。

当我不想使用 Web 表单而只想使用具有单个入口点的 C# 类文件的集合时(类似于 java 应用程序),这对我来说变得模糊不清。

为清楚起见进行编辑:

我想要做的目标是创建一个应用程序,我可以将它放在我的网络主机上,它将不断接受来自客户端应用程序的请求并按照我指定的方式处理它们,然后将信息返回给客户端。我只是不确定如何告诉服务器启动应用程序,因为我只知道 Web 表单。
此外,如果我最初需要将浏览器定向到 Web 表单,然后按下按钮启动应用程序,那也很好。事实上,如果我可以随意启动和停止应用程序,那就太理想了。另外,我可能使用了不正确的术语。我认为 IIS 服务器就是你所说的可以运行 asp.net 应用程序的服务器。我可能对此非常错误。

谢谢。

4

3 回答 3

2

您不能使用 IIS 来启动 Windows 应用程序,您需要一个持续侦听指定端口的 Windows 服务应用程序,并且该 Windows 服务应用程序需要安排在系统启动时或您选择的任何事件时启动。并且只要您希望应用程序正常运行,Windows 服务应用程序就需要保留在内存中。

PS:您的问题严重需要一些编辑,但我也是SO新手,所以我会让可敬的高级用户做他们最擅长的事情。

编辑:如果您想使用 IIS 模拟 Windows 服务,那么这里是您最接近的选择,请按照链接了解您需要了解的内容。

使用 ASP.NET 应用程序模拟 Windows 服务

强制你的应用程序保持活跃

这两个链接将帮助您保持应用程序和 bamm 的活力,您可以创建任意数量的类(如您所引用的 Java 样式)来执行您希望它执行的任何任务

于 2013-03-11T17:55:13.617 回答
2

在我看来,您根本不想使用 IIS。IIS 为您处理监听,是管理请求的“服务”。如果您希望手动侦听传入连接,那么您将需要以下组件:

  1. 运行的 Windows 服务具有..

  2. 内置的 http 侦听器。

查看 C# HttpListener 类并查看构建可在服务器后台运行的窗口服务的过程。

这并不是那么困难,但我不太确定这是你需要的。如果您不想使用 Web 表单,您可以拥有一个 Web 应用程序,将请求直接解析到自定义处理程序,我认为这是您真正想要的,并且让您自己的侦听器变得多余。

编辑:有关自定义处理程序的附加信息

以下是自定义处理程序是什么以及如何使用它的开始:http: //support.microsoft.com/kb/308001

我还会看一些来自 .net 的关于 MVC3 的初学者文章。MVC 是一个框架,它没有 webforms 所具有的任何绒毛(例如视图状态),它允许您将 URL(请求)路由到控制器(类)并返回几乎任何您想要的东西。使用 MVC 有很多优点,如果您来自 java/纯 http 背景,它会比 webforms 更有意义。

您可以通过搜索“.net MVC3 入门”开始使用它,甚至可以从 www.asp.net 开始获取初学者资源。

于 2013-03-11T17:56:07.493 回答
0

除非您的目标是学习低级 TCP 通信、编写和配置服务、处理代码更改、编写自己的序列化/请求解析而不是坚持使用 IIS 和 HTTP,否则可能更容易。

There is no need to use WebForms - WebService (ASP.Net or even WCF) or MVC Web API will give you ability to implement methods you want without need to write your own custom serialization and request parsing infrastructure. You can even do long poll if/when needed (i.e. SignalR).

I'd start with basic MVC application reporting JSON results as server side as it will still show all issues involved with writing chat client (persistence, discovery of other clients, quick status updates) while allowing you to focus on communication itself (including easily see all traffic if need).

于 2013-03-11T18:38:24.307 回答