标签:
前后端分离,本质是关注点的分离。软件越来越复杂,需要有人来专注于表现和交互,有人专注于领域逻辑。于是前后端分离出现了。前端关注交互体验,这些看得到摸的着的部分。后端关注于表达正确的业务。有争议的地方就在于controller这一层应该放到前端还是后端。并且随着前后端分离,前后端的协作问题就暴露出来。
这样的项目可以从职能上分为两个部分。
tips:服务接口和业务接口只是为了区分做的事情不同而已。可以简单的理解为离数据库的远和近。离数据库越近,粒度越粗,通用性越好,离数据库越远,越靠近变现层,会更具体,粒度更细,通用性越差。这里服务接口是更靠近数据库。考虑如下的过程:
db(net ram file mq) -> po(持久化) -> do(领域建模) -> bo(业务模型) -> dto(传输对象)
和公司的情况有关系,如果公司没有专业前端,那么选择controller前置的策略。进行项目的拆分,分出服务和应用。技术实现上前端可以选择基于spring mvc(ruby python或其他)的全栈或者基于NodeJS的新的全栈方式。
如果公司有专业前端。那么初期选择controller后置的方式,会是一个自然的选择。以后的进化可以选择NodeJs的全栈开发方式。实现服务和应用的分离。
对于后端人员的JS之路,需要了解浏览器排版规则,浏览器诡异bug,以及各种黑暗魔法,其挑战不可谓不大。而对于前端开发人员的NodeJs之路,需要学习应用开发中的复杂性和各种坑点。这和单单做页面完全是不一样的东西,其挑战性甚至比后端人员学习JS更大。
然而技术归技术,好的交互并非只有技术就够了。预想会有三个只能规划:
标签:
原文地址:http://my.oschina.net/honchy/blog/403521