Frage

ZeroC ICE (www.zeroc.com) sieht interessant aus und ich bin daran interessiert, es zu betrachten und es zu unserer bestehenden Software vergleichen, die WCF verwendet. Insbesondere unsere WCF App nutzt Server Rückrufe (via HTTP).

Wer sie verglichen wird? Wie ist es gelaufen? Ich interessiere mich besonders für die Leistung Aspekt, da die Interoperabilität nicht viel von einem Problem für uns ist im Augenblick. Dank!

War es hilfreich?

Lösung

habe ich eine sehr knappe Überprüfung von ICE vor ein paar Jahren, und obwohl ich habe sie nicht direkt vor dem Vergleich, angemessene Kenntnis WCF mit meinen Gedanken eines gewissen Bedeutung haben könnten.

Zum einen ist es nicht entierely Messe WCF als WCF mit ICE zu vergleichen, wie ICE eine bestimmte Fernkommunikationsmechanismus ist und WCF ist eine höhere Ebene Remote-Kommunikations-Framework.

Während WCF oft als Umsetzung SOAP Web Services gedacht wird, und das ist in der Tat die Hauptnutzung bisher, kann es auch für die Umsetzung der Remote-Dienste alle Arten von Kodierungen und Transportkanälen verwendet werden, was bedeutet, es kann theoretisch verwendet werden, für performanten comms zwischen Anwendungen.

Im Vergleich dazu ist ICE ein plattformübergreifende Fern communicaton Mechanismus, der für die Kommunikation zwischen Anwendungen performanter binäre Codierung verwendet. Es ist so etwas wie eine vereinfachte Entwicklung von CORBA und ist direkt vergleichbar mit CORBA, DCOM, .NET Remoting und JNI.

Doch obwohl es keine direkte Entsprechung zwischen ICE und WCF, wenn Sie Ihre .NET-App müssen remote kommunizieren, dann sind sie beide Anwärter. Einige der Entscheidungspunkte Sie vielleicht zu berücksichtigen:

  • Resourcing. Es wird leichter sein, die Entwickler zu finden, mit WCF Erfahrung als ICE Erfahrung.

  • Performance. Wenn Sie die Leistung wollen, dann führt ICE schnell, aber WCF kann auch in einer performanten Konfiguration verwendet werden. Alternativ kann .NET Remoting bietet eine sehr gute Leistung, und was auch immer die MS-gesponserten Benchmarks sagen, ich habe es um 10% WCF Outperform gesehen.

  • Cross-Plattform. Wenn Sie mit Nicht-Windows-Anwendungen kommunizieren müssen, dann sind Sie mit den WCF-Optionen begrenzt Sie verwenden können. Da darüber hinaus die Standards jeder SOAP-Stack scheint anders zu implementieren kann es ein Schmerz wirklich generisches Web Service zu schaffen (wenn auch WS-I helfe)

Wenn Sie nicht jedes Quäntchen Leistung von Tag braucht man, dann würde ich persönlich plump für WCF mit zu beginnen, und dann ICE prüfen, ob die Leistung immer kritisch wird. Selbst dann kann es günstiger sein, Ihre Service-Boxen zu skalieren, als es zu ICE zu bewegen ist, und wenn Sie keine exotischen Cross-Plattform-Bedürfnisse haben Sie dann könnte man immer sehen WCF Neukonfiguration für binäre Codierung usw.

Andere Tipps

Michi Henning von ZeroC hat vor kurzem veröffentlicht ein weißes Papier auf gerade dieses Thema - „Die Wahl Middleware: Warum Leistung und Skalierbarkeit zu tun (und nicht) Matter“. Er vergleicht Eis, WCF (binär & SOAP) und RMI mit verschiedenen Performance-Metriken, Plattformen, Sprachen, etc. Es gibt mehr Informationen über

Apache Thrift ein weiterer Anwärter auf ICE und WCF ist. Es wurde entwickelt und von Facebook bezogen öffnen. Apache Thrift ist in gewisser Weise ganz schön, denn es ist nicht nur extrem effizient auf der Codierungsseite, sondern unterstützt auch das Hinzufügen von Feldern Strukturen ohne alle Clients zu brechen (etwas fanden wir für unsere Projekte sehr nützlich).

Google Protocol Buffers scheint nicht wirklich ein Anwärter wie es doesn ‚t .NET-Unterstützung auf der Homepage erwähnen. Allerdings unterstützen einige Community Addons C #. Darüber hinaus bietet ICE Emulation für Google Protocol Buffers, wenn Sie mit bestehenden Diensten arbeiten.

Datenpunkt: wir umgerechnet nur einen Rückruf Multi-Plattform und mehrsprachiges Projekt von Eis zu Thrift mit recht guten Ergebnissen. Ice tut viel für Sie, damit wir hatten Trennung Zuhörer, Verbindungsereignisse zu implementieren, usw. selbst. Und in einem Fall haben wir etwas in der sprichwörtlich mit einem großen Objekt sperrt, dass Ice zugab wir weg mit - dies einen Stillstand in dem Thrift-Server verursacht, aber es war leicht weniger faul Codierung auf der C # Seite fixiert

Ich habe gerade Benchmarking abgeschlossen, und in unserer Anwendung alles, was große Mengen an Daten schiebt schneller ist als, oder auf einer Stufe mit, Eis. Kürzere Nachrichten mit mehr Überkopf (das heißt ein „Herzschlag“, die einen Status über das Protokoll aktualisiert) ist ein wenig langsamer.

Das wichtigste Bit war, dass, um den Rückruf-Service zu implementieren richtig mussten wir Thrift Schnittstellen erweitern und unser eigenes Protokoll zu definieren, zusammen mit einem Thrift „Prozessor“ und Callback-Client-Server. Aber ich gebe offen zu unserer Anwendung ist / sehr / etwas Besonderes. Die vorhandenen Protokolle und Server sollen ausreichend sein. Aber erstreckt sie, auch Multiplex-Sockets von .Net zu verwenden, war nicht besonders schwierig.

Wir sind mit ICE-Module sowohl in C ++, Java und C # geschrieben zu integrieren. Das Schöne daran ist, dass unsere Server-Komponenten auf Remote-Rechnern als auch zugreifen kann, so dass, wenn wir mehr Leistung benötigen wir die Verarbeitung zu verschiedenen Maschinen verschieben können.

Ich habe sowohl WCF und ICE verwendet, und ich würde sagen, dass ICE-Reiniger auf der Implementierungsseite ist. ICE hat auch sehr detailliert und lesbare Dokumentation.

ICE unterstützt einige Dinge, die WCF nicht tun kann, einschließlich Load Balancing, automatisierte Remote-Client-Updates, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top