关于Spring、Nhibrnate、Vue.JS、Node.JS、bootstarp,框架学习后的想法和总结!

咱们活在当前,一个史无前例的时代,一个面向彼此的环境!前端

最近一段时间一直在学习各类框架知识,前端的后端的,如今来总结一下我的的感受和心得!程序员

校务管理系统:数据库

若是咱们如今开始接手一下:"校务管理系统",那么咱们须要作什么呢?后端

1.考虑问题 :安全

  ①:咱们须要管理那些(校务人员、学生、教学环境、图书馆、教务系统、。。。)服务器

  ②:也就是说咱们一个校务管理系统可能要包括多个子系统,框架

2.OK,如今想通以后咱们继续开发,首先选择了咱们熟悉的学生管理做为第一个系统,开始系统原型界面、数据库模型的设计分布式

开发中。。。微服务

开发一段时间以后,咱们发现咱们的进展很慢,怎么办呢?开个碰头会吧,你们一块儿讨论讨论:布局

唧唧。。咋咋。。。

会议室内吵成一锅粥,原型应该这么设计。。。,你这么设计谁看得懂啊 ,要我说,界面应该美观,大气,你大气给谁看啊,那些教授都40多岁了,漂亮有什么用?

问题出来了:

  ①:因为咱们没有良好的沟通交流已经分工,如今你们对于原型界面、系统规范、以及业务调用都处于混乱状态

  ②:因为咱们同一个系统使用的人群不同,可能界面需求须要变动

ok,了解以后,身为组长的我决定,小芳,你是美术出身,你来设计前端,小王,你是计算机出身你来作后台,其次数据库每个表 字段都须要写注释,后台代码也同样

一个页面对用一个后台,

开发中。。。

开发一段时间以后,出现以下状况,王哥,我这个页面怎么出问题了?出不来了报错了,哦!是什么页面,就是排寝那个地方,哦,我在改动代码,你等会啊,那行吧,你快点儿,我刚刚改动了样式,须要看看效果,而后小芳去倒了杯奶茶,等着后台修改完成以后才能继续运行界面(这就是咱们传统的WebForm窗体开发),后台和前端关联太紧密了

怎么办呢?集思广益吧,再开个碰头会。。。

如今咱们开发的进度又满了下来你们说说都有什么问题:

①:东西太多太杂了,谁知道啊image文件夹里面竟然放了JS文件,个人天啊

②:还有先后台太紧密了,人家想改东西都改不了

。。。

OK,了解问题以后咱们去解决这个问题,首先是资源管理的问题,咱们要求将全部的资源文件放入Content文件夹中,引用的第三方文件存放入指定的 ThirdParty文件夹中按名称存放,其次是关于先后台紧密的问题,咱们采用将后台文件当前封装在类库中,而后在编译阶段指定编译的路径,这样咱们后台改动若是不从新编译生成BLL的话,前端界面也就不会收到影响,由于在以前的BLL已经存在对应的后台代码

好的,如今咱们来整理一下咱们如今的系统,比较简洁的主程序入口,由于咱们将资源文件(Content)、第三方插件(ThirdParty)、前端页面(WebUI)都按照功能存放在对应的文件夹中,其次后台代码封装在一个类库中,一样按照不一样的功能模块封装在了各自的文件夹中,看起来很整齐哦

好吧,那咱们再开个朋友会鼓励鼓励你们 :

① : 王哥,你怎么了,耷拉着个脑壳,哎别提了,新来的小赵对咱们业务不熟悉,非的我一把手的交,作东西找目录啊什么的慢死了、

② : 小芳,那你呢 ?哎 别提了,最近数据量比较大,调整样式啊时候须要等半天数据才出来

。。。

ok,继续来总结一下问题,新来的员工对于系统上手速度慢,显得系统过于冗余,其次,数据的增多致使数据访问变慢

咱们这里提出一些观点和思路:

①:系统冗余,因为咱们对数据库的操做频繁致使在后台逻辑业务层和数据访问层中的代码增长,要写一个业务功能,须要观察数据库,找到对应的关联字段,在模型类中添加一个新类,在数据访问层(DLL)--逻辑业务层(BLL)建立各类的新类,在UI层建立对应的页面,而后依次编写代码完善功能。

②:数据库须要优化 分担访问压力

③:系统没有统一的目录,介绍或者说是索引,

解决:咱们在开发的过程当中总结出一些规律(针对于业务而言):

①:前端:角色 、权限; 前端的操做无非是增删查改、在这个过程当中须要两个东西一个是当前操做的用户、操做的信息

②:后台 : 对于数据库的增删查改访问大体相同 好比查询单条数据  查询列表  根据参数查询 添加 修改数据

针对此咱们决定,再开一个小组,准备开发一个新的框架,以适应如今的业务:

①:前端:建立一个新类basePgae(baseController(控制器)) 添加一些默认的操做 建立一个属性id 获取请求中的Requert的Id,添加验证StringNotNull(要验证的字段,字段的名称,字段的长度)、IntNotMax(要验证的字段,字段的名称,该值的最大值);等等,比较重用的方法,尽量的封装在这个类中,在之后的开发过程当中前端页面继承此类便可,在访问修饰符为Private私有时,程序编译后生成BLL文件屏蔽内部信息,比较安全

