转载

我对服务端开发的一些认识

这篇博客主要是承接上篇的博客,继续谈一谈自己对服务端开发的一些认识。当然,在这篇博客里面我不想只是铺陈一些技术框架或者某个技术难点,一是服务端的技术框架太多了,我自己的技术有限;二是大家这样看起来也会觉得很枯燥;

说到自己跟服务端技术的结缘,主要还是由于公司最近一年的HTML5项目。让我自己能够有机会从移动端转到服务端,就像我自己之前一直说的,我一直很希望能够接触到更多地服务端技术。所以这次公司有个HTML5的项目,后端主要是基于java web去开发的,我就自己主动请缨的意思。因为主要的开发IDE还是eclipse,开发语言也还是java,所以在上手开发这块根本就没有什么难度了。最主要欠缺的就是要从移动端的开发思路转变过来,就像上篇博客里面讲的,我一直认为移动端的技术还是非常有限的,做来做去就是那些东西,一个一个项目无非就是重复造轮子了。但是服务端的技术就很有挑战性了,最开始上手的时候,你也许还会对一些服务端的同事经常说到的前置系统、内管系统、高并发、数据库controller层,服务层等相关名词感到非常陌生吧!但是没关系的,这是从事服务端开发的必经过程。这样吧,我们先跟上篇博客一样从一个简单地登录为例说说,服务端开发的流程吧(基于java)!你像现在一个正统的项目系统一般都会包括至少两个展示渠道吧,一个是app,另一个就是web网站。比如刚刚说到的登录功能,在web网站里面会有用户登录,在移动app里面会有用户登录。这两种登录方式除了页面的展示不同之外,其他的方面属性都应该是一致的。不管是用户账户信息、用户权限信息、以及与之相关联的其他信息,都应该是同一套数据。这个时候,你可能就有疑问了。在服务端系统里面他是怎么同时支持两种渠道呢?你一定回答道:这还不简单吗?直接开发同一套项目的接口不就可以了吗?的确是这样的,但是我又要问了:这套接口系统里面,他又是怎样同时支持不同的请求方式(get/post)的呢?在这段系统里面又是怎样保证接口处理流程的完备性呢?最后又是怎样根据不同情况输入不同响应报文给客户端的呢?如果是涉及架构层面的话,可能还有一个值得考虑的事情,就是web网站建设的过程中到底要不要将UI和后台的接口系统进行一定的拆分呢?针对这个问题也许你会觉得比较抽象是不是,你可以这样想象一下:就是一个外面直接穿了一件牛仔外套,这个时候,他肯定会觉得很硬、硌得慌。这个时候如果我在牛仔外套和身体之间在加上一件软软的衬衫呢?是不是就感觉整个人舒服多了?没错,这个例子里面你可以将后面加上去的衬衫想象成接口系统,牛仔外套就是UI,你自己的身体就是服务端最核心的一些东西。通过一件外套我们可以将两个渠道不同情况处理局限在一个系统层面里面。所以不管怎么说一个可以横向模块化的系统,它的生命长度都是非常高的。好了,让我们继续回到刚刚说到的登录功能,我们先通过一个简单地servlet去接受发送过来的渠道请求,我们可以在相关的配置文件里面申明接口的地址信息。比如我们可以将该登录接口申明成login.do,当前名字是可以随便取得。这个时候如果我们在本地环境里面进行相关的测试的话,我们就可以通过输入:http://localhost:8080/项目名/login.do,完成这个接口的请求了。当然,如果我们直接将上面的地址在浏览器里面输入的话,我们最多完成的就是一个get请求是不是?那么在这个servlet里面又是怎么区分get/post请求呢?说到这个问题,将是初学者最不用担心的问题了,为什么呢?因为本来一个servlet里面就已经继承了httpservlet了,通过这种方式,它就已经提供了两个实现的doget,dopost方法了。通过这两个方法,当不同的请求到来的时候,sdk里面的一套机制就可以区分不同的请求方式了,然后进行相关的分配了。好了,到这里我们基本处理好了接口请求的任务了。接下来,我们应该做些什么呢?是不是需要针对请求的报文信息做一定的验证处理呀?答案是一定,比如字段是不是为空?传输过程中,我们可能为了安全性,对密码加密。这个时候,我们也需要在服务端使用项目的加密机制,进行密码的相关对比验证了。当校验通过之后,还有什么呢?没错还有最重要的一块就是连库对比该账号是不是已经注册,能够登录我们的系统了。哈哈,这个最头痛的事情来了,数据库操作。难道我们应该将数据库操作也放在接口系统里面呢?如果数据库操作发生错误我们又应该怎么办呢?你可以想象如果是银行系统里面,如果数据库操作也发生错了,那么影响将是非常严重的。好吧,因为到现在为止我们还没有介绍到其他相关的服务端开发框架技术,所以我们暂且将数据操作也放在接口系统里面了。当我们连库查找之后,根据用户存在与否,回应code,msg报文就可以了。到这一步的话,我们整个登录操作的流程才算真正的完成了。从移动的请求发送,到服务端的接口应答,整个系统的流程都完成的串起来了。是不是有一种顿时打通了任督二脉的感觉呢?别急,这还只是非常初步的知识呢?下面让我们来看看现在java服务端开发现在使用比较多、比较稳定,然后针对不同的项目需求,我们可以选取不同框架比较轻松的完成项目的开发任务。

现在java服务端平台比较主流无非就两种框架了,一个是ssh,当然后来也出现了变形框架ssm;另外一种就是springmvc;这两款框架都是比较成熟、稳定了。可以适用于比较大型的商用项目。下面让我们细细讲一下,这两款框架到底包括哪些东西呢?两者之间又哪些区别呢?首先让我们来说一说ssh,ssh其实是三款框架的缩写,分别是:spring/struts/hibernate。首先是struts框架主要是负责拆分mvc模式,而hibernate是用来做什么的呢?主要是为了用来进行数据库操作的,负责持久化这一层。spring则主要是为了管理整个项目架构的。那么后面出现的变形ssm又是指的什么呢?其实ss还是原来的那两个ss,但是h已经变成了现在的m,m主要指的是mybatis框架,就为了代替hibernate进行持久化操作的。另一矿springmvc呢?看这个名字就知道已经在原来的spring框架的基础之上实现了mvc框架了,所以在这个框架里面就不再需要struts了,当然持久化的工具还是需要的。如果你想知道这两款框架到底是怎么配置工作的呢?好吧,其实配置起来还是非常麻烦的,具体就不细讲了。

当然如果我们进行开发的项目不是商业上面的那种大项目,对数据的安全性、高并发行要求都不那么高的话。那我还可以推荐一款比较好的国产框架Jfinal,这款框架的主要优势是什么呢?配置非常简单,一两天即可上手开发。比如,现在如果我们有一个针对微信平台的html5项目,这个时候我们完全就可以采用这款框架进行急速开发,再加上web前段一些比较好的框架,我们可以很好地完成开发任务了。

好了,今天先这样吧,后面我会整理一些demo,还有web前段的一些技术,see you!

正文到此结束
Loading...