Posts mit dem Label .NET Develop werden angezeigt. Alle Posts anzeigen
Posts mit dem Label .NET Develop werden angezeigt. Alle Posts anzeigen

22. Januar 2013

wt3.2.3 unter Windows7 in MSVS 2012

Rund ein Jahr ist es her, seitdem ich meinen Blogeintrag über Wt-Installation unter Windows geschrieben habe.

Mittlerweile hat sich viel getan, Visual Studio 2012 hat sein erstes Update bekommen, die Entwickler von Embweb haben Wt in Version 3.2.3 released und auch boost und CMake haben einige Versionssprünge hinter sich.

Also habe ich mir gedacht, ich schreibe eine Anleitung, wie man alles in der Neuesten Version unter Windows 7 64Bit zum Laufen bekommt :)

Im folgenden findet sich eine Anleitung der Installation sowie Lösungen für eventuell auftretende Probleme.
Folgende Versionen wurden von mir verwendet:

Als IDE verwende ich MSVS 2012, nach Installation des ersten updates, dieses wird für die nachfolgende Anleitung vorausgesetzt.

Prinzipiell existiert eine Anleitung seitens der wt Entwickler von embweb welche hier zu finden ist, doch werde ich mit meinen Worten die folgende Anleitung schreiben:

Zuallererst wird eine Boost Installation benötigt. Nachdem ich sie unter o.g. Link heruntergeladen und auf meine lokale Festplatte extrahiert habe, habe ich mich an die Anleitung unter diesem Link gehalten:
Mittels der Datei bootstrap.bat wird die boost engine gestartet und bereitet alles vor. Danach sollte eine Datei namens "b2.exe" im Ordner erscheinen. Wird diese ausgeführt, sollte boost und alle benötigten Ordner im Ausführungsverzeichnis erstellt werden.
Eventuell kann es sein, dass hierfür erst die Umgebungsvariablen gesetzt, oder das Ganze über die MSVS Commandline für Entwickler gestartet werden muss (siehe weiter unten).


Anschließend habe ich CMake installiert und das gui gestartet.
Wie üblich habe ich als Source Quellpfad den Ort des extrahierten Wt downloads angegeben
und als Zielort ein "build" Verzeichnis innerhalb der Sources.

Als Compiler habe ich "Visual Studio 11" ausgewählt, mit der Option "use deault native compilers". Erscheint ein Fehler, wie beispielsweise "“CL.exe” exited with code -1073741515 & cannot run ‘rc.exe’" oder "Das Programm kann nicht gestartet werden, da mspdb110.dll auf dem Computer fehlt ..." oder anderes, dass die commandline oder der test compile Vorgang nicht ausgeführt werden konnte, sind die Umgebungsvariablen üblicherweise falsch oder gar nicht gesetzt.
Angeblich kann man diesen Fehler umgehen, indem man CMake über die MSVS Commandline startet (üblicherweise über das Startmenü oder im Installationsverzeichnis \Common7\Tools\VsDevCmd.bat) 
jedoch wie ich unter der Webseite von Bryan erfahren habe, reicht es nicht immer diese zu setzen (über Rechtsklick auf "Computer" und im sich anschließend öffnenden Dialog links oben auf den Link "Erweiterte Systemeinstellungen" öffnet sich der alte, aus XP gewohnte Dialog, unter welchem im Tab "Erweitert" mittels "Umgebungsvariablen..." diese gesetzt werden können) sondern es kann sein, dass man zusätzlich noch einige .dlls aus dem Visual Studio Installationsverzeichnis kopieren muss.


Nach einem Klick auf "configure" erhielt ich wie erwartet die Fehlermeldung, dass Boost nicht gefunden wurde (z.B.: Unable to find the requested Boost libraries.), also musste ich unter dem Punkt BOOST_PREFIX den Pfad meiner boost Installation angeben.

