5

我正在使用 EnterpriseServices AKA Com+ 的 ServicedComponent

  • 分布式事务
  • 使用属性的简单事务编程
  • 对象池

我发现 com+ 中缺少的东西

  • 缺少 dll 版本控制
  • 每次更改组件时都必须进行 gac 和 reg 的痛苦
  • 必须附加调试器

我知道 WCF 解决了一些与 COM+ 相同的问题。但它能解决所有问题吗?有人能指出我正确的方向吗?

谢谢

4

3 回答 3

7

我对 COM+ 的来龙去脉不是很熟悉,但构建 WCF 是为了替代它和 .NET 平台中的企业服务。您在此处提到的所有用例都已融入框架(池、事务、版本控制),并且对于编写代码来说几乎是微不足道的,只要您花时间了解它想要如何做事。当您正确配置事物时,您可以使用它做的事情几乎没有限制。

WCF 还支持微软为近期和长期未来所做的许多工作(Azure 服务)。我认为这是您学习时间的一项值得投资,尤其是考虑到您的 COM+ 背景。

我强烈推荐 Juval Lowy 的书作为一个很好的起点。在这个主题上,他可能是你会发现的最权威的声音。

http://oreilly.com/catalog/9780596521301/?CMP=AFC-ak_book&ATT=Programming+WCF+Services%2c+Second+Edition%2c

我还建议您查看他的公司 IDesign 的网站。他们不仅提供出色的培训,而且他们有一个非常有用的 WCF 扩展库,称为 ServiceModelEx,它提供了许多实用程序扩展/帮助类,使您的 WCF 生活更轻松。

http://www.idesign.net/idesign/DesktopDefault.aspx

如果您正在寻找更具教程风格的书,Michele Leroux Bustamante 的书也相当不错。

于 2009-03-31T04:08:22.863 回答
3

如果您想在组件上进行基于属性的事务,WCF 可以为您完成。除了隐喻不再是 COM+ 中的组件;它现在是 WCF 中的服务。一个微妙但重要的转变。WCF 依赖于与 COM+ 相同的事务基础结构 (DTC)。

如果您只想在 .NET 中使用 COM+,它是 EnterpriseServices - 相同的模型,仍然需要使用 DLL 部署和版本控制。仍然可以获得池化等。还可以获得暂停/恢复和一些其他新的 ES 功能。

如果您只想要一个事务性编程模型,您可以使用 System.Transactions 命名空间。

至于对象池 - 看两次。可能值得重新检查您对对象池的使用。多年前,行业做出的假设或我们对实例化对象的成本的理解导致我们使用对象池的比喻。这些假设和理解在今天可能无效。换句话说,对象池可能对您的应用程序实际上有用,也可能没有。它仍然在 ES 中,但值得考虑是否需要它。

于 2009-03-31T19:32:28.087 回答
0

您应该看看Enterprise Services

于 2009-03-31T00:17:50.127 回答