我在开发Web服务方面特别陌生。我有这个现有的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不会被任何其他外部应用程序重用。它是 仅为Web服务创建。
所以我的问题是,为什么旧的开发人员创建了一个dll来包含该类并被Web服务使用,而不仅仅是Web服务?
答案 0 :(得分:1)
也许开发人员的初衷是将功能分散在几个DLL和Web服务上,作为所有DLL的网关?
答案 1 :(得分:0)
如果之前的开发人员使用其中一个预定义的Web服务模板在Visual Studio中创建了Web服务,则代码隐藏模型就是该项目的开箱即用结构。
在您的示例中,原始asmx页面未使用classes命名空间引用该类。缺少MyClass
引用中的命名空间可能导致服务无法正常工作的问题(虽然这只是一个长期的猜测,因为你没有提供比“服务不起作用”更多的信息) 。
希望有所帮助!
答案 2 :(得分:0)
可能有几个原因。原始开发人员可能打算将dll黑盒子用于外部使用。其他开发人员可能有一个定制的“in the can”测试工具来测试这种性质的库。在SDLC期间,预编译的dll更安全,因为中间代理不会影响后面的代码。未编译的Web服务中的代码可能会被意外编辑(或甚至恶意编辑)。
最后,它可能只是这个人的偏好。除非你有一些外部因素作为影响,否则这个决定确实是相当随意的。