Questions tagged «modularization»

5
从另一个微服务“拥有”的数据库中读取数据为何如此糟糕
我最近阅读了有关微服务体系结构的出色文章:http : //www.infoq.com/articles/microservices-intro 它指出,当您在Amazon上加载网页时,则有100多个微服务合作提供该页面。 该文章描述了微服务之间的所有通信只能通过API。我的问题是,为什么这么糟糕的说法是所有数据库写操作只能通过API进行,但是您可以自由地直接从各种微服务的数据库中进行读取。例如,可以说微服务外部只能访问少数几个数据库视图,以便维护微服务的团队知道只要保持这些视图不变,那么他们就可以尽可能多地更改其微服务的数据库结构。想。 我在这里想念什么吗?还有其他原因为什么只能通过API读取数据? 不用说,我的公司要比亚马逊小得多(并且一直会这样),我们可以拥有的最大用户数约为500万。

2
将大型Angular 2应用与其中的多个小型应用组合
经过3个月的辩论和研究,关于在React(与Redux)和Angular 2之间进行选择的研究,我公司的前端团队最终决定采用Angular 2(因为它更适合我们的问题)。 我们正在从事企业应用程序业务,该业务目前由许多不同的前端技术组成(同时拥有整个后端RESTful),我们希望将其全部替换,并拥有一种技术来简化将来的培训和质量控制。 鉴于我们产品的性质,产品范围很广,并且其中包含模块,这些模块本身是不同的域,可以作为独立的应用程序制作,但产品本身位于单个URL中。 例; 我们将我的产品称为SuperApp。 作为UI,SuperApp具有标准的登录系统,并可以导航到子模块/子产品,因此工作流如下所示。 超级应用 验证用户 忘记密码向导 无需身份验证即可访问公共页面 认证用户 导航系统 家 子产品1 子产品2 子产品3 轮廓 ... ... 团体 ... ... 请注意,在以上表示中,Sub-product1和Sub-product2是两个完全不同的领域,具有完全不同的业务领域。 我现在可以想到的是,我可以将SuperApp创建为单个Angular 2项目,仅包含与其自身相关的组件和视图,并且SuperApp还负责加载多个子应用程序;Sub-product1,Sub-product2(同样是不同的Angular 2项目,它们都有自己的package.json,webpack配置等)通过哑组件,并充当提供顶级路由的Shell和占位符来容纳这些子应用。 有一次,Sub-product1在壳体内加载时,它会自己的路由附加到当前路由SuperApp在已经登陆。 我想要分离的原因是因为这些不同的应用程序(当前使用ExtJS构建)具有专门的团队(我们是一家拥有500多个开发人员的公司),因此,如果他们拥有自己的Angular项目,则可以管理其工具并依赖于他们的喜好,而无需依赖父级父级应用。 但是我无法在官方的Angular文档中或网上找到任何地方是否可以嵌套Angular应用程序(以这种方式共享框架代码,而完全隔离子应用程序的依赖项并仅在应用程序加载时需要),或者是否有其他替代方法可以解决此问题。 任何指导,甚至任何相关文章的链接,将不胜感激。

6
当Dijkstra写关于关注点分离的文章时,他是否打算进行代码模块化?
首先,我阅读了摘自Edsger W. Dijkstra 1974年的论文“关于科学思想的作用”: 让我尝试向您解释,我的品味是所有明智思维的特征。就是说,一个人出于自己的一致性而愿意独立地深入研究其主题的一个方面,一直都知道一个人只在其中一个方面中占据一席之地。我们知道一个程序必须是正确的,我们只能从那个角度研究它;我们也知道它应该是有效的,可以这么说,我们可以在另一天研究它的效率。在另一种情况下,我们可能会问自己,是否这样做:为什么,该程序是理想的。但是,通过同时处理这些各个方面,则无济于事!这就是我有时所说的“关注点分离”,即使不是完全可能,据我所知,这是有效地整理思想的唯一可用技术。这就是我所说的“将注意力集中在某个方面”的意思:这并不意味着忽略其他方面,这只是正视这个事实,即从该方面的观点来看,另一方面是无关紧要的。它同时是一轨和多轨。 我看到关注点的现代分离正在谈论将代码模块化。但是,阅读上面的引用后,我理解这是一次将您的注意力集中在一项特定的任务上,而不是将精力集中在其他方面。在我看来,这并不意味着必须将代码分成模块化的块。 也就是说,在您面前有一个代码,即在一个文件中的所有文件都包含视图,存储库,控制器,事件处理,工厂等概念。 作为一个简短的示例,下面是一些具有数据访问权限并查看(输出)的代码: $sql = "SELECT * FROM product WHERE id = " . db_input($id); $row = db_fetch_array(db_query($sql)); <option value="<?=$row['id']?>"<?= $row['ver'] == $row['ver'] ? ' selected="selected"' : '' ?>>Version <?=$row['ver']?></option> 使用现代的OO,我可以使用Repository模式将数据访问放在其自己的文件中,View代码可以进入其自己的文件模板,并且可以将它们连接在一起以通过控制器(或Action或Request Handler)进行通信,并且我可以添加一个工厂来创建和连接各种依赖项。我可以有一个定义这些工厂的配置文件。当然,这与单一文件的一切相去甚远。 我关于关注点分离的问题是这样的:阅读Dijkstra的报价,我有一个想法,即他不一定意味着关注点分离是“代码的模块化分离(到文件或它们自己的函数/方法/等)中”,而且他的意思还在于让人们将注意力集中在程序的某个方面,而不用专心于其他重要但目前尚未考虑的方面,而无论它们是否在代码中物理上分开。 那么为什么我们要负担物理模块化代码分离和设计模式呢?不管代码的结构如何,仅将精力集中在一个方面是否足够? 我不是在谈论编写最可怕的意大利面条代码,然后只考虑它的一个方面,这很可能是一种负担。但是最后,我要解决的是,当不需要在精神上专注于某个方面时,为什么要执行物理代码分离,为什么要将代码拆分为分离的文件或块(方法)? 关注点分离应该仍然是一种心理锻炼,而不是身体锻炼吗? 换句话说,编程的精神(专注)和物理(纸上代码)方面是否应该脱节?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.