Des Weiteren ist es in manchen Fällen notwendig, das Flag für WT_NO_BOOST_RANDOM zu deaktivieren, da es ansonsten beim kompilieren zu Fehlermeldungen kommt (a'la error C2039  'const char* const boost::random::random_device::default_token' is not a static member of 'class boost::random::random_device')
Dazu gibt es bereits ein geschlossenes Ticket auf http://redmine.webtoolkit.eu/issues/1070.

Auch kann es sein, dass man beim kompilieren einen Haufen Fehlermeldungen bekommt wie z.B. fatal error C1189: #error : The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro oder dergleichen. Dies geschieht wie im wt forum beschrieben, da VS2012 keine Redefinition von Keywords mehr erlaubt und ist wie folgt zu beheben: Im textfile "CMakeLists.txt" im wt Sources Verzeichnis muss die Zeile  -Dinline=__inline entfernt werden. (einfach per search and replace über Ctrl+h).

Nun kann man die WT Solution unter dem angegebenen Ordner öffnen und im Visual Studio den compile Vorgang starten. Das Projekt ALL _BUILD sollte standardmäßig als Startup Projekt markiert sein und alles durchkompilieren.
Ist der Vorgang abgeschlossen, kann mittels dem INSTALL Projekt, wt endlich auf dem Rechner installiert werden. Hierbei ist wichtig, dass Visual Studio als Administrator gestartet wird! damit cmake Ordner anlegen kann, falls der Standard Pfad beibelassen wurde.
Es kann auch vorkommen, dass in der Datei "cmake_install.cmake" im build Verzeichnis unter "Destination" ein falscher Pfad steht (doppelte Laufwerkangaben, der cmake Installationspfad innerhalb der destination, etc...) 


So... damit wäre wt. in Version 3.2.3 mit allen Abhängigkeiten in der neuesten Version auf dem System installiert :D

Ich hoffe, jemandem damit weitergeholfen zu haben, wenn nicht habe ich zumindest eine Referenz zum Nachschlagen, falls ist ein anderes System mit wt bepacken muss ^^

Für Fragen, Anregungen steht euch die Kommentarfunktion zur Verfügung,
happy coding :)

- the incredible Leitman

17. April 2012

WPF und Windows Forms – Die Wahl zwischen den Windows GUI Technologien

Was ist eigentlich der Unterschied von Windows Forms und Windows Presentation Foundation WPF?
Wer sich das immer schon gefragt hat, und warum wir noch ein Microsoft GUI Framework brauchen ist hier genau richtig :)


In einem (wieder einmal interessanten) Wochen - Review von Carsten auf seinem Softwareentwickler-blog hat er auf einen ausführlichen Bericht von Mario Priebe verlinkt, den ich im folgendem zu Gute geben möchte:


WPF und Windows Forms – Die Wahl zwischen den Windows GUI Technologien.

WRITTEN BY:  - APR• 07•12
Wenn wir Entwickler für Windows grafische Benutzeroberflächen (GUIs) entwickeln möchten, haben wir die Wahl zwischen Windows Forms und WPF.
Jede dieser Technologien haben ihre Vor- und Nachteile. In diesem Artikel möchte ich auf die Hauptunterschiede beider Technologien eingehen und bei der Entscheidung helfen, welche der beiden für den Einsatzzweck vom Vorteil ist.

Windows Forms

Windows Forms ist die ältere der beiden Technologien und ist die Basis für die meisten (älteren) Windows Applikationen. Die meisten Entwickler haben bereits umfängliche Erfahrungen mit dieser Technologie machen können.
Mit Windows Forms können Formulare in unterschiedlichen Größen und Formen von Fenstern erstellt werden und haben im Prinzip immer die selbe Anordnung für Container, Menüs und Struktur. Einen großen Spielraum für die Umsetzung von grafisch, anspruchsvollen Anforderungen hat man leider nicht, bzw. ist dies sehr schwierig mit Windows Forms umzusetzen, machbar ist es aber dennoch.
Windows Forms hat aber eine sehr gute Unterstützung für multilinguale Anwendungen. Wenn man also eine mehrsprachige Business-Applikation, bei der Usability und Optik nicht so wichtig sind, erstellen möchte, könnte man Windows Forms einsetzen. Man sollte sich aber dennoch den folgenden WPF-Teil anschauen.
Die Navigation innerhalb einer Windows Forms-Anwendung ermöglicht ein Wechseln innerhalb verschiedener Formulare im Single Document Interface Modus (SDI, der Benutzer sieht immer nur ein Fenster mit Informationen) und im Multi Document Interface Modus (MDI, der Benutzer kann mehrere Formulare zeitgleich geöffnet haben).
Für ein entsprechendes UI Pattern um eine Trennung zwischen Code und Design zu erzielen, bekommt man in Windows Forms von Hause aus leider nichts mitgeliefert. Hier kann man sich aber das MVP (Model View Presenter) Pattern anschauen. Es gibt auch ein Framework namens MVC#, welches einem dabei unterstützt. Aber auch der MVVM Ansatz kann beispielsweise über das Windows Application Framework(WAF) mittels Windows Forms Adapter nach implementiert werden.

