Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用DDD和Python的大型服务器应用程序?_Python_Dependency Injection_Domain Driven Design - Fatal编程技术网

使用DDD和Python的大型服务器应用程序?

使用DDD和Python的大型服务器应用程序?,python,dependency-injection,domain-driven-design,Python,Dependency Injection,Domain Driven Design,我们是一家python商店,正在准备构建一个大型服务器应用程序 为了有效地对逻辑建模,我们计划使用DDD,包括诸如域事件、规范、存储库等战术模式 洋葱架构是否适用于python? python中的抽象能力是否足够 从技术上讲: 我做了一些研究,发现没有流行的DI容器,实际上DI在Python中被认为是一种不好的做法,考虑到DI是我习惯于在应用层实例化复杂对象的方式,这似乎很可疑 从建筑角度来说, python(CPython)中没有内置的多线程支持。 python提供的协作多线程模型可以满足单线

我们是一家python商店,正在准备构建一个大型服务器应用程序

为了有效地对逻辑建模,我们计划使用DDD,包括诸如域事件、规范、存储库等战术模式

洋葱架构是否适用于python? python中的抽象能力是否足够

从技术上讲: 我做了一些研究,发现没有流行的DI容器,实际上DI在Python中被认为是一种不好的做法,考虑到DI是我习惯于在应用层实例化复杂对象的方式,这似乎很可疑

从建筑角度来说, python(CPython)中没有内置的多线程支持。 python提供的协作多线程模型可以满足单线程体系结构的需要,并提供扩展选项。还是这样

在投入之前,还有更多的挑战和值得考虑的事情吗

底线是: 有没有人有过在Python中使用DDD实现大型企业应用程序的经验? 或者我们应该坚持使用.NET/Java,并保持安全

提前感谢,,
Erik.

不确定,但听起来你可能是这个组织中的一名新员工,来自一家java/.net商店(“…考虑到DI是我习惯于在应用层实例化复杂对象的方式,这似乎很可疑…”

记住

  • 几乎在任何编程语言中都可以使用干净的设计进行DDD

  • 请看由演示的视频。基本上,提出的主要观点是解决方案的可伸缩性取决于架构和设计选择,而不是编程语言或平台

  • >P>也考虑使用Python构建,在考虑任何C优化之前缩放到100万个用户。

净收入

从产品开发的角度来看,您通常不希望使用“新”技术将任何关键路径项目置于风险之中。新可能意味着对市场来说是新的对团队/组织来说是新的。在这种情况下,基于您文章的第一部分“我们是python商店“,我至少会尊重您内部团队的专业知识,并利用您现有团队的核心能力。与重新培训员工使用其他技术平台相比,您的项目风险更低,上市时间更快

如果您能原谅(a)无耻的自我推销和(b)恢复旧线程,我的同事Bob和我写了一本书,关于用Python做DDD和DDD相邻的“东西”:

(O'Reilly,但可以免费在线阅读全部内容)

回答您的问题:

  • 洋葱架构是否适用于python?python中的抽象能力是否足够
当然。本书讨论了实现洋葱/端口和适配器/干净体系结构模式的方法。我把关于“抽象能力”的问题看作是对Python的动态特性和缺少正式接口的担忧?但事实上,这些都不是障碍。如果你想要像接口一样的东西,ABC和新的
打字协议就在那里,但是你可以不用它们

  • 我做了一些研究,发现没有流行的DI容器,实际上DI在Python中被认为是一种不好的做法
在Python世界中,DI有时会受到一些怀疑,但我不会说人们认为它本身就是一种不好的实践。在本书中,我们提供了一点辩护,并讨论了优缺点,同时展示了“滚动您自己的”DI(Mark Seeman称之为“纯DI”或“穷人的DI”)的方法,以及一些指向Python DI库的指针

  • 底线是:有没有人有过在Python中使用DDD实现大型企业应用程序的经验?或者我们应该坚持使用.NET/Java,并保持安全

我们做到了,结果很好!因此,如果有人在想这个问题,就投入其中,加入到乐趣中来吧!:-)

关于你提出的观点:1。我同意,所以我问是否有人有python的相关经验,提前知道可能会出现什么问题。。。尝试使用python利用DDD时出现的问题。2.“由架构决定”-没有多线程限制可用架构。。。所以我再次问,以前是否有人做过?“设计选择”*无DI。*python中的洋葱架构?*将域/应用程序/技术服务分离到python模块?3.我同意,python绝对可以扩展。。我们仍处于原型设计阶段,尚未决定使用python/.net…)目前,工作人员由两名服务器端开发人员组成:我和一名python开发人员,因此无论如何都需要重新培训。。。但我们学习速度很快……)如果只有你和另外一个人,团队规模足够小,可以在技术选择上走任何一条路。@Erik我知道C#所以对我来说再培训不是问题。