有没有人比较过WCF和ZeroC ICE?
ZeroC的ICE(www.zeroc.com)看起来很有趣,我感兴趣的是将其与我们使用WCF的现有软件进行比较。特别是,我们的WCF应用程序使用服务器回调(通过HTTP)。
有人在比较他们吗?怎么样了我对性能方面特别感兴趣,因为互操作性现在对我们来说不是太大的问题。谢谢!
解决方案
几年前,我对ICE进行了非常简短的回顾,尽管我之前没有直接比较过它们,但对WCF有了一定的了解,我的想法可能与此有关。
首先,将WCF与ICE进行比较并不完全公平,因为WCF是ICE是一种特定的远程通信机制,而WCF是一种更高级别的远程通信框架。
虽然WCF通常被认为是实现SOAP Web服务的一种,但这确实是迄今为止的主要用途,但它也可以用于使用所有编码和传输渠道的方式来实现远程服务,这意味着它在理论上可以用于高性能的通信在应用程序之间。
相比之下,ICE是一种跨平台的远程通信机制,它使用二进制编码在应用程序之间进行高性能通信。这是CORBA的简化演变,可以直接与CORBA,DCOM,.NET Remoting和JNI进行比较。
但是,即使ICE和WCF之间没有直接对应关系,但是如果我们需要.NET应用程序进行远程通信,则它们都是竞争者。我们可能要考虑的一些决策点包括:
- 资源。找到具有WCF经验的开发人员比拥有ICE经验的开发人员要容易得多。
- 表现。如果需要性能,则ICE的执行速度很快,但是WCF也可以在高性能配置中使用。另外,.NET Remoting可以提供非常好的性能,无论MS支持的基准测试是什么,我都看到它比WCF领先10%。
- 跨平台。如果我们需要与非Windows应用程序进行通信,则可以使用WCF选项就受到限制。另外,由于每个SOAP堆栈似乎都以不同的方式实现标准,因此创建真正的通用Web服务可能很麻烦(尽管WS-I可以帮助)
如果我们从第一天起就不需要每一分钱的性能,那么我个人希望WCF可以从此开始,然后在性能变得至关重要的情况下考虑使用ICE。即使那样,向外扩展服务箱可能也比迁移到ICE便宜,如果我们没有任何奇特的跨平台需求,那么我们始终可以考虑重新配置WCF以进行二进制编码等
来自ZeroC的Michi Henning最近发布了有关该主题的白皮书-"选择中间件:为什么性能和可伸缩性很重要(和不重要)"。它将Ice,WCF(二进制和SOAP)和RMI与各种性能指标,平台,语言等进行了比较。
免责声明:我已经广泛使用Ice和RMI,但从未使用过WCF。