其他分享
首页 > 其他分享> > 后端的 3-tier archtecture

后端的 3-tier archtecture

作者:互联网

什么是3-tier archtecture?

后端开发中,因为每个层次的职责定义不一样,每个层次涉及的知识不一样,为了更好的解耦程序,隔离关注点,使得每层能够关注每层的point,处理不同的事情.常见的就是三端分离结构,程序员们提出了数据层,业务层,表示层的概念.这里会有疑问,为什么不用layer,大概tier 有垂直的含义.当然,在计算机概念中,分层概念比比皆是,比如网络中的OSI层次.

    这里又有个疑问,既然三层都各司其职,都关注自身的事情,什么东西能够让他们三个串在一起,答案是实体,这里引用参考的描述,

Entity在三层架构中的作用:

但是对于大量的数据来说,用变量做参数有些复杂,因为参数量太多,容易搞混。比如:我要把员工信息传递到下层,信息包括:员工号、姓名、年龄、性别、工资....用变量做参数的话,那么我们的方法中的参数就会很多,极有可能在使用时,将参数匹配搞混。这时候,如果用实体做参数,就会很方便,不用考虑参数匹配的问题,用到实体中哪个属性拿来直接用就可以,很方便。这样做也提高了效率。

数据层

对数据库进行的基本操作.可以直接访问数据库,文本,字符串,xml,excel。一般来说都属取原始的数据,何为原始数据可以理解为不经过任何加工的数据,但是不绝对。

数据库数据,简单写个思想

# encoding: UTF-8
from elasticsearch import Elasticsearch

class Data(object):
    def __init__(self):
        self.es = Elasticsearch(....)

    def updates(self):
        self.es.update(...)


表示层:

负责数据的接收以及结果的返回。

举个简单例子,用户存钱,当他存完钱,后端业务层处理完后会输出表示结果。

class Ui:

    def __init__(self):
        self.business_logic = BusinessLogic()

    def get_product_list(self):
        account_1 = self.business_logic('小明', '248252543', 4932.13)
        account_1.deposit(400)      # 存钱
        account_1.withdrawal(300)   # 取钱

业务层:

对于数据层获取的数据进行业务相关的逻辑处理,满足业务需要.什么是业务逻辑,比如说对于银行,用户的存款,取款操作,数据的处理就是业务逻辑.

举一个简单的列子,一个客户需要在银行取款机上取钱,当他输入完金额后,后端业务层会首先到数据层查该用户的余额,数据层返回查询结果后,业务层会根据余额判断用户是否能取钱,并且对于余额进行操作。凡是根据业务处理数据的都是业务层的功能。

class BusinessLogic:

    data = Data()

    def __init__(self):
        pass
    

    def deposit(self, amount):
        '''
        存钱
        '''
        pass

    def withdrawal(self, amount):
        '''
        取钱
        '''
        pass

注意点:

分层的边界的划分.需要更进一步研究DDD领域模型

优缺点:

待说

参考:三层架构详解 | 菜鸟教程

标签:__,实体,archtecture,self,端的,tier,三层,数据,def
来源: https://blog.csdn.net/cwcww1314/article/details/120244788