【问题标题】:Information on IoC/DI VS CBSE关于 IoC/DI VS CBSE 的信息
【发布时间】:2014-03-18 20:05:09
【问题描述】:

我有几个关于 IoC 和 CBSE 之间差异的问题,我这辈子都找不到。

我已经使用 IoC/DI 很长一段时间了,特别是在 PHP 中使用 Laravel,所以我认为我对它的工作原理和使用方法有了很好的掌握。我最近购买了 George T. Heineman 的《基于组件的软件工程》一书。当谈到组件如何与其他组件通信时,我遇到了一些困惑,因此开始进行一些在线研究。我正在专门查找 C# 示例,据我所知,CBSE 与 Ioc/DI 非常相似,在某些情况下,我经常想知道人们是否只是把它称为错误的东西。

我在阅读本书时看到的最大区别是,它不是注入依赖项,而是更加线性,并且在你的界面中你告诉它你想要使用什么类。我觉得好像我完全脱离了基地,错过了 CBSE 的全部要点,但找不到任何让我兴奋的信息。任何能够提供一些信息来解决这个问题的人?


小更新:
如果我理解正确的话,CBSE 背后的想法听起来真的很棒。但是我对组件如何相互通信感到困惑。如果我理解正确,组件不应该知道任何其他组件。因此,虽然为所有事情抛出事件都有效,但只有在需要信息的组件知道或期望有 x 组件抛出该事件时才有效。

我试图解决这个问题有几个原因。看看这是否是我想学习并开始用于我作为应用程序程序员的工作以及我对游戏编程的爱好的路线。我是通过研究游戏编程了解 CBSE。

【问题讨论】:

  • 对于那些不知道 CBSE 代表什么的人:基于组件的软件工程

标签: c# .net dependency-injection inversion-of-control component-based


【解决方案1】:

基于组件的软件工程是软件开发的一种范式,它规定应该针对接口依赖性构建软件,以最大限度地提高组件的封装性和可重用性。这种范式,在许多语言中,需要控制反转来满足这个范式。

但是,基于组件的软件工程不是控制反转,它只是一种软件设计模型,可以通过使用 DI 和 IoC 容器最轻松、最完整地完成。对于 C#,如果您想走基于组件的软件工程路线,那么我会考虑熟悉 DI、IoC 及其各自容器的操作方式。

【讨论】:

  • 那只会让我更加困惑!这些书以及我看过的所有示例都没有使用 IoC。我熟悉 IoC 和 DI(在我的大多数项目中都使用它),如果我走这条路,我不知道为什么我会使用 CBSE。
  • 这些书是什么时候出的? CBSE 并不是一个最近的术语,它起源于 80 年代,当时还没有 IoC 和反射的概念。例如,在 C++ 中,您不能使用 DI 容器,因为没有元数据可以满足它。 CBSE 简单的意思是:编程到接口,因此您以后可以轻松地更换零件。今天,最完整的方法是通过 DI/IoC,但只要您正在对接口进行编程以供重用,您就已经在进行 CBSE。
  • 这是有道理的,并且几乎完全回答了我的想法。我认为这听起来好像我已经在理论上了。谢谢你的回答尼什!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2011-12-05
  • 1970-01-01
相关资源
最近更新 更多