2011-01-13 158 views
0

我在开发Web服务方面特别新颖。我有这个现有的Web服务,我需要重做,因为目前它似乎不工作,Web服务与Web服务引用DLL

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 
{  
    //... 
} 

和它的工作,测试了所有功能和e事情按预期工作。

不过,我需要看到所有的后果提出此解决方案之前,我可能都忽略引用的DLL的好处,而不是

请注意,我不能问的,为什么它被封装在一个DLL以前开发商文件 ,我知道这个DLL不能被任何其他外部应用程序重用。它是专为Web服务创建的 。

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

回答

1

也许开发人员的初衷是将功能扩展到多个DLL和Web服务上,以充当所有DLL的网关?

+0

我们把所有的功能都放到了DLL中,而Web服务只是一个安全的外观,并且调用了DLL中所需的功能。 – 2011-01-13 15:55:49

0

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

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

希望有帮助!

0

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

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