【问题标题】:ASP.NET Web Service Application vs ASP.NET Web ServiceASP.NET Web 服务应用程序与 ASP.NET Web 服务
【发布时间】:2011-06-06 12:45:37
【问题描述】:

我是 .NET 的新手。今天我正在学习Web Service。我发现了两种创建 Web 服务的方法。

第一个是 - 右键单击​​解决方案

第二个是——右键解决方案

它们有什么区别?

【问题讨论】:

    标签: asp.net web-services


    【解决方案1】:

    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 独立生成不同复杂度/内存需求的线程。

    【讨论】:

    • 感谢 Joel 的回复。能否详细说明“内存使用分离”?
    • @Mohit Kumar:我在答案中添加了一些内容以更全面地描述它。但是,我不确定我是否添加了清晰度或泥浆。
    【解决方案2】:

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

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

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

    顺便说一句,我认为网络服务很重要,所以永远不会使用网站“项目”来提供网络服务。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-08-11
        • 2012-05-22
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多