【问题标题】:Learning - Extensibility: Dynamic loading, and any other no-recompile software updates学习 - 可扩展性:动态加载和任何其他无需重新编译的软件更新
【发布时间】:2011-01-27 19:23:42
【问题描述】:

我正计划编写一个程序,但我陷入了一个难题。我不想开始写一些东西,然后当我发现我的程序不可扩展时不得不重写它。另一个问题是我没有足够的编程知识来知道从哪里开始设计我的程序以便它是可扩展的。

我已经阅读了一些有关 DLL(或 unix 的延迟加载)、动态加载、运行时库加载/卸载等方面的资料。但我仍然无法完全理解我需要做什么。我将给出一个示例程序示例,如果有人可以引导我学习正确的方向以便我可以开始更大的程序,我将非常感激!

假设我创建了一个控制台程序“iAmDog”,您可以在其中输入命令,狗会相应地响应控制台的输出。现在让我们假设当我创建这个程序时,狗只有 1 个命令,“bark”,它产生输出“roofroofroof!”。我将如何编写这个程序,以便在用户仍在运行程序时,我可以编辑库或其他地方的代码,以将“坐”命令添加到狗的曲目中。

再次重申,理想情况下,我的计划是不停机或尽可能减少停机时间,同时能够对始终运行的程序的功能进行编码更新。

感谢您的阅读!

Russell aka SgtPooki

【问题讨论】:

  • 有什么特别的原因为什么它必须是不重新编译而不仅仅是不编译? (即 Ruby)
  • 我主要是在询问 C++,我想我应该指出这一点,但是如果没有关于 C++ 的问题,我希望根据其他语言的方式来学习如何在 C++ 中执行此操作。我喜欢 C++ =)
  • 自发布此文章后了解了更多关于 MySQL 的信息后,我意识到我应该能够完成像命令和输出一样简单的事情。然后程序将检查数据库中的命令,而不是硬编码它们。但这将使其非常仅限于 [ cout

标签: dynamic extensibility recompile extensible


【解决方案1】:

您使用的是 .NET 吗?那么 MEF(托管可扩展性框架)可能非常适合您。

有一个podcast on Hanselminutes about MEF。您可以找到 mp3 和 PDF 成绩单,让您可以搜索节目。他们甚至讨论了持续监视文件夹以获取更新的可能性,以实现您所描述的目标,尽管他们不鼓励这样做。

【讨论】:

  • 我本来打算使用 C++,但我认为可能有某种通用方法可以为所有语言做到这一点,即使它们对某些语言来说是一种延伸。为什么不建议这样做?
  • @SgtPooki。我不记得实际上是为什么,但我记得讨论过的那个。看看节目吧。
猜你喜欢
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多