②:后台:建立一个基类BaseDLL为泛型类,添加Add、Update、Delete、Get 等通用方法,使用泛型<T>获取要操做的类型(对应的模型/数据库对应的表),用反射建立该类的对象实例,根据这个类的信息去操做对应的数据库表,在这个过程当中能够将参数做为一个键值对的集合,进行验证后 将参数拼接到Sql语句中,一样咱们能够为这个操做提供一些重载,必要的分页,获取受影响行数,获取记录总数等等的一些方法,

③数据库:在BaseDLL中开放出数据库链接字符串这个位置,让其能够接受参数传入,达到的效果应该时,个人一个业务程序集也就是类库,脱离于前端存在,不须要依赖前端的配置文件传入数据库链接,

So,如今咱们再来整理一下咱们的系统,系统更新框架后,本来的系统不须要改动(有需求的话能够改动),在继续开发的过程当中,咱们前端人员只须要负责好前端的样式(控件、布局)等等一些东西,可是全部的操做不会基于后台数据,在和后台交互的过程当中会使用开发人员给定的一个访问地址也就是Ajax中的Url,在通常的调用中(通常处理程序、WebServer、MVC)调用中每每咱们须要这样书写URL //网址/路径/访问的访问(Action/标记),所以咱们也能够说是面向接口,工做中人员经常提到接口接口,主要是指一个访问的地址,其次在后台,添加新功能时,须要建立对应的实体类,随后建立Bll层继承BaseDLL就能够得到通用的方法GetList<模型类>()查询全部、GetGetList<模型类>(参数键值对集合)/、Add(要添加的对象)等等方法,而在控制器,或者和前端交互的类库中咱们须要建立一个新类继承basePgae(baseController(控制器)),建立对应前端控件的属性等一些操做(详细请看我以前的随笔,关于框架设计的部分),准备完成后,好比我但愿在添加的时候获取一个对象的信息,咱们能够直接Bll.Get(id);由于基类中咱们定义了Id因此在这里可使用,避免咱们再次从请求Requer中获取,"只有规范的基础才有可能去搭建一个框架,框架也要求咱们在使用时去遵照一些规约"

Ok,继续开发,如今咱们有了新搭建的框架,开发的效率固然也提升了很多,但是生活老是不会让咱们如意,这不前不久数据库出现了奔溃,访问太慢了,所以英明的我决定,"分布式"部署数据库和程序,不过首先咱们要来回顾一下咱们的系统,首先咱们接手了一个校务管理系统,通过讨论后咱们决定先行开发学生管理模块,在这过程当中咱们出现了一些问题,可是都被咱们克服了,可是随着子系统慢慢的完善,集成到总系统中出现了问题,所以咱们决定用分开部署的方式缓解其中的压力,

Lef's Go:

首先让校务管理系统系统部署在个人电脑,固然咱们会购买域名了,可是当你们访问时,实际上是我这台电脑(服务器)为你们服务了,随后当你们访问子系统学生管理时,咱们的程序会去运行我本地的程序集,当须要更新数据的时候会访问到咱们程序员小王的电脑,为何呢?由于咱们在程序集中配置了数据访问层的配置文件,将子系统学生管理数据库链接配置成了小王的数据库,这样请求发送到小王数据库完成后,再返回给我由我来作处理,依次推之,咱们美美哒的小芳当之无愧的获取的图书馆系统的部署,这样一来,咱们就将数据库的压力缓解到了其余的电脑,运行其余电脑的为咱们计算工做!! 我是否是很英明神武啊 (●ˇ∀ˇ●)

哎,我以为本身太棒了,这不前两天省局的人找过来了,说想调用咱们的接口(程序),完成一个图标汇总的功能,要奖励国家奖学金啊,这感情好啊是吧!可是我一想这不行啊,虽然我将数据库的压力缓解了但是程序的运算但是都放在个人电脑的呀,要是为省局这件事,个人系统可能要炸啊:

问题出来了,虽然咱们的程序将数据库部署分开了,可是实际上关于项目的运算都是集中我这一台电脑上的!怎么办呢?有了我使用服务来作这一件事(微服务、服务开发),

为何要用服务呢(WerServer、Wcf、通常处理程序),由于咱们在访问服务时,数据不须要咱们来处理,想一想看,我在百度查询<黄家驹>,并无在我电脑本地运行程序,而后去对应程序集查询而后对应数据库吧,而这一过程显然是交给了百度,谁让人家有钱买得起好的电脑呢(服务器),也就是说我不在使用引用程序集的方式去部署个人校务管理系统系统,而是转用服务的访问,

如今咱们程序运行的方式应该是这样的:登录校务管理系统,一些页面的浏览由我本机提供,但访问子系统图书馆管理时就将这一请求发送到了咱们美女程序员小芳的电脑,小芳电脑的服务器(IIS、Tomacte)接受到请求后开始解析,指定对应的程序集,开始运行判断 访问数据库,返回数据 最后在接处返回

相关文章
相关标签/搜索