Я провел очень краткий обзор ICE несколько лет назад, и хотя я не сравнивал их непосредственно раньше, имея разумные знания о WCF, мои мысли могут иметь какое-то отношение.
Во-первых, не совсем справедливо сравнивать WCF с ICE как WCF, так как ICE - это особый механизм удаленной связи, а WCF - инфраструктура удаленной связи более высокого уровня.
Хотя WCF часто рассматривается как реализация веб-сервисов SOAP, и это действительно его основное применение на сегодняшний день, его также можно использовать для реализации удаленных сервисов с использованием всевозможных кодировок и транспортных каналов, что означает, что его можно использовать теоретически. для связи между приложениями.
Для сравнения, ICE - это кроссплатформенный механизм удаленной связи, использующий двоичное кодирование для эффективной связи между приложениями. Это что-то вроде упрощенной эволюции CORBA и более сравнимо с CORBA, DCOM, .NET Remoting и JNI.
Однако, хотя прямой связи между ICE и WCF нет, но если вам нужно, чтобы ваше приложение .NET осуществляло удаленный обмен данными, они оба являются соперниками. Некоторые из решений, которые вы можете рассмотреть, включают:
ресурсообеспечения. Будет проще найти разработчиков с опытом WCF, чем с ICE.
Производительность. Если вам нужна производительность, то ICE работает быстро, но WCF также можно использовать в конфигурации с высокой производительностью. В качестве альтернативы .NET Remoting может обеспечить очень хорошую производительность, и, как говорят тесты, спонсируемые MS, я видел, что он превосходит WCF на 10%.
Кросс-платформенный. Если вам нужно общаться с приложениями, отличными от Windows, вы ограничены опциями WCF, которые вы можете использовать. Кроме того, поскольку каждый стек SOAP, по-видимому, реализует стандарты по-разному, может возникнуть сложность при создании действительно общих веб-служб (хотя WS-I помогает)
Если вам не нужны все унции производительности с первого дня, то я бы лично начал с WCF, а затем рассмотрел бы ICE, если производительность когда-нибудь станет критической. Даже в этом случае может быть дешевле масштабировать ваши сервисные блоки, чем переходить на ICE, и если у вас нет каких-либо экзотических кроссплатформенных потребностей, вы всегда можете посмотреть на перенастройку WCF для двоичного кодирования и т. Д.