Wenn DWR in einem Intranet verwendet wird, treten Nachteile wie Performance- oder Sicherheitsprobleme auf? Direct Web Remoting ist ein Tool, das Ajax-Anforderung verwendet, um einen Server aus einer js-Datei zu kontaktieren.Was ist der Nachteil von DWR?
Antwort
Eine Sache, auf die ich achten sollte, ist, dass Ihr Server höchstwahrscheinlich von mehr HTTP-Anfragen getroffen wird, als wenn Sie die (normale) Vollseiten-HTTP-Zustellung haben.
Lassen Sie mich erklären. Wenn Ihre Webseite AJAX-fähig ist, werden Ihre Kunden am Ende mehr HTTP-Anfragen für (sagen wir) Formular-Füllung, Seitenfragment-Regeneration usw. erstellen. Ich habe Szenarien gesehen, in denen Entwickler AJAX-verrückt geworden sind und die Webseite zu einem gemacht haben weitgehend dynamisches Dokument. Dies führt zu einer guten Benutzererfahrung (wenn es gut gemacht wird), aber jede Anfrage führt zu einem Server-Treffer, was zu Skalierbarkeits- und Latenzproblemen führt.
Hinweis - Dies ist nicht speziell für DWR, sondern ein AJAX-Problem. Ich habe DWR verwendet, und es funktioniert gut. Leider habe ich festgestellt, dass es so gut funktioniert hat, und so leicht, dass alles ein Kandidat für Remoting wird, und Sie können mit riesigen Zahlen von kleinen Anfragen enden.
Ich arbeitete an einem Projekt mit DWR - ein wirklich nettes Werkzeug.
Ich bin jedoch nicht von der Geschwindigkeit der Entwicklung überzeugt. Sie haben on the development log gepostet, dass sie daran arbeiten, 3.0 aus der Tür zu bekommen, aber die letzte stabile Version - 2.0 - war im Sommer 2006 draußen. Es ist ein bisschen besorgniserregend aus einer Supportperspektive - Bugfixes besonders.
Hauptproblem, das ich erlebt habe, versucht, einen Belastungstest auf einem System zu skripten, wo der Hauptteil der Arbeit über DWR-Aufrufe erledigt wird. Das Format der Aufrufe ist schwierig zu replizieren, wenn man nur eine Reihe von URLs mit sich ändernden Parametern beantwortet.
Immer noch DWR ist ein ausgezeichnetes Framework und macht die Implementierung von Javascript -> Java RPC verdammt einfach.
DWR ist ein großartiges Werkzeug, wenn Ihre Website viele Ajax-Anrufe hat. gemacht
a) eine Schnittstellendatei entsprechend den Anrufe werden:
Jede Seite, die Anrufe dwr rpc muss enthalten macht. und b) eine js-Datei, die mit dwr gebündelt ist und den dwr-Engine-Code enthält, der diese Aufrufe ermöglicht. für z.B.
Eine Technik, die häufig bei der Optimierung von Webanwendungen verwendet wird, besteht darin, den Browser-Cache so weit wie möglich zu verwenden, wenn sich eine Ressource (wie eine js-Datei) auf einem Server nicht geändert hat.
Die Datei "engine.js" ändert sich nur, wenn Sie Ihre dwr auf eine neuere Version aktualisieren. Standardmäßig ist die Datei "engine.js" jedoch keine statische Datei, die von Ihrem Webserver bereitgestellt wird. es ist gebündelt als Teil des dwr-Tools itsef und wird von dwr controller/servlet.this unterstützt Client-seitiges Caching.
Es ist also vorteilhaft, wenn Sie engine.js unter dem Document Root Ihres Webservers speichern und den Webserver als statische Datei bereitstellen lassen.
Weitere Informationen zum Zwischenspeichern von engine.js auf der DWR-Website: http://directwebremoting.org/dwr/browser/engine/static.html – Jonik
Eine Eigenschaft des aktuellen DWR 3.x, die jeder Benutzer sollte vorsichtig sein, ist, dass, wenn eine Instanz einer Bean Eigenschaften von NULL-Wert hat, diese Eigenschaften noch in die JSON injiziert werden und diese redundanten Daten beeinflussen die Performance.
Wenn eine Eigenschaft den Wert NULL hat, sollte sie normalerweise nicht an das Frontend gesendet werden.
Details Problem: http://dwr.2114559.n2.nabble.com/Creating-Custom-bean-converter-td6178318.html
Der größte Unterschied unter anderen Lösungen Objekte zu übertragen (Marshalling) sind Objektreferenzen.
Zum Beispiel, wenn Sie es verwenden, um einen Baum zu übertragen:
A
| -B
| -C
in einer Liste {A, B, C}:
B.parent = A C.parent = A
dann ist A th Das gleiche Objekt in Javascrit!
auf der schlechten Seite, wenn Sie komplexe Strukturen mit zirkulären Abhängigkeiten und vielen Objekte haben: A < -B, B < -C, C < -B, C < .A, ... es zum Absturz bringen kann.
Wie auch immer, ich benutze es in einem realen Projekt von vielen hundert Unternehmen in der Produktion verwendet, um Tausende von Objekten auf eine einzige HTML-Seite zu übertragen, um ein komplexes Diagramm zu zeichnen und es funktioniert gut mit einer guten Leistung.
Ich stimme dieser Antwort zu. Ich habe DWR in einer webbasierten Anwendung verwendet. Die Anwendung bietet eine großartige Benutzererfahrung, aber ich denke, die Anwendung funktioniert nicht schnell, wegen all des JavaScript und httprequest. – Michel