问题标签 [modularity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
architecture - 建模架构
构建由许多不同类型的项目组成的系统模型的常见解决方案是创建一个模块化系统,其中每个模块负责特定类型。例如,将有用于袋熊的模块 WombatModule:IModule,其中 IModule 接口具有 GetCount()(查找袋熊数量)和 Update()(更新所有袋熊的状态)等方法。
更面向对象的方法是为每个项目类型设置类并为每个项目创建一个实例。这将使类 Wombat:IItem 具有 Update() 之类的方法(以更新这个袋熊)。
从代码的角度来看,差异可以忽略不计,但运行时差异很大。面向模块的解决方案当然更快:更少的对象创建,更容易优化所有袋熊通用的操作。
当类型和模块的数量增加时,问题就来了。要么你失去了大部分性能优势,因为每个模块只支持几个项目,要么模块的复杂性增加以适应一种通用类型的稍微不同的项目——比如胖袋熊和瘦袋熊。或两者。
至少有一次我看到它退化为糟糕的状态,而 WombatModule 所做的只是保留隐藏的 Wombat 对象的集合并循环运行它们的方法。
当性能问题比长期开发问题更小时,您能否确定使用模块而不是每个项目对象的任何架构原因?可能还有另一种可能性我失踪了?
java - 模块化网络应用
我最近一直在研究OSGi,并认为它对于模块化 Java 应用程序来说是一个非常好的主意。
但是,我想知道 OSGi 将如何在 Web 应用程序中工作,您不仅需要担心代码——还有 HTML、图像、CSS 之类的东西。
在工作中,我们正在构建一个具有多个“选项卡”的应用程序,每个选项卡都是应用程序的一部分。我认为这可以从采用 OSGi 方法中真正受益——但是我真的不确定处理所有常用 Web 应用程序资源的最佳方法是什么。
我不确定它是否有任何区别,但我们正在使用 JSF 和IceFaces(这增加了另一层问题,因为您有导航规则,并且您必须在 web.xml 中指定所有面孔配置文件...... doh! )
编辑:根据这个线程,可以从 JAR 文件中加载 faces-config.xml 文件 - 所以实际上可以在不修改 web.xml 的情况下包含多个 faces-config.xml 文件,前提是您将其拆分为 JAR 文件。
任何建议将不胜感激 :-)
java - 使用插件扩展 Java Web 应用程序
我有这个 Web 应用程序已经发展到无法管理的混乱状态。
我想把它分成一个通用的“框架”部分(仍然包括网页和图像等网页内容)和几个添加额外功能和屏幕的模块。我希望这种重构也可以用作第三方扩展的插件系统。
所有模块都需要是单独的部署单元,最好是 war 或 jar 文件。
我试图只制作几个常规的战争文件,但 Tomcat 将(根据 servlet 规范)这些战争文件彼此完全分开,例如,它们不能共享它们的类。
我需要插件才能看到“主”类路径。
我需要主应用程序对插件进行一些控制,例如能够列出它们并设置它们的配置。
我想保持插件本身(除非它们指定依赖项)和任何其他可能在同一个 Tomcat 上运行的不相关 Web 应用程序之间的完全分离。
我希望它们植根于“主”应用程序 URL 前缀下,但这不是必需的。
我想使用 Tomcat(大型架构更改需要与太多人协调),但也想了解 EJB 或 OSGi 世界中的干净解决方案(如果有)。
ajax - JAR 文件中的组件信息可能吗?
我想建立一个具有良好模块化的 Web 应用程序,并想AJAX Toolkit/Framework
为其 VIEW 使用类似的 GWT 或 ZK。组件信息应该从各种模块-JAR 中加载。
哪个AJAX Toolkit/Framework
能够做到这一点?
c++ - 在 C 程序中动态加载外部模块?
我确信这个问题之前已经解决了,我很好奇它是如何完成的。我有代码,在运行时,我想扫描目录的内容并加载功能。
具体来说,我正在使用我希望能够添加函数调用的脚本引擎。我希望核心引擎提供非常有限的功能。用户应该能够通过 3rd 方库添加其他功能,我希望引擎可以扫描并加载这些功能。这是怎么做到的?
sql-server-2005 - 模块化应用数据库结构
我正在构建一个模块化应用程序。通过配置,您可以打开和关闭这些应用程序模块。我正在尝试确定应该为包含每个模块的数据的表使用什么数据库结构 (mssql2005)。我想到的两个选项是:
- 将所有表放入一个大数据库中,并根据模块为表添加前缀。
- 将每个模块的表分离到不同的数据库中。
我确实有所有模块共有的数据,所以如果我使用解决方案 2,我不确定如何管理这些公共数据(例如用户)。
--
为了澄清一件事,这些模块可能会单独出售,并且配置设置不受客户端控制。这就是为什么我什至考虑将它们分成单独的表格。
wpf - 如何在初始化后激活/停用模块的视图?
这与 WPF 或 Prism 的复合应用程序指南有关。
我的外壳中有一个“MainRegion”。我的各种模块将被加载到这个主要区域。我可以在菜单中填充可用模块的列表并选择它们进行加载。单击菜单,我会执行以下操作:
第一次一切正常,因为执行了模块的Initialize()方法,但是在Module1,Module2和Module3初始化之后,再次点击加载Module2时没有任何反应。
我的问题:在执行了初始化方法后,如何按需激活模块?
感谢您的帮助!
wpf - 在 Prism 中使用 ModuleManager 加载模块
这个问题也发布在Prism 的 Codeplex 网站上。
我对按需加载模块有点迷茫,希望你们能不吝赐教。我正在使用v2 #7。
这是我想要完成的事情:
1) 我有 2 个区域 - 一个用于实例化模块的按钮 (MenuRegion),另一个用于显示模块 (MainRegion)。在 MenuRegion 中一次只能看到一个模块。
2) 模块位于目录中
3) MenuModule 模块与 MenuRegion 相关联,用于创建显示模块名称的按钮。当单击其中一个按钮时,相应的模块将被加载并显示在 MainRegion 中。
4) 行为:
a) 单击 ModuleA 按钮并显示 ModuleA。用户在 ModuleA 中输入数据,数据处于未保存状态。
b) 单击 ModuleB 按钮并显示 ModuleB。用户在 ModuleB 中输入数据,数据处于未保存状态。
c) 单击 ModuleA 按钮,ModuleA 将显示先前输入的信息。
如果我的假设有误,请纠正我,并请给我其他建议:
1) MainRegion 应该是一个 ContentControl,因此一次只能看到一个模块。
2)我想我需要枚举我的目录的“GrouplessModules”来获取目录中可用模块的 ModuleInfo
3)要加载模块,我认为我需要调用 myModuleManager.LoadModule(moduleName)
最后,我的问题:
1) 我应该在 MenuModuleView 的构造函数中将 moduleManager 作为参数吗?
2) 我如何获取从 MenuModuleView 内部访问的目录,以便枚举可用模块?
3) 在MenuModuleView 中,当我枚举模块时,我创建了按钮,将ModuleInfo 分配给按钮的Tag 属性。这样,我只有一个点击事件来加载模块。它是否正确?对我来说,它闻起来有点变通...
非常感谢你的帮助!!!
api - 如果您想创建具有模块化的应用程序,最好的资源是什么?
在我对较新的 Web 平台/应用程序(例如 Drupal、Wordpress 和 Salesforce)的分析中,他们中的许多人基于模块化的概念来创建他们的软件:开发人员可以创建新的扩展和应用程序,而无需更改“核心”中的代码。 " 由主要开发人员维护的系统。特别是,我知道 Drupal 使用“钩子”系统,但我对实现它的引擎或设计知之甚少。
如果您要走上创建应用程序的道路,并且想要一个允许模块化的系统,您从哪里开始?这是每个人都知道的特定设计模式吗?有没有这种范式倾向于订阅的手册?他们是否有任何网站从头开始讨论这种类型的开发?
我知道有些人直接指向 OOP,但这似乎完全不是一回事。
我计划的这个特定系统更倾向于 Salesforce,但它不是 CRM 系统。
为了这个问题,请忽略 Buy vs. Build 论点,因为这种考虑已经在进行中。现在,我正在研究构建方面。
mysql - 数据库模式设计工具/模块化数据库设计
我正在开发可以部分从模块构建的应用程序。例如,我将能够开发一些包含“论坛”、“博客”、“画廊”等模块的在线社区。
目前我有一个大型数据库 ERM,其中包含具有外键连接的所有模块的所有表,我正在使用 dbwrench 来构建这个 ERM。但是,我对这种方法不是很满意。我想有一个 ERM 设计师,它可以以面向模块的方式工作。我想为每个模块将数据库表保存在一个单独的模式文件中,但在这些不同的模式之间保留外键引用。
但是,我找不到任何支持这一点的工具——这是错误的方法还是你如何设计“模块化 ERM”/模块化数据库方案?
谢谢!