跳转到主要内容

PyoC是Python项目的IoC容器

项目描述

介绍

这是PyoC的组页面。这个组的目的是讨论PyoC的新特性,并在用户和项目开发者之间建立一个开放的沟通渠道。

PyoC是Python的IoC容器。它的目的是使管理组件之间的依赖关系变得更加容易(在Python中已经很方便了)。它主要面向约定优于配置的方法。

PyoC架构

让我们尝试理解PyoC是如何工作的,以及其背后的概念。

让我们先看一张图,因为图片胜过千言万语! :)

http://farm4.static.flickr.com/3528/3289725178_cd201f8e85.jpg?v=0

在上面的图中,你可以看到PyoC的两个主要方面。

第一个是配置,它负责确保容器理解您的依赖关系。如图所示,您可以使用更方便的ConfigurationFactory。PyoC随附InPlaceConfig和FileConfig(截至版本0.1)。

第二个是依赖关系解析。IoC容器的好处在于它为您处理了无聊的基础设施代码,如实例化类、管理它们之间的依赖关系等。它还允许您在不更改代码的情况下热插拔一个实现到另一个实现。

让我们以图中的给定依赖关系图为例。它大致对应于以下代码

class A(object):
    def __init__(self, b, c, d):
        #assigns and does something

class B(object):
    def __init__(self, e):
        #assigns and does something

class C(object):
    def __init__(self, e):
        #assigns and does something

class D(object):
    def __init__(self, f):
        #assigns and does something

class E(object):
    def __init__(self, g):
        #assigns and does something

class F(object):
    def __init__(self, h):
        #assigns and does something

class G(object):
    def __init__(self, some_param):
        #assigns and does something

class H(object):
    def __init__(self, some_param):
        #assigns and does something

哇,这是一个深层结构。嗯,但并不完全是这样。如果你真正深入研究组件如何在你的应用程序中交互,你很快就会意识到这仅仅是一个非常简化的表示。不过,让我们创建一个类A的实例。

a = A(b, c, d)

嗯…等等…我们还没有b、c和d呢。让我们改进一下,创建它们。

b = B(e)
c = C(e)
a = A(b, c, d)

糟糕,我们没有e…你明白我的意思,对吧?

这是获取A的完整代码版本。

h = H("some message")
f = F(h)
d = D(f)
g = G("some message")
e = E(g)
b = B(e)
c = C(e)
a = A(b, c, d)

看起来不太好,对吧?如果你能这样做呢?

a = IoC.resolve(A)

这不是魔法,我的朋友。这是PyoC。上面你看到的是依赖解析机制在工作。PyoC可以根据你做的配置为你创建实例并填充它们的依赖。

等等?什么?哦,你是对的!我从未展示过任何配置。

让我们检查一下上面的场景的InPlaceConfig。

config = InPlaceConfig()
config.register("b", B)
config.register("c", C)
config.register("d", D)
config.register("e", E)
config.register("f", F)
config.register("g", G)
config.register("h", H)

“你在开玩笑吧,对吧?”其实并没有,亲爱的读者。就是这样。只要你的类在构造函数中使用register函数的第一个参数指定的属性名作为参数名,你就没问题了。

我知道这有点难以消化。更多内容将很快作为博客文章/文档出现。

现在最好的例子是可以在源代码中找到的测试用例。

项目速查表

项目Google Groups页面 - http://groups.google.com/group/pythonioc

项目约定: http://groups.google.com/group/pythonioc/web/conventions

链接和博客文章: http://groups.google.com/group/pythonioc/web/Links%20and%20Blog%20Posts

项目JIRA(问题和版本管理) - http://jira.stormwindproject.org:8080/browse/PYOC

项目Subversion服务器: http://svn.stormwindproject.org/svn/PyoC/Trunk/ (svn co http://svn.stormwindproject.org/svn/PyoC/Trunk/ PyoC)

PyPI页面: http://pypi.python.org/pypi/PyoC/

当前版本文档: -

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

PyoC-0.1.1dev.tar.gz (18.3 kB 查看哈希值)

上传时间

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面