python构建基于服务的架构(1)

我希望的基于服务的架构特征:

  • 可以在任何地方以方便的方式调用服务. 例如:
from services import service
service.sHelpler.run()
  • 服务之间可以互相调用. 比如服务A可以调用服务B的某个功能, 反之亦然.
  • 服务支持单例模式和多例模式
  • 支持服务的序列化
    之前有一篇博文python利用依赖注入实现模块解耦, 可以帮助实现这个架构.
    但是稍显复杂, 需要传入字符串形式的模块路径和类名.

替代方案

可以采用比较直接的方式, 把所有的服务对象集中到一个模块中, 如下所示:

from services.a import A
from services.b import B

class Services:
    def __init__(self):
        self.sA = A()
        self.sB = B()
    @property
    def mA(self)->A:
        return A()
    @property
    def mB(self)->B:
        return B()
    
service = Services()

然后, 在另一个模块中, 按需加载即可, 如下所示:

def service():
    from services.services import service
    return service

对于用户, 就可以使用这些服务了:

from xxx import service
service().sA.test()
posted @ 2025-01-09 14:34  顺其自然,道法自然  阅读(17)  评论(0)    收藏  举报