Unlike rich text editors like
TinyMCE or
CKEditor , XMLmind XML Editor Web Edition
(
XXEW for short) is
not a standalone program entirely
written in JavaScript.
XXEW consists in two programs:
<xxe-client>
, a 100% JavaScript frontend running in
the web browser and
xxeserver
, a
Java™ application backend running on a server
computer.
Figure 2-1. XXEW architecture
<xxe-client>
cannot function without being
connected to an
xxeserver
through the
WebSocket ("
ws://
" URL) protocol
or preferably, the WebSocket Secure ("
wss://
" URL)
protocol.
<xxe-client>
is lightweight and thus loads
quickly in the web browser. It does just two things: display as HTML+CSS a
view of the XML document being edited and interact with the user.
xxeserver
does
everything else: load,
validate, modify, save, close the XML document, execute commands received
from
<xxe-client>
in order to modify the XML
document, compute which HTML+CSS representing the view of the XML nodes is
to be sent to
<xxe-client>
, etc.
xxeserver
is in fact a server variant of the proven
XMLmind XML Editor Desktop Application . Of course,
as a full-fledged server program,
xxeserver
can run on
headless server computers and can handle multiple, concurrent
<xxe-client>
s.
Benefits of this architecture
<xxe-client>
is
lightweight(1) and thus
loads quickly in the web browser.
- Being just a server variant of the XMLmind XML Editor desktop
application,
xxeserver
shares with the desktop
application almost all its code, commands, configurations, add-ons and
user preferences. This also means that fixing a bug or enhancing the
desktop application will almost certainly fix the same bug or improve
xxeserver
in the same way.
- Because the state of
<xxe-client>
—including the XML document being edited— is maintained by
xxeserver
(see "<xxe-client>
peer" in the figure above),
this state can be fully automatically recovered when needed
too(2). For example, if the user of
<xxe-client>
clicks the "Go back" button
of the browser and then clicks "Go forward", then she/he will
automatically find <xxe-client>
as she/he left
it. Same reassuring behavior if the user clicks the "Reload current
page" button of the browser or if she/he closes and then reopens
the browser tab/window containing
<xxe-client>
.