Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

服务化与组件化

  当项目越来越大,开发人员的数量变得越来越多,业务改动变得越来越频繁,最终项目就会逐渐变成一坨。我尝试过很多办法,也使用过各种框架,但都只是在写代码的时候很爽而已。只有对整个系统服务化,并针对一些可通用但不可服务的东西组件化才可以解决变成一坨的问题。

服务化

  所谓服务,就是可以单独运行,并且对外提供功能的一种形式。将一个复杂的项目分解成多个服务之间的依赖。当某一个服务挂掉时不会拖垮整个系统。如果没有服务化,每当一个新的功能被添加到系统中就会影响到所有功能,整个系统的复杂度就是 n!;如果采取服务化,每个服务只对其上下游的服务负责,那么系统复杂度就可以简化到 n。
  但是服务之间的调用是存在性能开销的,所以服务化的粒度很难拿捏。过度的服务化会让系统变慢,而且服务之间关系的维护成本也会变得很高。至于什么样的粒度才是最好的那就没有固定套路了,必须代入具体项目中思考才行。

组件化

  服务化无法完全解决资源共用的问题,因为并不是所有资源都可以做成单独的服务。比如一个按钮控件之类的东西就需要封装成一个组件让服务去使用它。很多时候,纯逻辑的东西总是可以服务化,不需要用到组件化。比如一个算法函数,我们也许可以部署一个服务器集群来专门计算。但是 UI 相关的东西就无法这么做,所以组件化大多是用于 UI 组件上的。
  组件化的难点在于如何将组件引入系统内?如果是服务化,我们可能可以说是基于某个协议来通信的。比如有个服务在 127.0.0.1 的 8000 端口,使用 HTTP 来通信。但是组件就很难有这么一套标准,只能针对某一种语言开发一个东西来使用。

其它思考

  仔细想想,好像组件和服务并不是同一个层面的东西。也许有一个服务它的功能就是对外提供组件,或者有一个服务是专门管理并提供图片等媒体资源的。虽然会变得很奇怪,但我觉得这才是逻辑最简的方案。
网名:
54.211.148.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^