2010-08-17 153 views
8

我正在創建一個應用程序,它將解析MSDN文章中的元信息,例如文章標題和其他文章在同一個集合中。這個應用程序也有一個GUI前端。我應該爲模塊創建DLL嗎?

我有興趣通過將前端與後端和後端分離成兩個部分來使該程序更加模塊化 - 一個處理HTML文檔的檢索和一般解析,另一個處理與MSDN本身相關的更具體的解析。這個想法是,這將允許自定義用戶界面被打到後端,並允許應用程序能夠通過插入不同的DLL來解析其他網站(也許Google的搜索結果)。

我的理解是,您通常會創建DLL以在不同應用程序之間共享代碼。然而,在這種情況下,我只爲這個特定應用尋找模塊化。在這種情況下創建DLL還是合適的嗎?或者我應該考慮一個不同的選擇,比如把所有的課程都拼湊成一個單獨的程序集?

我應該注意到,我對編程比較陌生,所以即使答案是「否」,那麼這對我來說仍然是一個很好的練習。如果是這樣的話,我想知道這個練習是否應該修改以使其更適合。

回答

7

我認爲你在這種情況下使用DLL的想法是一個好主意。使用DLLs沒有可觀的額外成本(最多可能會多花一些啓動成本)。即使您目前只計劃在這一個應用程序中使用它們,但仍然計劃未來的變化並沒有什麼壞處。如果需要,總是有很大的機會可以在另一個應用程序中使用很少或不需要修改的DLL。

此外,將模塊化分爲單獨的DLL甚至可能有助於設計和開發過程。它使「共享」全球數據變得更加困難(這可能是一件好事)。如果所有事情都在一個單一的程序集中,那麼可能有一些傾向於從其他地方獲取一些數據。如果這些數據存在於另一個程序集中,那麼這種可能不好的做法就不太可能發生。這可能會迫使開發人員重新思考如何解決問題。

+1

+1第二個段落。模塊化確實強迫你使用一個更清潔,深思熟慮的設計爲您的應用程序。第二段爲 – 2010-08-17 23:26:01

+1

+1。什麼可以做,迫使你解決問題的正確,而不是僅僅摸索一些零散的模塊是好的。 – Daniel 2010-08-17 23:59:57

1

DLL可以幫助您維護應用程序。如果您有將來的更新和/或錯誤修復,則可以更新特定的DLL而不是整個應用程序。這也將有助於減少您的測試表面積。

在開發過程中,對於某些類/ DLL的存儲和稍後在實際DLL中進行交換時,也會更容易一些。

我不會發瘋,並把每個類放在它自己的DLL中。從高層次來看,應該有一個應該在一起的清晰的類別組合。

1

有幾個優勢,使一個DLL:

  • 該DLL可以從呼叫者程序(前端)
  • 該DLL可以自己從呼叫者問題是分佈式的,獨立地獨立地改變(前端)
  • 如果多個同時運行的軟件使用同一個DLL的內存佔用量會更小

它還配備了一個成本:

  • 你不能用簡單的繼承方案來擴展DLL類
  • 共享全球數據仍然是可能的,但更困難的(有些人可能會說這股力量更好的設計,但它仍然是一個約束)
  • 單元測試包括在一個DLL的代碼是比較困難的
  • 有安裝問題(DLL必須放在特定場所和註冊,這取決於你如何使用它)

而對於模塊化的主要觀點是,DLL是仍然是一個措施。即使我們忽略了成本,它也不比lib更好,甚至只是重用現有的類。主要優勢在於經銷商,而不是軟件開發商,除非您期望第三方貢獻者。被調用的函數仍然運行在與主程序相同的進程中。

如果你想有一個真正乾淨的切割爲模塊化,你可以使用一個真正的多層次結構,具有獨立的過程進行前端和後端以及它們之間的通信層(說TCP套接字)。在項目生命做了足夠早的時候,通常是雙方更靈活和更強大的,而不是要複雜得多。

相關問題