繁体   English   中英

ASP.NET Web 服务应用 vs ASP.NET ZC6E190B284633C48E39E55049DA3CCE8

[英]ASP.NET Web Service Application vs ASP.NET Web Service

我是 .NET 的新手。 今天学习Web服务。 我找到了两种创建 web 服务的方法。

第一个是- 右键单击解决方案 << 添加新项目 << ASP.NET Web 服务应用程序

第二个是-右键单击解决方案<<添加新的Web站点<< ASP.NET Web服务

它们之间有什么区别?

Web 服务应用程序将您的所有代码预编译成一个单独的.dll,该文件将被放置在 bin 中。 所以如果你有几个 web 服务文件和代码,它们都将被编译成一个通用的 dll。 每次调用任何服务时都会加载此库。

web 服务网站将代码文件保存在 App_Code 目录中,每个服务都将自己的代码编译到临时 Asp.Net 文件夹中自己的独立库中。 这允许将每个库独立加载到 memory 中。

他们都有自己的优点和缺点。 单个库比网站 model 更容易移动/更新,但网站 model 允许隔离 memory 的使用,从而防止一个服务中的问题影响单独的服务。

编辑:

我所说的 memory 使用隔离的意思是 each.dll 的加载取决于完成交易所需的流程。 控制线程的 w3wp.exe 进程将在必要时假脱机处理 individual.dll 以完成请求/响应。 在应用程序中,这些.dll 永远不会改变。 无论是否需要,它们都加载了该过程。 在网站中,每个页面或服务都被编译为一个单独的库。 因此,如果 w3wp.exe 需要加载App_Code/MyService_as33fweqs.dll (已编译 dll 的动态生成的临时名称)来完成任务,它会更小并且可能更快,因为它只携带它需要的东西。 这允许 w3wp.exe 独立生成不同复杂度/内存需求的线程。

你不应该使用其中任何一个。 他们使用传统的“ASMX”技术。 所有新的服务开发都应该在 WCF 中。

使用“WCF 服务应用程序”或“WCF 服务库”,或更具体的版本之一。

我还建议不要使用“新 Web 站点”。 这是微软在试图适应习惯于 PHP 和类似技术的人们的过程中犯的一个错误。 它不同于其他所有类型的 .NET 项目,并且其行为方式是其他人无法预料的。 几乎没有理由将它用于任何重要的事情。

顺便说一句,我认为 web 服务并不重要,因此永远不会为 web 服务使用 web 站点“项目”。

在 ASP.NET 中,术语“应用程序”意味着它是预编译的,而“站点”意味着它不是。 我会选择前者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM