2010-08-17 104 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套接字)。在项目生命做了足够早的时候,通常是双方更灵活和更强大的,而不是要复杂得多。

相关问题