问题标签 [extensible]

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.

0 投票
1 回答
489 浏览

design-patterns - 如何在我的场景中设计可扩展且安全的数据结构?

我正在开发一个网站,我需要构建一个数据结构来存储用户配置文件信息。就像我们填写的关于我们的性别/年龄/教育/等的内容一样。Facebook等的信息。我遇到的当前问题是如何设计一个可扩展且安全的数据结构,更详细地说,

  1. 目前我可能不会考虑当前设计/开发阶段所需的所有用户配置文件信息,如何设计一个可扩展的框架以便将来我可以轻松扩展用户配置文件?是否有任何成熟的(开源)用户配置文件框架可供参考?目前我将每个属性存储到一个数据库列中,每次我需要一个来自需求的新属性时,我都需要添加列——不太方便。

  2. 如何确保为不同的应用程序共享用户配置文件信息是安全的?例如,app1 只需要用户配置文件的一部分,出于安全原因,我只需将用户配置文件的一部分暴露给 app1。但是我们需要让它足够灵活,以便当 app1 需要额外的用户配置项时,我们可以轻松地公开更多。

C# 或中性编程语言的解决方案值得赞赏。

0 投票
4 回答
786 浏览

java - Java 的可扩展 GUI 框架

我是 swing 的粉丝,发现它已经完成了我需要的一切,除了可扩展的 GUI。我可以通过编程使小部件可扩展,但如果我想插入一个可选功能,动态生成每个被更改的组件可能会非常乏味。

我花了很短的时间编写 Firefox 插件,这让我对 Overlays 的想法非常感兴趣。

Java是否存在具有类似概念的东西?

0 投票
2 回答
1430 浏览

nhibernate - 使用 NHibernate 的可扩展域模型

我目前正在设计可以通过应用程序插件扩展域模型和存储库的解决方案。现在,我遇到了一些我在下面列出的问题。

  1. 我的第一个问题是使域模型可扩展。我正在考虑在这里使用继承,但老实说,我不知道如何利用多个插件程序集扩展同一个域对象。我有点倾向于使每个域对象都是局部的,并允许插件以这种方式扩展它。如果我有多个插件扩展同一个域对象,我不必担心为每个插件加载不同的扩展域程序集。在运行时我仍然只有一个合并的域对象。对此有什么想法吗?

  2. 另一个问题是扩展 NHibernate 映射文件。我可以让每个程序集为其扩展的域对象嵌入映射文件,并让我的 NHibernate 管理器加载它,而不是核心域中提供的那个。再一次,问题是如果我有多个插件扩展同一个域对象。我可以让一个插件覆盖另一个插件的映射文件。我对最后一个问题的解决方案不是很好,但我正在考虑在插件程序集中包含一个校验和,作为它在扩展它之前使用的原始映射文件的签名。我可以在加载期间验证此校验和,并且仅在校验和匹配时才加载插件映射。非常难看,但至少我不会覆盖与插件程序集中用于扩展的基本地图不同的任何地图。

无论如何,我想听听你们对此的看法。谢谢!

0 投票
3 回答
273 浏览

java - 爪哇;运行时解释;添加插件的策略

我开始着手我的第一个大型项目。这将是一个与Rosetta Stone非常相似的程序。它将是一个用于学习外语的程序,使用 Swing 用 Ja​​va 编写。在我的程序中,我计划让用户能够选择下载的课程来学习。因为我的母语是英语,所以我将能够创建一门英语课程。但是,我希望说其他语言的人也能够编写课程供用户使用(这是我的程序运行的重要部分)。

由于我希望用户能够下载他们想要的语言课程,因此将其硬编码到程序中是不可能的。课程需要在运行时进行解释。此外,由于我希望其他人与我的工作合作(即制作课程),我需要让他们轻松地这样做。

这样做的最佳方法是什么?

我想出的想法是有一个严格的空课程大纲(硬编码)和一个简单的 xml 文件,其中详细说明了要使用的文本和声音。这样做的缺点是它极大地限制了作者。不同的语言可能需要从学习不同的部分开始。

对于手头的问题以及整个项目的任何建议将不胜感激。任何相关资源或信息的链接也将不胜感激。

想想你的时间和精力,

约瑟夫池塘

0 投票
7 回答
3402 浏览

language-agnostic - 人们今天使用的可扩展语言是什么?

维基百科说:

可扩展编程是计算机科学中用于描述一种计算机编程风格的术语,该风格侧重于扩展编程语言、编译器和运行时环境的机制。

例如,Tcl 允许您编写自己的控制结构。见这里

