代码改变世界

前端与后端分离的架构实例(二)

2014-02-17 10:28  麦舒  阅读(6546)  评论(28编辑  收藏  举报

前几天,写了一篇名为《一个前端与后端分离的架构实例》的文章,在那篇文章里,以一个真实的项目作为实例。现在接着再谈谈我对于前端与后端分离一些新的想法。

对于我来说,理想的架构是,后端提供各种各样的服务,而前端只要把这些服务给整合起来,就变成一个客户所需要系统。但是,实际上在整合的过程,都需要泛及到后端的开发,我期待是后端涉及到的改动是尽可能的少。

当一个系统是基于前端与后端分离这种模式来进行来发的,通常来说,这种开发模式使得整个开发的环节变长了,这将导致整个开发团队(包括前端与后端开发人员)的开发失去了灵活性,因为一点点小功能的改动,很有可能都需要好几个人来进行协作开发。

举一个例子来说,如下图所示,如果要添加一个地址的字段,我们来看看整个开发流程是怎么样的。首先,前端人员要找到后端开发人员,告诉他需要添加一个字段,后端开发人员确认后,然后在数据对应的表里加了这么一个字段,接着生成 Model,然后测试一下,再告诉前端人员,前端人员进行开发。从这里我们可以看得出来,添加字段一个如此简单的功能,整个流程走完,最少也得一个小时,这是理想的情况。碰到不理想的情况,拖个几天也是有可能。

数据的提交

我一直在想,能不能把这个环节给缩短了,从于提升整个开发团队的效率。对于前端开发人员来说,他只关心这个字段能不能保存起来,并且能读出来就行了,致于保存到哪里,数据库还是其它什么地方,他是不关心。那么,后端能不能自动把这个字段给保存起来呢?

前端开人员提交的数据:

{
    UserName: 'administrator',
    Address: '上海闸北'
}

数据的保存

后端在接收到前端人提交上来的数据后,对字段进行逐个判断,如果实体类里面没有对应属性的,比如说没有"Address"这个属性,那么这些属性将会以键值的方式来储存,比如说可以使用 NoSQL 数据库来保存。

数据的读取

数据的读取是首先从关系型数据库把数据给读取出来,然后再从NoSQL数据读取对应的键值对(假定数据保存在非关系型数据库里),然后把数据给整合起来返回到前端。

实体的保存

对于一些简单的,非核心的业务,我们完全可以在前端来实现,比如说,选座位的这么一个功能,类似似于团购电影票的时候,进行座位的选择这么一个功能。这种功能非常简单,但是,泛及到实体类的添加,同样,我们也可以采用使用 NoSQL 数据来保存这些数据。

安全性

对于我们系统来说,由于前端是使用 JavaScript 来编写的,上面这种做法使得整个系统的安全性变得很脆弱,很容易在数据库中注入一些数据。所以还需要保证,每个用户只能够对自己的数据进行处理。关于这个问题,我们以后再具体谈谈。

 

招聘前端初级开发人员:懂 JQuery、JQuery UI、JQuery Validate、Knockout JS 等JS 框架,略懂 Linq to SQL,能阅读文档,根据文档示例写代码(欢迎勤奋好学的毕业生)

地点:上海市闸北区

网站:http://www.vknew.com/index.html