asp.Netmvc与IIS紧密结合



stackoverflow上没有人敢回答这个问题ASP.NET MVC应用程序如何严重依赖System.Web程序集?

一些人评论说,System.web与Asp.Net有关,而不是IIS,那么为什么我们不能在其他web服务器上托管Asp.Net mvc应用程序呢?

好吧,评论中的问题问.net如何依赖IIS?

事实并非如此!IIS依赖于.net,并且部分是使用.net创建的!!

所以.net不依赖IIS,IIS依赖.net运行!

使用Apache还是IBM WebSphere web服务器?他们依赖什么?当然,为什么要使用代码库和语言来构建web服务器。

我的意思是,Excel依赖于哪些语言和库?(答案:Excel是用代码库构建的)。这在Excel或某些web服务器上的工作方式是相同的。

由于IIS是使用大量.net框架构建的,所以这就是它所需要的。

net与IIS之间没有任何关系,相反。

因此,构建web服务器所使用的代码库和系统并不一定意味着构建的网站需要使用这些库。

所有3个web服务器(Apache、IBMWebSphere、IIS)都可以处理基本的HTML站点,并且可以接受标准的web请求。

他们都必须吐出100%的HTML标准页面供任何浏览器使用。

然而,我们混淆了网站服务器系统是用什么构建的,与开发人员用什么构建网站的!!!

事实上,web服务器是用c++编写的,还是由.net或PHP for Apache编写的?

我们不太在乎。

然而,如果我构建了一个使用MySQL的网站,那么很明显,该网站不会在没有oracle数据库系统的托管服务器上工作。

因此,必须选择其中之一:

use the developer tools and support of what the web server has
or
pick your web development tools and FIND a web server system that supports that choice.

除非该web服务器支持使用python或其他浮动的开发语言?那么是的,web服务器必须支持与所讨论的代码系统的交互。但这对所有web服务器都是相同的要求。

因此,网站是用什么构建的,比网络服务器是用什么更重要。

我的意思是,可以用汇编程序、c++或BASIC创建一个100%兼容的web服务器。

具体来说,web服务器支持什么开发周期和系统?在使用.net构建网站的情况下?

没有真正的要求web服务器是用.net框架构建的,但有问题的服务器和网站肯定需要使用.net代码的能力。

当你创建一个.net网站并发布时?所有的.net源代码都编译成了.net.dll。因此,至少,该web服务器必须支持对这些.dll的调用,并且它们需要.net框架。这并不意味着web服务器必须使用.net框架构建,但它确实意味着有问题的服务器必须支持将.net程序集调用为.dll程序集。

此外,所有的web服务器都有相当多的特定系统,安全和身份验证就是这样一个领域。因此,如果开发人员采用特定的安全模型,那么说Apache将支持与IIS相同的安全性和配置是非常有疑问的。

当然,web应用程序的某些部分通常会调用+使用这些web服务器安全功能,甚至与作为web服务器一部分的通用库进行交互。

因此,windows版本的Excel不再在Mac上运行,也不再在Andriod手机上运行任何根据特定标准开发的网站。

但是,在一天结束的时候?

web服务器依赖于.net代码,而不是说.net框架完全依赖于IIS。事实上,情况恰恰相反。

这与建议Excel应该能够读取和使用电源点文件没有太大区别。这里存在差异。

网站开发从不允许任何旧网站被扔到某个网络服务器上,我们可以期待它的运行。

在这方面,如果你要在桌面上使用Excel,你需要安装Excel。网络服务器只是一台计算机,因此你在那台计算机上使用的任何代码和东西都必须安装在这台计算机上并得到支持。

因此,例如,虽然你可以在Linux上运行.net代码,但为IBM的WebSphere、Apache或ISS开发的网站都会有所不同,当然这些网站不会互换或相互兼容,因此windows版本的Excel与Android或Mac版本相同。

事实上,任何桌面软件的工作原理是什么?该软件只能在支持该软件的台式计算机上运行。网络服务器在这方面是完全相同的——它只能运行与给定服务器和设置100%兼容的软件。

总之?这在很大程度上就是所有计算机从PC革命的第一天起的工作方式,我们都是其中的一员。

举一些例子,比如Asp.net框架的这个和那个组件是由IIS的启动的

好吧,加载和调用任何.dll的方式在这里都是一样的。

新的.net核心?所有更新的框架都是一个.net运行时系统,它不依赖于windowsapi和平台。从开发人员的角度来看,使用.net核心还是使用旧的.net框架?您没有注意到区别,但是.net运行时(core)删除了对windows的依赖。

所以就像Java引擎可以在从手机到服务器的任何东西上运行一样?.net核心也是如此。它应该可以在任何电脑上运行,甚至可以在安卓手机上运行。因此,较新的.net内核是一个简单的、经过重新调整的.net运行时系统,它与平台无关。

net框架的整个思想与Java引擎非常相似。他们可以重新构建.net解释器以在任何平台上运行,因此理论上围绕.net构建的代码可以在任何计算机上运行,而不仅仅是windows。当然,.net框架在很大程度上依赖于windows API和平台。经过重新调整的.net核心消除了这些依赖。

因此,从理论上讲,任何使用.net内核编写的软件在理论上都是多平台的,并且相当"简单";OS";中立的当谈到桌面软件时,这在一定程度上是值得怀疑的,但对于基于网络的软件?是的,这个目标很容易实现,因为呈现输出的另一端是基于行业标准(HTML,现在是web组件)的。

"为什么我们不能托管ASP。NET MVC在其他web服务器上";是一个无效的语句,因为在Mono的帮助下,你肯定可以在其他web服务器上运行这样的web应用程序,比如Apache/nginx/Jexus等等

  • 一个开源的System.Web实现
  • FastCGI守护程序与所有兼容的web服务器集成

但是,如果您想托管您的生产web应用程序,与使用相比,这种方法是不现实的。NET Framework/IIS/Windows,因为您需要在Mono问题上支持自己,因为它不如。NET框架(及其System.Web是完整的)。

ASP。NET Core是目前正确的做法。

最新更新