【问题标题】:Web service vs. Web service referencing DLLWeb 服务与引用 DLL 的 Web 服务
【发布时间】:2011-01-13 23:48:33
【问题描述】:

我特别擅长开发 Web 服务。我有这个现有的网络服务,我需要重做,因为目前它似乎不起作用,

Web 服务具有对 DLL 类的引用

<%@ WebService Language="C#" Class="MyClass"%>

这就是全部内容...它有一个位于 bin 文件夹中的 MyClass.dll

我所做的是将 MyClass 类放入 Web 服务本身......

<%@ WebService Language="C#" Class="MyClass"%>

using System;
using System.IO;
using System.Data;
//...

[GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[WebServiceAttribute(Namespace = "http://service.search.lsc.slacker.com")]
[WebServiceBindingAttribute(Name = "TLSCSoap22Binding", Namespace = "http://service.search.lsc.slacker.com")]
public class MYClass: System.Web.Services.WebService
{    
    //...
}

它确实有效,测试了所有功能,一切都按预期工作。

但是,在提出此解决方案之前,我需要查看所有影响,我可能忽略了引用 dll 的好处

请注意,我无法询问之前的开发人员为什么将其封装在 DLL 文件中 而且我知道这个 DLL 不会被任何其他外部应用程序重用。它是 仅为网络服务创建。

所以我的问题是,为什么老开发人员创建了一个 dll 来包含该类并被 Web 服务使用,而不仅仅是一个 Web 服务?

【问题讨论】:

    标签: c# web-services dll


    【解决方案1】:

    也许开发人员的初衷是让功能分布在几个 DLL 上,并让 Web 服务充当所有 DLL 的网关?

    【讨论】:

    • 我们将所有功能都放在 DLL 中,而 Web 服务只是一个门面,负责安全并调用 DLL 中所需的功能。
    • 我们也是,但我的理解是您只能将一个 DLL 分配给 Web 服务页面。有没有办法将多个 DLL 分配给一个页面?
    【解决方案2】:

    如果之前的开发人员使用预定义的 Web 服务模板之一在 Visual Studio 中创建了 Web 服务 - 代码隐藏模型就是项目的开箱即用结构。

    在您的示例中,原始 asmx 页面未使用 classes 命名空间引用该类。 MyClass 引用中缺少命名空间可能会导致服务无法正常工作的问题(尽管这只是一个长期的猜测,因为您并没有真正提供比“服务不工作”更多的信息)。

    希望有帮助!

    【讨论】:

      【解决方案3】:

      可能有几个原因。最初的开发人员可能打算将 dll 黑盒以供外部使用。其他开发人员可能有一个定制的“罐头”测试工具来测试这种性质的库。在 SDLC 期间,预编译的 dll 更安全一些,因为中间代理不会影响后面的代码。未编译的 Web 服务中的代码可能会被意外编辑(甚至出于恶意目的)。

      最后,这可能只是这个人的偏好。这个决定真的是相当武断的,除非你有一些外部因素的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2010-11-09
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多