WPF

WPF steht für Windows Presentation Foundation und ist der direkte Nachfolger von Windows Forms. Der wichtigste Unterschied zwischen WPF und Windows Forms ist, dass in WPF eine klare Trennung zwischen Code und Design herrscht, sprich UI und Logik können getrennt voneinander entwickelt werden.
Der Code kann dabei mit allen .NET basierenden Sprachen entwickelt werden. Die Beschreibungssprache für die UI nennt sich XAML und steht für Extensible Application Markup Language. Wichtig dabei ist, dass bei der Entwicklung der UI, dem Designer keinerlei Grenzen gesetzt sind. Alles ist möglich!
WPF-Applikationen werden in drei verschiedenen Typen unterteilt, welche für verschiedene Aufgaben zuständig sind. Windows-ApplikationNavigations-Applikation und XAML-Browser-Applikation (XBAP).

Windows-Applikation

Die Windows-Applikation ist Fensterbasierend und Windows Forms am ähnlichsten. Man erstellt SDI und MDI Applikationen und verschiedene Formulare können über einen Menü-Link direkt angewählt und geöffnet werden. Für Navigation oder Historien ist von Hause aus nichts implementiert. Man muss hier selbst Hand anlegen.

Navigations-Applikation

Unterstützt die Entwicklung von seitenbasierten Anwendungen und ist dem der Webentwicklung sehr ähnlich. Man verfügt über Vor- und Zurück Funktionalitäten und der automatisierten Speicherung der aufgerufenen Seiten in einem Journal. Im Gegensatz zur Webentwicklung, muss die Applikation kompiliert werden und läuft unter Windows, man hat aber vollen Zugriff auf die Ressourcen des Betriebssystems, wie das File-System und/oder der Registry.

XAML-Browser-Applikation

XBAPs verfügen, ähnlich einer Navigations-Applikation, über die Navigations- und Journalfunktionalitäten. Eine XBAP-Applikation kann auf einem Server oder einer Website veröffentlicht werden und werden bei der Instanziierung heruntergeladen. Mit einer XBAP hat man beschränken Zugriff auf die Ressourcen des Computers und man kann weder auf das Filesystem, noch auf die Registry zugreifen.
Die Wahl des entsprechenden Applikations-Typen hängt von verschiedenen Faktoren ab. Die beiden wichtigsten wären, User Experience und spezielle Anforderungen an die Applikation.

User Experience

Möchte man beispielsweise eine seitenbasierte Anwendung oder einen Wizard erstellen, sollte die Wahl auf den Navigations-Typen, oder je nach Anforderung (Zugriff) auf den XBAP-Typen fallen.
Für das Deployment macht sich eine XBAP Applikation recht komfortabel. Man veröffentlicht die Applikation auf einen Webserver und via Hyperlink kann die Applikation gestartet werden. Applikations-Update Mechanismen sind innerhalb einer XBAP-Applikation ebenfalls recht gut umgesetzt.

Anforderungen

Wenn die Anwendung es erfordert, dass man auf das Filesystem zugreifen, oder Einträge in der Registry verwalten muss, sollte man auf alle Fälle eine der beiden ersten Typen wählen.
Egal für welchen Typen man sich entscheidet. WPF unterstützt für alle dieser Typen Möglichkeiten für das Theming und Styling. Auch für Lokalisierung hat man entsprechenden Support, jedoch lange nicht diesen, wie man das von Windows Forms her gewohnt ist. Hier bedarf es eine etwas längere Entwicklungszeit.

Interoperabilität

In WPF fehlen leider auch einige Controls, wie beispielsweise die FileDialog-Klassen für OpenFileDialog und SaveFileDialog. Man ist aber in der Lage, die Windows Forms Assembly (System.Windows.Forms) in einer WPF Applikation einzubinden und die o.g. Klassen stehen einem danach zur Verfügung.
Es ist aber nicht ratsam diesen Weg zu gehen, da es hier zu Namenskonflikten mit Klassen in WPF kommen kann. Empfehlenswert ist der Zugriff über den Microsoft.Win32 Namespace in der PresentationFramework Assembly.
Aber auch den ColorDialog, den FontDialog und anderes findet man vergebens in WPF. In der folgenden Übersicht Windows Forms Controls und  äquivalente WPF Controls bekommt man eine Vergleichstabelle, welche Forms-Controls in WPF nicht vorhanden sind. Auch einige Properties unterscheiden sich, hier sollte man sich Windows Forms and WPF Property Mapping zum Vergleich anschauen.
Nun, wenn man sich für eine Technologie entschieden hat, kann man dennoch beide miteinander kombinieren. Das heißt, man hat entsprechende Controls, um die jeweils andere Technologie einzubinden. In Windows Forms ist das das ElementHost-Control und in WPF das WindowsFormsHost-Control. Einige HowTos zum Verwenden der Controls findet man direkt im MSDN (ElementHost,WindowsFormsHost).
Also, welche Faktoren spielen bei der Wahl zwischen Windows Forms und WPF eine Rolle? Hier ein paar Fragen, um die richtige Technologie, oder den Technologietypen zu ermitteln.
  1. Wie stark sind die Fähigkeiten der Entwickler in der jeweiligen Technologie?
  2. Können durch den Entwickler fehlenden Forms-Controls ersetzt werden?
  3. Verfügt man über Grafik-, oder UI-Designer?
  4. Welche Unterstützung von Styling und Theming wird in der Applikation erwartet?
  5. Soll die Applikation individuell gestaltet sein?
  6. Benötigt die Applikation volle Rechte auf das Betriebssystem?
  7. Wird großer Wert auf eine Seitennavigation ähnlich einer Website gelegt?
  8. Muss die Applikation mehrsprachig sein?

Fazit

Mit WPF ist man in der Lage, grafisch hochwertige Applikationen zu entwickeln. Es fehlen zwar einige Controls, jedoch ist man in der Lage einen passenden Ersatz zu finden, bzw. in der Lage diesen zu entwickeln. Weiterhin kann durch die Trennung von UI und Logik, die Applikation in einem Team aus Developer und Designer entwickelt werden. Durch die Einteilung in verschiedenen Typen, kann man den richtigen Typen für die jeweilige Aufgabe finden und erhält Unterstützung für nahezu jede Anforderung vom Framework.
Ich hoffe dieser kleine Überblick von Vor- und Nachteilen der beiden GUI Technologien hilft dabei, sich für die richtige Technologie zu entscheiden.
Viel Spaß beim entwickeln : )

Sind Microsoft GUI Entwickler unter euch? Welches Framework bevorzugt ihr?
Und warum?
- the incredible Leitman

6. April 2012

Entwicklung - Programmierwerkzeuge für Mehrkern-CPUs

Einkern-CPUs werden immer seltener. Die Programmierung für Mehrkerner erfordert einige Änderungen in Ihren Entwicklungsgewohnheiten. Glücklicherweise gibt es viele starke Programme, die Ihnen bei der Programmierung für Mehrkern-Prozessoren behilflich sind.


Der folgende (eins zu eins kopiert und eingefügte) Beitrag von PCWelt.de stellt diverse unterstützende Programme vor, welche die Entwicklung für mehrere CPU Kerne vereinfachen, beschleunigen und optimieren sollen.


