ASP.NET Web服务应用程序vs ASP.NET Web服务
我是.NET中的新手。今天我正在学习Web服务。我找到了两种创建Web服务的方法。ASP.NET Web服务应用程序vs ASP.NET Web服务
第一个是 - 右击解决方案< <添加新项目< < ASP.NET Web服务应用程序
第二个是 - 右击解决方案< <添加新网站< < ASP .NET Web服务
他们之间有什么区别?
Web服务应用程序将所有代码预编译为将放在bin中的单个.dll文件。因此,如果您在其中的每一个中都有多个Web服务文件和代码,则它们都将被编译为一个通用的dll。每次调用任何服务时都会加载该库。
Web服务网站会将代码文件保存在App_Code目录中,并且每个服务都将自己的代码编译到Temporary Asp.Net文件夹内的自己分离的库中。这允许每个库独立加载到内存中。
它们都有其优点和缺点。单个库比网站模型更容易移动/更新,但网站模型允许隔离内存使用,防止一个服务中的问题影响单独的服务。
编辑:
我的意思内存使用的隔离是每个.dll文件加载依赖于必要完成交易的过程。控制线程的w3wp.exe进程将根据需要将各个.dll后台打包以完成请求/响应。在一个应用程序中,这些.dll永远不会改变。无论他们是否需要,他们都会加载进程。在网站中,每个页面或服务都被编译为独立的库。因此,如果w3wp.exe需要加载App_Code/MyService_as33fweqs.dll
(动态生成的编译后dll的临时名称)来完成一项任务,它会更小,并且可能更快,因为它只承载它所需的任务。这允许w3wp.exe独立地生成不同复杂度/内存需求的线程。
你不应该使用其中任何一个。他们使用传统的“ASMX”技术。所有新的服务开发应该在WCF中。
使用“WCF服务应用程序”或“WCF服务库”,或更具体的版本之一。
我也建议不要使用“新网站”。这是微软在尝试适应习惯了PHP和类似技术的人的过程中犯的一个错误。它不同于其他类型的.NET项目,并且以其他人无法想象的方式行事。几乎没有什么理由将它用于任何非平凡的事情。
顺便说一句,我认为Web服务是非平凡的,所以永远不会使用Web服务的网站“项目”。
在ASP.NET中,术语“应用程序”意味着它是预编译的,而“站点”意味着它不是。我会选择前者。
感谢您的回复Joel.请您详细说明“内存使用隔离”吗? – 2011-06-06 13:04:34
@Mohit Kumar:我在答案中加了一点点,以便更全面地描述它。但是,我不确定我是否增加了清晰度或泥浆。 – 2011-06-06 13:16:34
谢谢Joel .. :) – 2011-06-07 04:44:39