簡體   English   中英

將.asmx Web服務作為Windows服務運行

[英]Running a .asmx Web service as a Windows Service

我是在這個論壇上提問的新手-希望我能正確提問。

我要解決的問題是:我有一個針對Web服務的Visual Studio 2010項目。 工作的類在“ .asmx”文件中定義。 該類繼承自“ System.Web.Services.WebService”類。

它可以在服務器上的IIS上愉快地運行。 客戶端可以對Web服務進行SOAP調用,它可以處理請求並發送響應。 沒關系的

問題是我希望它在無法安裝IIS的Windows 7 PC上運行。 因此,我希望它可以作為Windows服務運行(如果可能)。 該服務的唯一“客戶端”將是該PC上的用戶。

換句話說,我希望將.asmx中的所有代碼作為Windows服務運行(如果可能)。

在理想的情況下,我將能夠重復使用現有的.asmx(如果可能),而不必將所有代碼復制並粘貼到新的Windows Service解決方案中。

因此,我的目標是找到將.asmx Web服務作為Windows服務運行的最新方法。 我希望有人可以為我指出正確的方向。

我已經做了很多搜索,看起來這很有可能做到。 問題在於,那里的許多解決方案似乎有些過時了。 還是我的概念比較混亂。

基於“ 如何沒有IIS的情況下部署WCF服務? ”,我看了幾件事。

我最接近的是:“ https://msdn.microsoft.com/en-us/library/ms751414.aspx ”。 但是,在此示例中,完成工作的實際類(計算器)實際上包含在服務本身中。 我本以為你可以把他們分開。 換句話說,讓服務創建來自我的.asmx文件的類的實例。

我遇到的第二次關閉是“ https://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic4 ”,但這是.NET 3.0和VS2005。我也很難理解如何將我現有的課程鏈接到服務。

我遇到的其他解決方案建議添加對“ Microsoft.Web.Services3.dll”,“ System.Web.dll”和“ System.Web.Services.dll”的引用,盡管一些人似乎認為這稱為WSE,已在.net 4.0中更新為WCF,所以我不應該使用它。

關於我從哪里開始的任何指示?

在理想的世界中,您將切換到WCF,因為它可以輕松地自托管,托管服務等。並且這里有很多示例。 將代碼從ASMX遷移到WCF很容易。 但這是3.5,因為NetFX(WCF,WF和WPF在3.5下發布)。

使用ASMX,您需要托管服務器。 您可以使用HttpListener類創建一個簡單的“服務器”。 這可能足以滿足您的目的。

https://msdn.microsoft.com/zh-CN/library/system.net.httplistener(v=vs.85).aspx

IIS現在具有可托管的內核,可以與.NET的較新版本一起使用,但是如果您無法安裝較新的版本,而不得不將客戶端計算機的版本設置為3.0,則它可能不是您的最佳選擇。

您也許可以挖掘Cassini的舊資源,這是Microsoft的實現,最終成為可托管的Web核心。

早在2008年,有人在VS中搶奪了服務器,這也許是一個選擇。 請注意,此頁面上的版本適用於VS 2008,即4.0: http : //www.codeproject.com/Articles/23939/Light-IIS-Run-Asp-net-without-IIS

Ultidev有一個報告為自托管的服務器: http ://ultidev.com/download/default.aspx

希望這些幫助之一。

為了完整起見,這是我解決的方法:

最后,我繼續在客戶端PC上運行IIS,然后繼續使用asmx。

我發現將asmx轉換為WCF非常棘手。 確切地說,我發現很難轉換asmx中的線程處理(其他人編碼的線程處理)。 為了進一步解釋我試圖轉換的asmx,它的所有工作都在繼承自“ System.Web.Services.WebService”的類中進行。 因此,它可以創建一個“應用程序”實例,然后將其用於執行線程管理。

因此,與使用“ System.ServiceModel”(不允許我創建“ Application”實例)來嘗試執行相同的操作相比,我認為在客戶端PC上僅使用IIS會更容易。 我認為這比重新編碼相當復雜的asmx更好地利用了時間。 我知道有點失敗主義者。

致以誠摯的問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM