2012-10-04 103 views
1

我目前正在開發Windows服務項目。我添加了對我的項目外部的類庫的引用,因爲我需要使用該dll的函數。Windows服務與Windows窗體應用程序VB.NET

但是,我需要的類庫函數是會話值,但我不能使用這些Web方法,因爲我的只是Windows。我只能想到解決這個問題的兩種方法。

1)從外部類庫中重載我需要的函數,並用輸入參數替換會話值。 這肯定是一個耗時的過程,因爲我有很多這個函數所指的會話值。

2)我可以改爲創建一個Windows窗體應用程序。將Web瀏覽器控件添加到表單。配置URL以獲得外部項目中所需的所有輸入參數。添加一個調度程序作爲後臺進程運行。 在ASP.NET中我需要參考的外部項目中,我可以添加一個新的頁面,它從我的Windows窗體應用程序獲取URL ..解析查詢字符串以獲取輸入值並傳遞給所需的函數。

你能否提出建議,如果有更好的方法。謝謝 !

+0

Windows ** Web服務**和Windows **服務**之間存在差異。更正了標題和標籤,因爲你的問題是關於第一個而不是後者。 –

+0

我對你爲什麼不能使用會話值有點困惑 - 你說你正在開發Windows Web服務項目。會不會有訪問會話? – Tim

+0

我認爲Ken將它改爲web,但我的意思是說我正在開發Windows Service應用程序而不是web。 – user1681514

回答

0

我推薦選項1.選項2看起來像是一個等待發生的巨大噩夢,而選項1看起來像是一個簡單的(儘管很費力)的代碼更改。

您可以通過在Visual Studio或您最喜愛的文本編輯器中進行正則表達式搜索/替換來減少選項1的痛苦。我使用這種技術來隨時進行繁瑣的大規模代碼更改,一旦您習慣了它,它的效率非常高。

但是,長期解決方案必須是更改庫代碼。編寫依賴於全局狀態的可重用庫代碼始終是災難的祕訣。

0

選項一似乎是最好的。這是最乾淨的,並允許你保持對你的項目的控制。我認爲,當你開始這樣做時,你會注意到可以利用的模式,以便現在看起來總的工作量沒有那麼多。

快捷方式很少短。

+0

感謝邁克的投入,但我已經嘗試過了。我提到的函數大約是400 LOC,它有很多對類庫中其他函數的引用,並且所有這些函數都有會話值。如果我沒有時間限制的話,我會很樂意把它們清理乾淨。遺憾的是,我現在還不能。 – user1681514

相關問題