当前位置:  开发笔记 > 编程语言 > 正文

如果要创建具有模块化的应用程序,最佳资源是什么?

如何解决《如果要创建具有模块化的应用程序,最佳资源是什么?》经验,为你挑选了1个好方法。

在我对较新的Web平台/应用程序(如Drupal,Wordpress和Salesforce)的分析中,他们中的许多人基于模块化的概念创建了他们的软件:开发人员可以创建新的扩展和应用程序而无需更改"核心"中的代码"由主要开发者维护的系统.特别是,我知道Drupal使用了一个"钩子"系统,但我对实现它的引擎或设计知之甚少.

如果您要沿着创建应用程序的道路前进,并且您想要一个允许模块化的系统,那么您从哪里开始?这是每个人都知道的特定设计模式吗?是否有这个范例倾向于订阅的手册?他们的网站是否从头开始讨论这种类型的开发?

我知道有些人直接指向OOP,但这似乎并不完全相同.

我正在计划的这个特定系统更倾向于像Salesforce这样的东西,但它不是CRM系统.

为了解决这个问题,请忽略Buy vs. Build参数,因为该考虑已经在进行中.现在,我正在研究构建方面.



1> Vinko Vrsalo..:

这里有两种方法,一种方法取决于软件的行为方式.

一种方法是插件 路由,人们可以在应用程序中安装新代码来修改相关方面.此路线要求您的应用程序可以安装,而不仅仅作为服务提供(或者您安装和审查第三方发送的代码,这是一场噩梦).

另一种方法是提供一个API,可以由相关方调用,并使应用程序转移控制到位于其他地方的代码(一个Facebook应用程序)或使应用程序执行,因为API命令使开发人员(谷歌和谷歌)地图).

即使机制各不相同以及如何实际实现它们也有所不同,但无论如何都要定义

我会让用户有什么自由?

我将为程序员提供哪些服务来定制应用程序?

而最重要的是:

如何在我的代码中启用此功能,同时保持安全性和健壮性.这通常通过沙箱化代码,验证输入并可能为用户提供有限的功能来完成.

在此上下文中,钩子是代码中的预定义位置,用于调用所有已注册插件的钩子函数(如果已定义),从而修改应用程序的标准行为.例如,如果您有一个可以渲染背景的函数

function renderBackground() {
    foreach (Plugin p in getRegisteredPlugins()) {
        if (p.rendersBackground) p.renderBackground();
    }
    //Standard background code if nothing got executed (or it still runs, 
    //according to needs)
}

在这种情况下,你有一个插件可以实现的'renderBackground'钩子来改变背景.

在API方式中,用户应用程序将调用您的服务以获取渲染的背景

//other code
Background b = Salesforce2.AjaxRequest('getBackground',RGB(255,10,0));
//the app now has the result of calling you

这也与好莱坞原则有关,这是一个很好的应用,但有时它只是不实用.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有