I used to write ASP.Net apps deploying business dataaccess layers in COM+ components several years ago. This was the standard in several corporate infrastructure here in my country. Is this still recommended? What is the alternative?
5 回答
COM+ 实际上只是 MTS ( Microsoft Transaction Server ) 重新标记并与 Windows 2000 和更高版本捆绑在一起(它是 NT4 上的一个可选附加功能)。如果您使用的是非托管代码,COM+ 仍然是事务中间层的首选选项。事实上,它通常用作TPC-C基准系统中的 TP 监视器,因为它比 .Net 或 Java 更有效,并且比 Tuxedo 或 Encina 便宜得多(这降低了 $/TPM)。
WCF(Windows Communication Foundation)有自己的事务监视器,这是合理的,因为 COM+ 的体系结构与 COM 紧密耦合,很难将 .Net 运行时改造成。如果您在 .Net 中编写事务应用程序,WCF 会提供此功能,尽管System.Transactions库还为 ADO.Net 客户端提供分布式事务支持。
这里有很多关于 WCF 的讨论,但老实说,我认为这不是您要寻找的。
在 ASP 的早期,人们很快了解到将所有代码放在标记页面中很难维护。结果,一些人开始使用 COM 组件实现 N 层设计。如果您的意图是简单地以典型的 N 层方式构建 DAL,那么没有理由认为简单的类库是不够的。
考虑构建一个类库,将其添加为您的 Web 项目的引用,当然还有ADO.NET。
WCF is the new recommended mechanism for interobject communication
I have just spent the past two days trying to make two of my old COM+ business objects work on a new Windows 2003 Server and I am certain I never want to work with COM+ ever again.
来自http://msdn.microsoft.com/en-us/library/ms686988(VS.85).aspx:
“COM+ 是 Microsoft® 组件对象模型和 Microsoft 事务服务器 (MTS) 演进的下一步。COM+ 处理您以前必须自己编程的许多资源管理任务,例如线程分配和安全性。它 自动使您的通过提供线程池、对象池和即时对象激活,应用程序更具可扩展性。COM+ 还通过提供事务支持来帮助保护数据的完整性,即使事务跨越网络上的多个数据库。
虽然看起来像是一种遗留物,但我认为微软目前提供的任何单一时尚技术都无法替代 COM+。