服务分层和SOA的初衷是什么?
抛开实际业务来谈架构,就是耍流氓
现在一提到电商网站架构,首先想到的就是SOA服务化
仔细想想,我们SOA的目的是什么,SOA的粒度怎么掌握(换句话说就是怎么去抽象一个服务)以及SOA以后,服务的上层怎么去分层?
先谈谈SOA。我们平时写代码,会各种抽象,其实我也思考过抽象的目的是什么?想了许久以后,得出了一个结论,抽象的目的是为了划分实体的边界,尽可能的让代码可以复用,以及增加代码的可读性。
而SOA我觉得和抽象的目的其实是殊途同归的。SOA最主要的目的就是划分服务的边界,提高服务的复用率(也包括以后扩展性)。
SOA以后,我们必须要在基础服务上面加一层,来组合这些基础服务。这个时候就有分歧出现了。在服务上面是加一层还是加两层。我觉得在前期的时候业务不是很复杂的场景下完全可以用一层。随着业务发展,发现在这一层业务变得越来越复杂,为了增加代码的复用率,组合服务之间的调用关系就会变得越来越复杂,这个时候就可以把这一层变成两层,抽出一些公有的逻辑,让抽象层次更加分明。
不管是SOA还是服务分层,就是一个抽象过程。而在这个抽象过程中会涉及到抽象层次的划分和抽象边界定义
相关阅读:
商城中如何确认此订单为这个人的第一个订单?
关于LNMP的权限问题
Android AndroidManifest 文件中 改变程序主入口的问题。
将addEventListener改成attachEvent,在IE8/IE6里面不能执行?
struts2+Spring+ibates中使用了velocity,怎么配置sitemest?
PHP:file_get_contents字符串结果查询
请教一个问题,第三方分享网页怎么判断分享成功或者失败?
从一个 HTTP 请求找出必需的最少参数
python爬虫下载文档
flex现在的兼容性如何
DIRECTORY_SEPARATOR其实都可以用 /嘛,windows也支持
线程同步和异步的区别?IOS中如何实现多线程的同步?
请问php如何快速的根据字符串进行数组访问.
想把之前写的单机版 windows 软件改成网络版,让每个用户可以注册并登录。类似 qq 的登陆,怎么架设服务器呢?
使用AngularJS 封装函数和使用Javascript 原生函数有什么区别?
网页前端代码显示控件是如何实现的?
webstorm 能不能修改注释风格
vscode 前端必备插件有那些 求大神推荐
在 git bash 里运行 java 命令,打印出的中文显示乱码
js正则匹配字符串里单引号的内容?