我有兴趣编译一个在实际代码中使用的可扩展编程语言列表。如果您也可以为您的语言提供示例,那就太好了。

0 投票
3 回答
1913 浏览

c# - MEF + 插件未更新

我已经在 MEF Codeplex 论坛上问过这个问题,但我还没有得到回复,所以我想我会尝试 StackOverflow。如果有人感兴趣,这是原始帖子(这只是它的副本):

MEF Codeplex

“首先让我说,我对 MEF 完全陌生(今天才发现它)并且到目前为止对它非常满意。但是,我遇到了一个非常令人沮丧的问题。我正在创建一个应用程序将有一个插件架构,插件将仅存储在单个 DLL 文件中(或编码到主应用程序中)。DLL 文件需要能够在运行时重新编译,应用程序应该识别并重新加载插件(我知道这很困难,但这是一个要求)。为了实现这一点,我采用了涵盖http://blog.maartenballiauw.be/category/MEF.aspx的方法那里(寻找 WebServerDirectoryCatalog)。基本上这个想法是“监视插件文件夹,将新的/修改的程序集复制到 Web 应用程序的 /bin 文件夹并指示 MEF 从那里加载其导出。” 这是我的代码,这可能不是正确的方法,但这是我在网络上的一些示例中发现的:

所以这一切实际上是有效的,在 main 中的代码结束后,我的 IEnumerable 变量实际上填充了 DLL 中的所有插件(如果你按照代码位于 Plugins/1 中,这样我就可以修改插件文件夹)。所以现在我应该能够重新编译插件 DLL,将其放入 Plugins 文件夹,我的 FileWatcher 检测到它已更改,然后将其复制到文件夹“2”中,directoryCatalog 应该指向新文件夹。所有这些实际上都有效!问题是,即使看起来每件事都指向了正确的位置,我的 IEnumerable 变量永远不会使用新插件进行更新。如此接近,却又如此遥远!有什么建议么?我知道这样做的缺点,实际上没有 dll 被卸载并导致内存泄漏,但它 一个 Windows 应用程序,并且可能每天至少启动一次,并且插件不太可能经常更改,但客户端仍然要求它在不重新加载应用程序的情况下执行此操作。谢谢!

感谢大家提供的任何帮助,无法弄清楚这一点让我发疯了。”

0 投票
3 回答
1760 浏览

c# - 实施插件/插件/插件策略的最佳实践

我的应用程序应该是可扩展的。为了我自己的需要,我实现了一些服务。这些服务基于 IoC/DI 原则。所以服务封装了应用程序的概念。

例如,有一个 IApplicationService。ApplicationService 公开有关当前正在执行的应用程序的信息。指定了 AssemblyInfo 等。另一个示例是 INavigationService(请参阅示例中的 mef.codeplexcom)。此服务提供了一些属性,其中包含有关指定的当前选定项目的信息以及一些事件。

我认为,“服务方法”是最简单的,并且简化了应用程序的扩展点。所以,我不确定这真的是最好的方法。你怎么看?您将如何在诸如 addins/addons/plugins ... 之类的应用程序中实现“扩展点”?

提前感谢您的回复!对不起,我的英语很差。;)

0 投票
1 回答
2711 浏览

android - 我可以扩展 Androids 联系人数据库吗?

我想知道是否可以扩展 Android 联系人数据库?

从这里 - http://d.android.com/reference/android/provider/ContactsContract.html

它说:

ContactsContract 定义了一个可扩展的联系人相关信息数据库

Extensible 建议我可以在联系人应用程序中添加更多数据,而不是正常值,例如姓名、号码、电子邮件、工作号码、家庭号码等。

但是,此页面的示例 - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html仅显示如何插入名称等标准值,而不是如何向联系人添加新字段。

此外,在网络上搜索并没有找到很多关于扩展联系人数据的信息。

所以我想知道它是否可能或者可扩展是指联系人的其他部分?

例如,我想为在我的应用程序中具有特殊权限的联系人添加一个附加字段,以便当用户查看联系人时,他或她知道他们可以与哪些用户一起使用我的应用程序。

这可能吗?

0 投票
1 回答
74 浏览

dynamic - 学习 - 可扩展性:动态加载和任何其他无需重新编译的软件更新

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

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

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

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

感谢您的阅读!

罗素又名 SgtPooki

0 投票
2 回答
1878 浏览

xml - 有适合新手的 XML/XSD 教程吗?

有谁知道任何关于 XSD/XML 的新手教程,这些教程简单地解释了事情,但非常详细地介绍了如何做事?