【发布时间】:2011-06-06 12:45:37
【问题描述】:
我是 .NET 的新手。今天我正在学习Web Service。我发现了两种创建 Web 服务的方法。
第一个是 - 右键单击解决方案
第二个是——右键解决方案
它们有什么区别?
【问题讨论】:
标签: asp.net web-services
我是 .NET 的新手。今天我正在学习Web Service。我发现了两种创建 Web 服务的方法。
第一个是 - 右键单击解决方案
第二个是——右键解决方案
它们有什么区别?
【问题讨论】:
标签: asp.net web-services
Web 服务应用程序将您的所有代码预编译成单个 .dll,该 .dll 将放置在 bin 中。因此,如果您有多个 Web 服务文件和代码,它们将被编译成一个通用的 dll。每次调用任何服务时都会加载此库。
Web 服务网站将代码文件保存在 App_Code 目录中,并且每个服务都将自己的代码编译到临时 Asp.Net 文件夹中自己的独立库中。这允许每个库独立加载到内存中。
他们都有自己的优点和缺点。单一库比网站模型更容易移动/更新,但网站模型允许隔离内存使用,防止一个服务中的问题影响另一个服务。
编辑:
我所说的内存使用隔离是指每个 .dll 的加载取决于完成事务所需的进程。控制线程的 w3wp.exe 进程将根据需要处理各个 .dll 以完成请求/响应。在应用程序中,这些 .dll 永远不会改变。无论是否需要,它们都加载了该过程。在网站中,每个页面或服务都被编译为一个单独的库。因此,如果 w3wp.exe 需要加载 App_Code/MyService_as33fweqs.dll(已编译 dll 的动态生成的临时名称)来完成任务,它会更小并且可能更快,因为它只携带它需要的东西。这允许 w3wp.exe 独立生成不同复杂度/内存需求的线程。
【讨论】:
您不应该使用其中任何一个。他们使用传统的“ASMX”技术。所有新的服务开发都应该在 WCF 中。
使用“WCF 服务应用程序”或“WCF 服务库”,或者更具体的版本之一。
我还建议不要使用“新网站”。这是微软在试图让人们适应 PHP 和类似技术的过程中犯的一个错误。它不同于其他所有类型的 .NET 项目,并且以其他人无法预料的方式运行。几乎没有理由将它用于任何重要的事情。
顺便说一句,我认为网络服务很重要,所以永远不会使用网站“项目”来提供网络服务。
【讨论】:
在 ASP.NET 中,术语“应用程序”意味着它是预编译的,而“站点”则意味着它不是。我会选择前者。
【讨论】: