UI-Zukunft (4), Demo

02/09/2011 - 18:33 von W. Wolf | Report spam
Hallo,

angekündigt hatte ich es bereits, hier die Umsetzung:
http://www.ww-a.de/download/vb2ext.zip

Dieses kleine Beispielprojekt versucht den JavaScript-Code
vollstàndig durch VB-Code zu ersetzen. Dafür werden Ext-Klassen
in VB nachgebildet. Die Anwendung ist damit vollstàndig in VB
geschrieben.

Bei der Umsetzung habe ich allerdings angefangen an der Sinnhaftigkeit
des Unterfangens zu zweifeln. Die Gründe dafür:
- Der objektorientierte Aufbau des JS-Frameworks ist nur schwer in
VB nachzubilden. Mittels Implements, Aggregation und Polymorphie
habe ich alles ausgeschöpft was VB in Sachen Objektorientierung
hergibt. Sicher kann man das eine oder andere auch noch
besser machen, der VB-Extrem-Guru bin ich sicher auch nicht.

Beispiel-Code für einfaches Panel:

Dim p As extPanel
Dim c As iComponent
Set p = New extPanel: Set c = p
c.x = 50
c.y = 50
c.width = 150
c.height = 90
c.html = "Some content"
c.style = "position: 'absolute'"
p.title = "Basic Panel"
p.animCollapse = True
p.bodyPadding = 5

Erlàuterung: iComponents ist ein Interface welches alle Komponenten
von Ext implementieren. Gleiches gibt es noch als iContainer für
Komponenten die andere Komponenten enthalten. Folglich gibt
es auch zwei Basisklassen extComponent und extContainer welche
in alle anderen Klassen hinein "aggregiert" werden, wobei das jeweilige
Interface auch von diesen Klassen implementiert wird. So konnte ich
ein kleines bißchen Vererbung in VB simulieren. Geht das wohl auch schlauer?

Ich habe mal eine Gegenüberstellung von VB- und JS-Code aus der
Demo gemacht, dass den VB-Code und den daraus erzeugten JS-Code
zeigt:
http://www.ww-a.de/download/vb2ext.htm

- Der Unterschied zwischen VB-Code und JS-Code ist gar nicht mal so
extrem. Wer bereits ein bißchen JS programmiert hat, wird mit Ext keine
all zu große Probleme haben. Also warum nicht gleich das Original nehmen?

- Anwendungen die die VB-Klassen verwenden sind sicher langsamer.
Schließlich erzeugen die VB-Klassen zur Laufzeit erst JS Code welcher
spàter im Browser interpretiert wird.

- Die Nachbildung der Ext-Klassen ist nicht einfach und für einen
Einzelkàmpfer sicher nicht zu schaffen. Vor allem die fehlende
Vererbung von VB zeigt sich hier schmerzhaft.

- Ach Ext entwickelt sich weiter. Anpassungen und Nachrüstungen im
VB Code wàren stàndig erforderlich.

Ich denke mal ich belasse es bei diesem Experiment. Für mich ist klar:
Wenn ich eine VB-Anwendung mit HTML/JS UI programmieren sollte,
so werde ich die UI wohl in JS schreiben und diesen Code in die
bereits vorgestellten *.fra Dateien verpacken. Der Umweg über VB ist
zwar spannend aber erfordert im Prinzip auch das was in Olafs Widgets
noch gemacht werden muß: viel programmieren, programmieren, programmieren.
Alleine würde ich das nicht machen wollen.

Wie seht ihr das?

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 Ulrich Korndoerfer
03/09/2011 - 02:14 | Warnen spam
W. Wolf schrieb:

Ich denke mal ich belasse es bei diesem Experiment. Für mich ist klar:
Wenn ich eine VB-Anwendung mit HTML/JS UI programmieren sollte,
so werde ich die UI wohl in JS schreiben und diesen Code in die
bereits vorgestellten *.fra Dateien verpacken. Der Umweg über VB ist
zwar spannend aber erfordert im Prinzip auch das was in Olafs Widgets
noch gemacht werden muß: viel programmieren, programmieren, programmieren.
Alleine würde ich das nicht machen wollen.

Wie seht ihr das?




So eine Anwendung sollte man nach dem MVC Modell erstellen. Models und
Controller werden mit VB als COM-Dlls erstellt, Views per JavaScript.
Ein ebenfalls mit VB erstellter generischer Applikationsserver stellt
den Views Models und Controller per RPC zur Verfügung. Hat man einen
Server, auf dem der Applikationsserver lauffàhig ist (Windowsserver oder
evtl. Linux mit Wine), kann man schon mal von jedem OS-Typ und Browser
aus die Applikation laufen lassen (vorausgesetzt der Browser versteht
das JS der Views).

Dann kann man auch leicht das ganze lokal (offline) zur Verfügung
stellen. Im einfachsten Fall braucht man dazu lokal nur den
Applikationsserver und den JS Code samt Startseite (alles lokal auf der
Platte). Unter Windows genügt dann im Explorer ein Doppelklick auf die
Startseite. Oder man schreibt noch zusàtzlich ein kleines Progràmmchen,
welches eine Browserengine einbettet, beim Programmstart den
Applikationsserver startet, wenn er noch nicht làuft, und dann die
Engine die lokale Startseite laden làsst.

Für die Erstellung der Views würde ich Quooxdoo verwenden. Ist
inzwischen ausgereift und konzentriert sich auf die Erstellung von GUIs.
GUIs werden komplett per JS erstellt, man braucht keine Zeile HTML oder
CSS schreiben. Die Startseite hat dann einen leeren Body und làdt im
Head-Tag das Startskript. Der RPC-Callmechanismus ist integriert,
Datenaustausch geht über JSON.

Das Programmiermodell von Quooxdoo ist mE weit übersichtlicher und
komfortabler (VBisher) als das von Ext.

Anbei Beispielcode für das obligatorische "Hello world":

var b = new qx.ui.form.Button("Say hello");
b.addListener("execute",function(e){alert("Hello World!");});
this.getRoot().add(b,{left:100,top:50});

Es wird ein Button an der vorgegegebenen absoluten Position angezeigt,
mit der Aufschrift "Say hello". Drückt man ihn, erscheint eine
Messagebox mit dem Text "Hello World". Auszuprobieren im Playground der
Quooxdoo Website. Den Code dorthin pasten und Run drücken.

Oder, um ein (leeres) Fenster anzuzeigen, das man auf dem "Desktop"
bewegen kann:

var win = new qx.ui.window.Window("First Window");
win.setWidth(300);
win.setHeight(200);
win.setShowMinimize(false);
this.getRoot().add(win,{left:20,top:20});
win.open();

Ulrich Korndoerfer

VB tips, helpers, solutions -> http://www.prosource.de/Downloads/
MS Newsgruppen Alternativen -> http://www.prosource.de/ms-ng-umzug.html

Ähnliche fragen