ASP.NET和IIS需要什么?

时间:2015-02-27 17:15:12

标签: asp.net .net iis

我是C#/ .NET的新手

  1. 为什么ASP.NET有这么多不同的项目选择? (Web应用程序,Web API,Web站点,MVC等)。我只是想听一个tcp端口,以及一种发送响应的方法。如果有库可以帮助我做常规的事情,比如构建HTTP请求,解析标题等等 - 那么很酷。但我不想要一个试图在阳光下做所有事情的超级自以为是的框架。
  2. 为什么我需要IIS?

3 个答案:

答案 0 :(得分:1)

  

为什么ASP.NET有这么多不同的项目选择? (Web应用程序,Web API,Web站点,MVC等)。我只是想听一个tcp端口,以及一种发送响应的方法。等...

因为每个项目都有自己的目的。 如果你想只是在TCP端口上听,那么你可以去学习微软 Katana OWIN (但我很怀疑这是否是你想要的)。 Katana OWIN

简要介绍每个项目目的:

  1. "网络应用程序" 实际上打开了另一个窗口,您可以从以下选项中进行选择:
  2. Web API 用于公开RESTful服务或JSON数据。
  3. Web表单用于制作使用Web表单组件的网页。 (有点像Windows Forms,但Web)
  4. MVC 用于制作模型 - 视图 - 控制器Web应用程序。这是您构建具有分离关注点的组件的地方。数据模型。查看用户看到的内容。用于控制页面行为的控制器。
  5.   

    为什么我需要IIS?

    IIS 用于提供.NET应用程序。 没有它,服务.NET应用程序将非常困难。

答案 1 :(得分:1)

我将从 2 开始,然后转到第一个问题。 IIS将运行您需要的任何.NET Web服务,无论是怪异的WCF服务,ASP.NET应用程序还是最基本的http处理程序。

据我所知,ISS是使用.NET Web服务最直接的方式。如果您习惯使用PHP,它基本上是LAMP或WAMP for .NET,这意味着它是必要的。 Mike Goodwin指出,还有其他选择,但我不得不承认我对这些第三方并不熟悉。因为将一层替换为另一层并不意味着什么,我会坚持"正常"过程

由于您不希望框架为您执行大量操作,您最好的选择可能就是这样:

  1. 创建基本的ASP.NET项目
  2. 删除默认的ASP.Net页面,因为它似乎你不想要它
  3. Generic Handler 添加到您的项目中。这将导致myFile.ashx,它处理http请求并允许您构建任何您想要的响应
  4. 当然,如果您不想打扰IIS配置,您需要有人在IIS上设置URL并将其映射到您的处理程序存储库。


    修改: "抽象层"这将是框架的定义,无论好坏,所以你一直坚持它。

    现在,既然你有一个低级别的背景,那么使用.NET Web服务的不那么干扰的方式可能就是我之前建议的三个步骤。尽管如此,您仍然坚持使用IIS,以便处理通信(即管理套接字/请求)。这就是框架的运作方式。

    仍然有希望。如果您完全控制您的服务器(我的情况,其他一些IT团队管理Web服务器),您当然可以构建一个监听某个套接字并相应地处理请求的Windows服务。如果您想要提供网页,这是一个最不寻常的解决方案,但如果您只想通过http请求推送一些数据,那么它会运行得相当好。如果你沿着这条路走下去,我建议你看一下System.Net命名空间,你会发现一些像" Socket"那里。结合控制台应用程序或Windows服务,您可以解决一些问题。

    我的一位同事是前微控制器设计师,我确切地知道你对.NET框架有什么样的感觉。你有时会经历一些挫折,但大多数时候都有工作。如果您需要,请随时索取更多详细信息。

答案 2 :(得分:1)

首先以相反的顺序处理您的积分,首先 - 为什么我需要IIS?

答案是,也许你没有。如果您正在做一个不会暴露给公共互联网的简单监听器,那么您就不需要它了。

如果您正在进行需要扩展的Web应用程序,那么它应该可靠且易于管理,它可以帮助您:

  • 登录
  • 在多服务器环境中运行以实现扩展/高可用性
  • 以孤立的方式处理多个请求
  • 使用沙盒为同一主机提供多个应用程序,以确保每个应用程序都有保证的资源(内存,CPU)
  • 应用程序生命周期管理
  • IP地址限制
  • 支持FTP,CGI,WebDAV
  • 网址重写
  • 响应标头操作
  • 请求跟踪失败
  • 防止一些DoS攻击,如慢速HTTP攻击

简而言之,它是一个工业实力,真实世界的Web服务器,可以使您的应用程序在恶意的世界中可靠地运行,并随着应用程序的增长而扩展。如果您不需要这种规模/高可用性/管理功能,对某些情况来说肯定是过度的。在这些情况下,您可以选择在Windows服务甚至控制台应用程序中自行托管ASP.Net。这可能听起来很复杂,但OWIN - .Net的开放Web界面已经变得非常简单。这是Asp.Net用于与其托管服务器通信的接口的抽象。

这里有一个关于如何在控制台应用程序中自我托管Web API的非常好的教程

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

它完全符合您的评论要求:

  • 您创建一个控制台应用项目
  • 您添加对正确程序集的引用(本教程使用NuGet下载程序集包)
  • 您编写了Web操作逻辑
  • 您编译
  • 您运行生成的exe
  • 就是这样!

关于ASP.Net的第二点 - 它是一个经历了大量演变的框架,试图跟上Web开发世界的快速变化。这意味着它有点臃肿并失去了一些连贯性,但最近开发人员一直致力于使其更轻巧,更模块化和更简单。 Scott Guthrie在他的博客中总结了这一点:

http://weblogs.asp.net/scottgu/introducing-asp-net-5