2011-01-13 262 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服務中的代碼可能會偶然編輯(或甚至有惡意的意圖)。

最後,它可能只是這個人的偏好。這個決定實際上是相當武斷的,除非你有一些外部因素作爲影響。