2011-03-31 66 views
2

在Windows服務中,我實現了一個HttpListener,它將處理傳入HTTP請求到某個端口,解析查詢字符串,將其插入數據庫併發送確認響應。一切運作良好,我對我的解決方案非常滿意。然而,客戶說他們有點懷疑,並問是否可以通過網頁完成。就像有一個HTTPHandler監聽某個端口一樣。讓我思考。在我的情況下你會做什麼?HttpListener vs HttpHandler困境

請使用HttpListener/Windows服務或HTTPHandler/.aspx?

非常感謝!

+0

如果沒有人會使用該產品的網絡用戶界面,那麼絕對毫不含糊地將ASP.NET網站公開給網絡 - 服務意味着對可靠性的要求,網頁aren那就是。 – 2011-03-31 14:18:14

+0

是的,這是一個有效的論點,我將在明天的會議上提出這個論點。同樣可以通過Web服務來完成嗎? – Dragan 2011-03-31 14:20:12

+1

技術上,是的,當然;但實際上,通過在IIS中託管它,沒有任何意義或好處(我知道),除非它駐留在隨附的網站旁邊 - 只是系統中更明顯的一組額外記錄。 – 2011-03-31 14:21:30

回答

1

你有什麼理由不使用網絡服務器嗎?我們已經實現了我們自己的Http服務服務,因爲它們在處理請求的方式上非常不尋常,並且會證明對正常配置的IIS實例徵稅。

在你的情況下,這似乎並非如此,所以是的,我發現自己想知道你爲什麼沒有去網絡服務器路線。

編輯

是否有面嚮應用程序的一部分的任何其他網站?如果不是,我會同意@Mr Disappoinment的推理是合理的。你只公開你需要的東西,這比IIS實例的攻擊面少得多。

+0

我已經實現的贏得服務僅僅是一個網絡電子商店的附屬部分,人們可以購買電子報紙訂閱。我使用Windows服務將我們的數據庫與我們的客戶端同步。我認爲在我們的服務器以及我們客戶的服務器(發佈者)上安裝windows服務是一個可行的選擇。當我已經有一個使用線程的工作Windows服務時,我沒有看到使用Web服務的好處。我對你的觀點非常感興趣,因爲你有15.4k的聲望:) – Dragan 2011-03-31 14:32:41

+1

我認爲這是一個實現細節。如果解決方案穩健且按照規範工作,則沒有問題。服務器技術人員往往不願意將軟件作爲服務安裝,因爲(他們認爲)比在IIS下運行的軟件更難以鎖定/保護一些專有軟件。從開發人員的POV中,更容易限制服務的運行並將內存控制在更嚴格的控制之下。在一天結束的時候,如果您的交貨方式正確,那麼如果他們對交貨類型提出了一個遲到的要求,那麼這可能是一個扭轉交易的機會。 – spender 2011-03-31 16:24:52

1

我會通過IIS使用某些東西,只是因爲我認爲我的客戶的IT人員需要一個非常重要的論點,讓我告訴他們在他們的服務器上安裝自定義服務。我不太瞭解HttpListener的線程行爲(它是否使用線程池?最大線程數?一旦max被命中時排隊?)可以肯定地說,但我想象你的客戶端有類似的問題。

+0

我明白你的觀點,但我們的客戶只是想知道使用windows服務而不是.aspx或winservice的好處。對於初學者來說,我覺得使用HttpListener類非常舒服。順便說一句,你是正確的HttpListener使用線程池。這顯着降低了處理器的開銷。你不覺得嗎?感謝您的回覆。欣賞它。 – Dragan 2011-03-31 14:36:28

+0

@joelt指出的一點是,IIS可以更好地控制要爲Web服務分配多少進程和線程,排隊請求,回收等。 – 2013-05-23 07:43:07