Wir stellen Ihnen zehn Programme vor, die Ihnen beim Umstieg von der Einkern-Programmierung zur Mehrkern-Programmierung helfen können.



1. Intel Parallel Studio

Mit dem Intel Parallel Studio können Visual Studio C/C++-Entwickler die ganzen Vorteile von Mehrkern-Prozessoren ausschöpfen. Das Programmpaket wandelt serielle Anwendungen in Software für Mehrkerner um. Intel Parallel Studio hilft Ihnen bei den Threads, es optimiert den Compiler und die Bibliotheken. Des Weiteren ist es mit einem Speicherfehler- und Thread-Überprüfer ausgestattet.

2. Intel Threading Building Blocks

Das Werkzeug ist eine C++ Template-Bibliothek mit der Sie aufgabenbasierte parallele Anwendungen entwickeln können, die skalierbar sind. Somit können Sie im Bedarfsfall die weiteren Prozessorkerne ausnutzen. Das Programm ist in der Intel Parallel Studio XE (Extreme Edition) enthalten.

3. Microsoft C++ Amp

Mit diesem Programm können C++-Entwickler parallele Anwendungen über heterogene Computing-Umgebungen laufen lassen. Des Weiteren können Sie dank Microsoft C++ Amp die GPUs für die parallele Programmierung ausnutzen.

4. Microsoft Visual Studio 2010 und .Net Framework 4

Microsoft hat diese beiden Programme verbessert, sodass Programmierer nun parallele und simultane Anwendungen schreiben können. Insbesondere wurden Parallel Linq und Task Parallel Library verbessert.
5. Rogue Wave Software ThreadSpotter
Dieses Werkzeug zielt auf die Optimierung des Arbeitsspeichers ab. Es analysiert den Arbeitsspeicher und die Thread-Kommunikation in Mehr- und Ein-Kernsystemen, um Leistungsprobleme aufzufinden und es bietet Ihnen Hilfe bei der Behebung der Probleme an.

6. Rogue Wave Software TotalView

Bei TotalView handelt es sich um eine Sammlung von Debugging-Werkzeugen für C/C++ und Fortan. Es hilft Ihnen dabei Fehler zu finden und zu beheben. Das Werkzeug arbeitet mit kompilierten Anwendungen auf Linux, Unix und Mac OS X.

7. Eclipse Parallel Tools Plattform

Dieses Open Source Projekt soll eine Plattform für Parallele-Anwendungs-Entwicklung werden. Es enthält eine IDE, das mehrere parallele Architekturen unterstützt und einen parallelen Debugger. Die Ellipse Parallel Tools-Plattform unterstützt eine Vielzahl von parallelen Werkzeugen, deren Anzahl Sie sogar noch erweitern können.

8. Oracle Solaris Studio

Dieses Programm ist ein Entwicklungspaket für C, C++ und Fortan, das unter anderem nützliche Analysetools für Anwendungen, die auf Solaris, Oracle Linux und Red Hat Enterprise Linux laufen, enthält. Es bietet auch Multithread-Performance und Compiler-Optimierungen an. Oracle Solaris Studio unterstützt Sarc und x86 CPU Architekturen.

9. IBM Rational Rhapsody Developer

Hierbei handelt es sich um eine Entwicklerumgebung für eingebettete Software-Anwendungen. Es generiert den Code für Mehrkern-Prozessoren und visualisiert Mehrkern-Ausführungen, um Ihnen dabei zu helfen, die Komplexität bei der Programmierung von Mehrkernanwendungen zu reduzieren.

10. Tilera Multicore Development Environment

Das Programm ist eine Mehrkern-Programmierplattform, die Ihnen die Arbeit mit der Tilera Tile Prozessor Architektur vereinfachen soll. Es bietet unter anderem eine grafische Debugging Oberfläche für Mehrkern-Anwendungen an. Es unterstützt die Programmiersprachen Perl, Python, PHP und Erlang.

Paul Krill, PCWelt.de am 05.04.2012, 09:41