我是.NET的新手。今天我正在学习Web服务。我发现了两种创建Web服务的方法。
第一个 - 右键点击解决方案<<添加新项目<< ASP.NET Web服务应用程序
第二个 - 右键点击解决方案<<添加新网站<< ASP.NET Web服务
他们之间有什么区别?
答案 0 :(得分:3)
Web服务应用程序将您的所有代码预编译为单个.dll,将放在bin中。因此,如果您在每个文件中都有多个Web服务文件和代码,则它们都将被编译为一个公共dll。每次调用任何服务时都会加载该库。
Web服务网站将代码文件保存在App_Code目录中,并且每个服务都将自己的代码编译到Temporary Asp.Net files文件夹中的自己的独立库中。这允许将每个库独立加载到内存中。
他们都有自己的优点和缺点。单个库比网站模型更容易移动/更新,但网站模型允许隔离内存使用,防止一个服务中的问题影响单独的服务。
修改强>
我的意思是内存使用的分离是每个.dll的加载取决于完成事务所需的过程。控制线程的w3wp.exe进程将根据需要整理各个.dll以完成请求/响应。在应用程序中,这些.dll永远不会改变。无论是否需要,它们都会被加载。在网站中,每个页面或服务都编译为单独的库。因此,如果w3wp.exe需要加载App_Code/MyService_as33fweqs.dll
(动态生成的已编译dll的临时名称)来完成任务,它会更小并且可能更快,因为它只携带它所需要的东西。这允许w3wp.exe独立地生成具有不同复杂性/内存需求的线程。
答案 1 :(得分:0)
你不应该使用其中任何一个。他们使用传统的“ASMX”技术。所有新服务开发都应该在WCF中。
使用“WCF服务应用程序”或“WCF服务库”或其中一个更具体的版本。
我也建议不要使用“新网站”。这是微软在试图容纳习惯于PHP和类似技术的人的过程中犯的错误。它与其他所有类型的.NET项目都不同,并且表现得像其他任何人都没想到的那样。没有理由将它用于任何非平凡的事情。
顺便说一句,我认为Web服务并不重要,因此永远不会将网站“项目”用于Web服务。答案 2 :(得分:0)
在ASP.NET中,术语“应用程序”意味着它是预编译的,而“网站”意味着它不是。我会选择前者。