我有兴趣阅读其他开发人员和架构师处理某些站点的应用程序某些区域定制的各种方法。呼叫客户实现的前后处理,执行相同的事件,允许覆盖业务逻辑方法,使用具有可插拔模块的策略,数据可配置过程,例如,规则引擎,脚本等。
列表可以继续,但我问的是谁使用了这些方法的优点和缺点,以及其他方法。
这假设我们不创建客户特定的代码分支来适应这些自定义。
答案 0 :(得分:2)
MS正在为.NET开发两个不同的框架:Managed Extensibility Framework和System.Addin。
应用程序暴露可扩展性的最常用方法可能是通过依赖注入/控制反转与运行时类型解析混合。这意味着,您让外部实体在运行时“注入”接口的实现,而不是在编译时绑定到特定的实现。您的代码不关心您的IRepository是由您的公司还是第三方编写的。通过对接口进行编码并使用DI / IOC框架(this link provides a great overview of .NET frameworks),您可以轻松地自定义应用程序。
答案 1 :(得分:1)
我倾向于构建所有模块化的东西,然后在客户要求时将东西添加到程序中。您可以将其与客户可以控制的应用程序设置相结合,允许他们自己添加和删除模块。在这种情况下,您要做的就是设置默认配置。
答案 2 :(得分:1)
一种方法是嵌入脚本语言(python和javascript似乎很受欢迎),并通过脚本扩展来公开API的重要组块。您可能会发现使用脚本语言实现部分应用程序也更容易。
答案 3 :(得分:0)
对于我使用的产品,由服务组为给定客户或有时由客户自己构建的自定义项将共享给团队的其他成员(我们已经制作的东西)并经常获得在后来的版本中“产品化”。
我们支持[几乎]完全访问的API,可以用来做几乎任何GUI可以做的事情,但是以自动方式。
我们鼓励客户编写自定义脚本,然后与我们分享。通过扩展来增加产品的可用性,无论是正式支持还是保留社区工具,都有助于在您的客户群中建立良好的信誉。
对于我们构建的自定义项目,初始工作虽然向特定客户收费,但可以在其他地方快速实施,允许当前和未来的用户在使用产品时具有灵活性。
答案 4 :(得分:0)
我发现将您的应用程序创建为可从一个良好的嵌入式脚本语言(Lua完全为此创建的模块库)!为您提供了大量的灵活性,不仅对用户而言;但对你自己也是如此。