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与各种性能指标,平台,语言等进行了比较.有关Michi博客的更多信息,但白皮书也非常易读,并且具有任何基准测试的所有标准警告.
免责声明:我已广泛使用Ice和RMI,但从未使用过WCF.