# SOAP & Performance?



## mavinatic (28. Nov 2011)

Hallo Community,

ich bin auf eine Frage gestoßen welche mir das Internet nicht so wirklich beantworten konnte:

Ist SOAP sehr inperformant, sodass man kein Gameserver damit verwenden könnte? Weil es baut ja letztlich auf HTTP und TCP auf?!

Gruß


----------



## fastjack (29. Nov 2011)

Aus eigener Erfahrung kann ich sagen, das ich mit Soap Ergebnisse hatte, die nur sehr knapp hinter EJB und direkt RMI lagen. EJB, RMI-Klassen und Webservice hatten dabei natürlich die gleiche interne Logik und Parameter usw.


----------



## mavinatic (29. Nov 2011)

Cool zu wissen, ich hatte auch etwa gedacht das die ähnlich wie RMI, EJB sind...
Kann man SOAP irgendwie performanter machen?


----------



## Empire Phoenix (29. Nov 2011)

Wenn es sich nicht um Browsergames oder Rundenstrategie handelt, würde ich NICHT höher levelige Protokolle nehmen.
TCP und UDP ist ne fallsache, aber man kommt nicht darum rum sich ein eigenes Nachrichtensystem zu schreiben. (Bzw ein fertiges zu benutzen alternativ). Ansonsten kann man durch den SOAP overhead schon alleine die Leitung dichtmachen.


----------



## mavinatic (29. Nov 2011)

Warum sollte der "Overhead" so gigantisch groß sein? Ich möchte einfach paar "Methoden" über einen Webservice anbieten? Habe ich noch alternativen?


----------



## Guest2 (29. Nov 2011)

Moin,

auch wenn es schon älter ist: Java Remoting: Protocol*Benchmarks

Ich war mit hessian(4) bisher immer recht zufrieden (einfach, schnell, schlank). (Bei einem high performance 3d shooter würde ich allerdings auch ein eigenes Protokoll implementieren.)

Gruß,
Fancy


----------



## TheDarkRose (29. Nov 2011)

Mich wunderts, dass hier REST noch nicht erwähnt wurde.


----------



## Empire Phoenix (29. Nov 2011)

Warum soap overhead hat naja fangen wir einfach an

ich will nen positionsupdate schicken
2 byte nachrichtentyp
12 byte 3 flaots -> 1 vector
-> 14 bytes total

SOAP ist stringbasiert wenn ich mich nicht täusche, bzw übermittelt strings da http und so.
-> 2 byte pro buchstaben
wenn ich jetzt den vector 
1000,1000,1000 schicke wären das minimal
3*4*2 bytes, daz den nachrichten typ auch mindestens 2 byte
-> ideralerweise wenn es keine header GÄBE sind wir schon bei 2+24 byte, also fast 50% overhead


----------



## TheDarkRose (29. Nov 2011)

SOAP ist allein dadurch schon nervig, da der Request schon XML sein muss und der Response sowieso auch.


----------



## Lumaraf (29. Nov 2011)

Mein Empfehlung wäre einfach ein Protokoll mit Protobuf oder Thrift zu generieren. Die codierten Nachrichten sind sehr kompakt und die Verarbeitung ist auch schön schnell.


----------



## mavinatic (30. Nov 2011)

Protobuf? Thrift? Ich kenne diese Begriffe nicht.

RESTful Webservice klingt sehr gut!


----------



## Lumaraf (30. Nov 2011)

mavinatic hat gesagt.:


> Protobuf? Thrift? Ich kenne diese Begriffe nicht.
> 
> RESTful Webservice klingt sehr gut!



Protobuf stammt von Google und wird dort laut der Projekt-Seite für nahezu alle internen RPC-Protokolle und Dateiformate verwendet. Thrift ist ursprünglich von Facebook und wird dort für viele interne Protokolle verwendet. 2008 wurde Thrift dann als Incubator Projekt von der Apache Foundation aufgenommen.

Hier noch die Links dazu:
Protobuf
Thrift


----------



## fastjack (1. Dez 2011)

Es gibt noch etwas aus dem Forum hier, SimonRMI von tuxedo

http://www.java-forum.org/netzwerkprogrammierung/59091-rmi-vs-simon.html

ein noch "schlankeres" RMI


----------



## tuxedo (1. Dez 2011)

Nur damit das nicht falsch verstanden wird: Simon ist in 2008 nicht stehen geblieben. Die entwicklung ist nicht aktiv. Die Forenbeiträge aus 2008 spiegeln schon lange nicht mehr die aktuelle Performance wieder.

Ein paar Messungen zum Thema "Simon Performance" (ganz speziell Test-Case #4) gibts hier: SIMON - Start - root1.de - Software Engineering

Gruß
Alex


----------



## tuxedo (2. Dez 2011)

tuxedo hat gesagt.:


> Simon ist in 2008 nicht stehen geblieben. Die entwicklung ist nicht aktiv.



Mist, vertippt. Was ich eigentlich schreiben wollte:

*Simon ist in 2008 NICHT stehen geblieben. Die Entwicklung IST NOCH AKTIV.*


----------

