近期,想建设个人博客的想法愈加强烈,然后还延伸了一个管理系统的设计思路与业务需求。
从系统架构方面呢,前端数据处理使用 Vue + WebService服务 的方式解决,或者使用一般处理程序、API等;后端使用三层,自己使用的比较熟悉,而且逻辑分明,在现在这个年代了,三层来说却是老套了,也可以使用MVC,以及其他更具有时代新技术的方式!
对于个人博客来说,访问量并不大,在技术上要求也不大,在企业级的软件程序上,对这些的处理就要有很大的区分了。
可以这样说,合适的才是最好的!
例如打个简单的例子:你用一些特牛逼的技术做出了软件,但是客户想要使用,得升级设备,这样就会考虑成本。原本使用Win7的系统,但是你得Win10才用的好,不然存在bug,就会有点考虑。当然了,这比方不一定正确,主要是思想层次。
那么,对于我这建设个人博客该如何设计呢?以三层方式:
1、首先我使用三层,UI、BLL、DAL 三层,在具体的时候也可以再加,比如:UI与BLL直接加一层,作为一个系列的BLL入口;BLL 接 IDAL,接口层,处理其他地方调用的业务。
1.1、基础的层级:
1.2、UI层:
UI层的主要作用是接受用户的请求以及返回数据,为客户端提供应用程序的访问。简单说就是把你想要给别人看的东西显示出来(额,貌似也有歧义,整个程序上也就是这功能了,只是区别于只是显示反面了)。
UI 层显示接收数据后,调用BLL层的方法处理数据
在有的书籍上,有说道:“分层开发的系统能让开发人员只关注整个结构的某一层”,个人感觉并没有达到他所说的,更接近的还不如MVC的隔离开发。一般想要更换新的实现,都会新建方法,或者更换方法,只保留名称而已。好比两个地方调用了同一个BLL,但是又不要两个都改,只是一个做修改,那么,此时就需要做个新方法区分,实现这个需求!导致开发成本变高(时间上),此时,UI掉的BLL方法修改,同时带动DAL的新建。当然,在同步修改时,就得到了很大的优势,我只要修改一部分即可。
1.3、BLL 层 (业务逻辑层)
BLL层主要调用DAL,然后返回结果给UI表示层。之前有说过,UI与BLL直接可以加层,好比App,主要就是因为业务的问题,可以更好的区分,作为一个入口(到时候打出App,然后 ‘.’ ,就可以自动带出下一层级的方法,根据你的记忆,也可以很容易的找到方法;对于接触别人的项目,也可以根据软件名称设计规范进行寻找,极大的加快了速度;至于我们的博客,业务就几个的话,自己也记得住,并且由于是自己项目,那种了如指掌的感觉还是挺66的),这一层也是三层架构中“高聚合,低耦合”的关键层!
1.4、DAL 数据访问层
DAL层主要是连接数据库的,执行CURD操作。
如果要加入 ORM 的元素,就会包括对象和数据表之间的Mapping 及对象实体的持久化。为了能够屏蔽数据库的差异,使系统能够适用于各类数据库,可采用抽象工厂的模式,为各类数据库建立一个抽象类抽象工厂(AbstractFactory)类。通过配置文件,可以切换系统采用的数据库类型,有利于系统的移植。在这一点上,我觉得对于我们来说最重要的不是这个,而是我们可以在一个事情上,再连接另一个数据库,进行数据处理(理论)。然后我们再嵌套事务的处理,就可以同步两个操作结果。
1.5、Model层 模型层
对于这个层级,个人感觉也不算很正式的层级,他只提供一个类,在EF建模上,也比较单一。当然,一个好的model层,你会发现你处理数据也是很快的,然后也能较好的保护数据库
2、提高性能:
2.1、在较高Web项目的运行中,需要考虑系统的并发性(三高都可存在),这使用采用缓存就是一种简便的处理机制,空间换时间的技术,能有效的缓解数据库压力。
2.2、另外就是安全性:一个简单的项目,基本就能被攻击奔溃(之前朋友做过,然后攻击了后网页加载不了,服务器CPU占比接近100%,你懂的.)
除去这类攻击,还有就是掉你的方法、API、接口之类的篡改数据,这时候我们最好要有人员权限、数据库访问权限等隔断他的处理
接着就是正常的系统bug,对于这问题,其实是最好的情况了。我们可以进行日志记录,收集bug访问调用的时间,方法,更准确、迅速的找到问题说在。
还有更多的方法能解决,也有跟多的方法能攻击你的网站!
最后,再说点闲外话:
随着这个时代的发展,互联网的业务是非常变化无常的,
新鲜事物的崛起,老旧事物的没落,物竞天择!
对硬件、软件、编程语言、数据库、安全 等等等各个方面领域又有了更高的要求,对系统软件设计,我们开发人员也有更高的要求了
加油吧!骚年!