.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv Februar 2013

Office 365 Official Launch

28.02.2013 09:27:40 | Sebastian Gerling

seit dem 27.02.ist die neue Version von Office 365 verfügbar, damit kann man nun sein komplettes Office 2013, SharePoint 2013 und Lync 2013 /Exchange 2013 aus der Cloud beziehen. Microsoft hat deutlich im Bereich Social, Cloud Integration und Feature Set insbesondere für SharePoint und Exchange gearbeitet. Weitere Informationen gibt es unter: http://www.sharepointpromag.com/article/office-365/office-365-business-145320 http://blogs.office.com/b/microsoft_office_365_blog/archive/2013/02/27/office-365-commercial-availability-global-customers.aspx

Willkommen beim neuen Office 365 | Office 365 Small Business Premium + Office 365 Midsize Business

27.02.2013 12:03:36 | Kay Giza

Die Neuerungen in Office, Office 365 und den Servern sind mehr als nur 'eine nächste Version' von Office. Flexibel arbeiten, interne soziale Netzwerke, die Cloud sinnvoll nutzen – das sind Trends, welche die moderne Arbeitswelt prägen. SharePoint ist dabei ein wichtiger Wegbegleiter ins Social Enterprise für viele Unternehmen. Das neue Office verbessert auch die IT-Kontrolle, indem es Beweissicherungsverfahren und Compliance-Projekte erleichtert. Neu und äußerst attraktiv für viele Kunden ist auch die Möglichkeit, jetzt Project und Visio auch als Dienst im Abonnement zu beziehen. [Mehr Informationen in diesem Blogeintrag auf Giza-Blog.de...]

This post is powered by www.Giza-Blog.de | Giza-Blog.de: RSS Feed
© Copyright 2006-2013 Kay Giza. All rights reserved. Legal

Microsoft startet Werbekampagne für den IE10

27.02.2013 11:31:57 | Mathias Gronau

Seit einigen Tagen steht der Internet Explorer 10 zum Download bereit. Nach den USA, Großbritannien und Frankreich startet Microsoft heute in Deutschland mit einem bildgewaltigen Werbespot die nationale Kampagne für den Internet Explorer 10. Die lokale Adaption des dynamischen Spots wird in der Primetime auf den Privatsendern sowie in Kinos zu sehen sein und Online sowie im Rahmen von Außenwerbung (out-of-home) begleitet. Die Kampagne läuft über den gesamten Zeitraum der ersten Jahreshälfte mit einem Werbebudget in einstelliger Millionenhöhe.Im Mittelpunkt steht die neue Benutzeroberfläche des Internet Explorer 10, die speziell für Touchscreens entwickelt wurde. “Der neue Internet Explorer 10 macht das Web greifbar”, erklärt Moritz Roth, Chief Marketing Officer von Microsoft Deutschland. “Der Spot transportiert die Perfektion der Touch-Anwendung und die unendlichen Möglichkeiten innovativer Webentwicklungen, die sich damit ergeben.”Der neue Clip stellt die besondere Optimierung des Internet Explorer 10 für die Anwendung per Touch in den Vordergrund und bindet die einzigartige Usability dynamisch mit ein. Entworfen wurde der Spot vom Filmproduzenten Keith Rivers aus Seattle. Er übernahm bereits im letzten Jahr die Kreation des Internet Explorer Spots mit dem britischen Sänger Alex Clare. Auch in der neuen Kampagne zum Internet Explorer 10 setzt der Produzent auf die Kombination kraftvoller Visuals und starker Sounds. Dieses Mal holte Microsoft den US-amerikanischen Singer-Songwriter und Beatboxer Blake Lewis an Bord. Der Spot featured passend zum Thema den Song “Your Touch”. Im Behind-the-Scenes Video  auf ExploreTouch.ie spricht der Künstler, der im Spot auch selbst zu sehen ist, über die Zusammenarbeit für den Clip. Auf der begleitenden Kampagnenwebseite gibt es zudem exklusives Material des Künstlers wie Vocals, Bass und Instrumentals, das im interaktiven Touch-Player optimiert für den Internet Explorer 10 neu gemixt werden kann. Der Song Your Touch kann zudem auf der Seite und über Xbox Music für eine Woche lang kostenlos heruntergeladen werden.Der Internet Explorer 10 wurde für Windows 8 völlig neu entwickelt. Durch die Multi-Touch Optimierung des Internet Explorer 10 ist eine intuitive und schnelle Mehr-Fingereingabe auf Windows 8 Tablets möglich. Waren Touch-Anwendungen bislang Apps vorbehalten, bietet der Internet Explorer 10 dank integrierter Hardwarebeschleunigung nun eine Interaktion mit bis zu fünf Fingern gleichzeitig. In den HTML5 Showcases wie den Browsergames Contre Jour oder Atari Online sind die neuen Weberfahrungen bereits beispielhaft erlebbar. Hier können Sie sich den Spot auch im Internet ansehen:.

Ich bin .NET-Entwickler und ich teste meinen Code nicht!

27.02.2013 01:50:04 | Jürgen Gutsch

So oder so ähnlich muss es sich für einen Java-Entwicklers anhören, wenn er sich mit einem .NET-Entwickler über Unit-Tests und Continous Integration unterhält. (Mag sein, dass nicht jeder Java-Entwickler guten Code schreibt, aber zumindest diejenigen mit denen ich mich unterhalten konnte und deren Code ich sehen durfte.)

Beim letzten CyberTreff habe ich mich wieder mal mit einem Java-Entwickler unterhalten dürfen, der mich unter anderem auch fragte, ob es richtig sei, dass in der .NET-Welt Unit-Tests und Continous Integration nicht üblich sei. Leider musste ich die Frage mit “Ja” beantworten. Es ist tatsächlich nicht üblich! Auch wenn es eine ganze Menge guter .NET-Entwickler gibt, die diese Techniken verinnerlicht haben.

Zumindest ist es meine Beobachtung die ich in den letzten Jahren machen durfte.

  • Unit-Testen wird als zu aufwendig / teuer angesehen
  • Unit-Testen wird als unnötig angesehen
  • Unit-Testen wird als unnötige Philosophie angesehen.
  • Continous Integration ist nicht bekannt
  • CI wird als zu aufwendig / teuer angesehen
  • Man beschränkt sich auf Nightly Builds
  • Man baut auf der Maschine vom Chef
  • Jeder Entwickler baut auf seiner Maschine

Warum ist das in der .NET-Welt so? (<= Pauschalisiert. Möglicherweise auch in anderen Sprach-Welten)

Ich führe es hauptsächlich auf die unterschiedlichen sprachlichen Ursprünge der .NET-Entwickler zurück. Fehlendes Tooling im VB6 und VisualC++ sind mit Sicherheit eine Ursache für das fehlende Verständnis für Test- und Build-Automatisierung. Hinzu kommen “konvertierte” Java-Entwickler, Delphi, FoxPro, Lotus Notes, etc. Es entsteht ein Mix aus verschiedensten Techniken, Philosophien, Einstellungen und Vorgehensweisen. Hinzu kommt dass es kaum engstirnigere Menschen gibt wie Softwareentwickler, [Humor]von Pädagogen mal abgesehen.[/Humor]

Wie kann man das unter einen Hut bringen?
Wie schafft man es, das alle eine Sprache sprechen und auf die gleiche Art Software entwickeln?

Die Clean Code Developer Initiative, liefert mit ihrer “Formelsammlung” einen Ansatz, der allerdings auch nur diejenigen erreicht, die sich sowieso über die “üblichen” Informationskanäle fortbilden.

Wie schafft man es nun, dass diese Techniken die in anderen Technologien selbstverständlich sind auch in der .NET-Welt selbstverständlich sind?

Ich sehe mehrere Möglichkeiten, wobei eine von der CCD schon präferiert wird: CCD empfiehlt einfach es einfach zu tun. Einfach machen und die “anderen”-Entwickler die Vorteile spüren und sehen lassen. Das ist gut, sogar sehr gut, ABER:

  • Ich kennen auch Entwickler, denen es explizit untersagt wurde Unit-Tests zu schreiben. Diese hochmotivierten Leute resignieren irgendwann.
  • Dieser Prozess ist auch recht langsam.

Eine weitere Möglichkeit ist Geld. Geld zieht immer und hat fast immer Prio 1:

Abgesehen davon dass man bei einem Broken Build 50 Cent für die Kaffeekasse verlangen könnte, muss den Verantwortlichen vorgerechnet werden wie viel Zeit mit Unit-Tests (am besten Test-First) und Continous Integration gespart werden kann.

Ohne Unit-Tests rechne ich für ein Feature etwa die Hälfte der Zeit für Bug-Fixing ein. Ich denke das ist ein guter Mittelwert, manche Bugs sind sicher schneller gefunden, manche dauern länger. Bugs die älter sind haben möglicherweise schon einen gewissen Supportaufwand verursacht. Benötige ich also für ein Feature 10 Tage, so muss ich mit 5 Tagen für Support und Bugfixing rechnen. Das ist eine ganze Menge Geld. ;-)

Mit Unit-Tests benötigen wir für das gleiche Feature für die Implementierung möglicherweise etwas länger. (Üblicherweise beschleunigen Unit-Tests sogar die Implementierung, mehr dazu später). Sagen wir also wir arbeiten mit Tests-First und benötigen nun 11 Tage für das Feature. Durch die Absicherung per Tests werden viele Bugs schon während der Implementierung gefunden. Und die die Durchrutschen? Werden durch Unit-Tests schneller lokalisiert und behoben. Der Aufwand im Nachhinein, abgesehen vom Support geht gegen 0. Ich behaupte jetzt also Wir haben einen Gesamtaufwand von 13 Tagen. Das sind zwei Tage weniger als ohne Unit-Tests.

Tests müssen von Entwickler ausgeführt werden. Wenn er das nicht macht, sollte das zusätzlich ein Automatismus tun. Hier kommt Continous Integration ins Spiel. Ein Build-Server holt sich automatisch die Codes, baut die Software und führt ALLE Tests aus. Und das immer dann, wenn neuer Code zur Verfügung steht. Der Entwickler bekommt innerhalb von zehn Minuten ein Feedback über seine Arbeit und kann eventuelle Probleme umgehend beheben. Ich reduziere damit den Aufwand des obigen Features um einen weiteren Tag. Es bleiben also 12 Tage für das Feature.

So, und jetzt beschleunigen wie die Implementationszeit mit Unit-Tests: Wir alle, die mit VB6 gearbeitet haben, kennen die altbewährte Technik der “F5 getriebenen Entwicklung”. Code schreiben, F5 drücken, ausprobieren, Code anpassen und wieder F5, und so weiter. Diese Technik wird leider immer noch sehr häufig genutzt. Und wer hat nicht schon ein Stück Code debuggen wollen, das sich im letzten, hinteren Eck der Anwendung versteckt und man sich erst 5 fünf Minuten durch den Prozess der Anwendung klicken muss? Hat man dann den Fehler gefunden und behoben geht das wieder von vorne los um den Fix zu testen. Kennen wir alle. Aber kennen wir auch alle die Möglichkeit, dass uns ein Unit-Test helfen kann diese Code-Stelle schneller zu erreichen? Ganz genau: Wir können im Code das zu testende Modul Instanzieren (müssen ggf. noch einen Kontext herstellen) und die zu testende Methode mehr oder weniger direkt ansprechen. Ist der Unit-Test einmal erstellt, müssen wir ihn nicht nochmal erstellen und können ihn jedes Mal aufs Neue nutzen um zu debuggen. Etwas Refactoring am Test und wir haben Tests, die wir sogar automatisiert ausführen lassen können. Mit dieser Variante verringern wir den Implementationsaufwand um – sagen wir mal pessimistisch – zwei Tage und der endgültige Aufwand (inklusive Support und Bugfixing) liegt nun bei 10 Tagen.

Klasse oder? Wir sparen somit 5 Tage an Aufwand :-)

Klar ist die Rechnung etwas pauschalisiert, entspricht aber ungefähr meinen Beobachtungen und mir geht es hier ums Prinzip. Die Vorteile von testgetriebener Entwicklung ist keine philosophische Diskussion, sondern eine Tatsache die sich auf das Budget auswirken kann.

Es gibt weitere Methoden den Aufwand zu verringern, die nicht ganz so offensichtlich sind oder sich langfristiger auswirken:

  • Pair Programming
  • Code Reviews
  • Code Generierung
  • Verbesserung der Code Qualität
  • Regelmäßige Übungen, z. B: per Coding-Dojos
  • Fortbildung

Achtung Werbung: By the Way unterstütze ich Unternehmen gerne bei der Steigerung der Entwicklungs-Performance und der Software-Qualität mit entsprechenden Beratungen und Schulungen

Jede Ausrede sich gegen Unit-Tests und Continous Integration zu entscheiden lasse ich persönlich nicht durchgehen. Für mich ist das Netz und doppelter Boden ohne die ich Software nur ungern und mit schlechtem Gefühl im Magen herausgebe. Zumindest im Team mit unterschiedlichen Wissens- und Kenntnisständen sind diese Techniken ein MUSS um das Funktionieren der Software zu gewährleisten.

Hier ein scheinbar übliches Scenario:

Chef: Bist du fertig?
Dev: Ja.
Chef: Funktioniert auch alles?
Dev: Ja.
Chef: Hast du auch getestet?
Dev: Ja.
Chef: (eine Stunde später) Wie testest du denn? Ich habe noch drei Fehler gefunden. Da funktioniert Garnichts...
Dev: Bei mir tut’s aber.

Wäre es so nicht schöner?

Chef: Bist du fertig?
Dev: Ja, funktioniert alles wie gefordert. Hier ist der Testbericht
Chef: (eine Stunde später) OK. Hier sind drei neue Anforderungen. Kannst du das umsetzen?

Ich als Softwareentwickler möchte komplexe Logiken durch Tests vor Änderungen und anderen äußeren Einflüssen abgesichert haben. Ich möchte genauso beweisen können, dass meine Umsetzung alle Kriterien erfüllt. Das ist mit Unit-Tests machbar.

XML parsen mit jQuery

25.02.2013 02:07:01 | Jürgen Gutsch

Wenn jQuery DOM kann ist es egal ob es sich um HTML oder XML handelt. Das habe ich letzte Woche festgestellt, als es darum ging XML (leider kein JSON) vom Server zu laden und zu interpretieren.

So viel Lektüre gibt es zu dem Thema noch nicht, weswegen ich davon ausgehe, dass hier durchaus auf Interesse stoßen kann :-)

Also jQuery kann nicht nur HTML sondern auch XML. Das interessante dabei ist, dass nicht per XPath durch die elemente navigiert, sondern durchaus mit den gewohnten jQuery Selektoren arbeiten kann.

Folgender kleiner Ajax-Aufruf holt mir die XML-Daten von einer angegebenen URL:

$.ajax({
    url: url,
    success: function (xml) {
        setTitle(xml);
        setContent(result);
    }
});

in der Methode setTitle greife ich dann per jQuery-Selector auf den wert zu der mir als Titel ausgegeben werden soll:

function setTitle(xml) {
    var title = $(xml).find('menuname').text();
    $('#header').text(title);
}

mit dem Aufruf von $(xml) erzeuge ich ein jQuery-DOM-Objekt der XML-Daten die hier als String zur Verfügung stehen. über die Methode find('menuname') hole ich mir das Objekt des “menuname”-Tags um dann den Inhalt auszulesen.

Im folgenden (nicht ganz schönen) Konstrukt iteriere ich durch eine Anzahl von “element”-Tags um dann auch auf deren Attribute zuzugreifen:

$(xml).find('element').each(function () {
    var type = $(this).attr('type');
    if (type === "paragraph") {
        result += $(this).find('text').text();
    }
    if (type === "image") {
        var imageValue = $(this).find('picture').text();
        result += '<image src="' + imageValue + '">';
    }
});

Wie man sieht, sind das tatsächlich die klassischen jQuery-Methoden die hier verwendet werden. Ein umständliches Umwandeln in JSON ist für einfache kleine Datenmengen auf diese Art nicht notwendig. Nochweniger muss auf XMLHTTP oder XMLDOM zurückgefriffen werden um sich mühsam durch den DOM zu hangeln.

Selbstverständlich sind auch etwas komplexere Selektoren möglich:

$(xml).find('page containers container[name=content] elements element').each(function(){
    //
});

Was ich nicht getestet habe, sind CSS-Class- und ID-Selektoren im XML. Ich kann mir allerdings gut vorstellen, dass diese ebenfalls funktionieren. Falls man CSS-Classes und IDs im XML nutzen möchte ;-)

C++ Entwickler? - ADC C++ 2013 Sessions sind jetzt live

22.02.2013 19:38:09 | Christian Binder

Ich hatte in folgendem Post schon die ADC C++ 2013 angekündigt und einige Sprecher vorgestellt. Jetzt haben wir 90% der Sessions fest, Zeit darüber zu posten. Neben den Keynotes von Steve Teixeira und Tarek Madkour habe ich mich ganz besonders gefreut, dass wir neben den Embedded Sessions auch T.Roy zum Thema Windows Driver Development und Debugging gewinnen konnten. Definitiv keine Inhalte, die auf vielen Konferenzen angeboten werden.

Auf meinem ersten Post hatte ich dann das Feedback bekommen, dass eine Session zum Thema “Analyse von Fehlern in Produktiven Umgebungen mit Hilfe von Memory Dumps” mal was wäre… aber von jemanden, der es schon mal gemacht hat. OK….. Als ich vor 14 Jahren beim Microsoft angefangen hatte war ich mit Martin Grasruck zusammen als Escalation Engineer im IIS Team. Martin ist jetzt Escalation Engineer für Windows Azure, also 14 Jahre Erfahrung in Post Mortem Debugging, passt oder?

Kurzum, ich hoffe, dass einige Interessante Vorträge für Euch dabei sind.

Hier ein kompakter Überblick. Mehr Details zu allen Sprechern und Vorträgen findet Ihr hier.
Die konkrete Agenda gibt es dann auch in Kürze.

Keynote Day 1

Building Modern Device Apps with C++ (Steve Teixeira)

Keynote Day 2

DirectX Graphics Development with Visual Studio 2012 (Tarek Madkour)

Code Quality and Debugging

KMDF Driver Debugging Tools (Roy T.)

Warum wird Code so wie er ist? (Holger Kolb)

Sicher sein oder sicher fühlen? - Sicheren C++ Code schreiben (Oliver Niehus)

Analyse von Anwendungsfehlern mit Hilfe von Memory Dumps (Martin Grasruck)

Debugging ohne Debugger mit den Debugging API's (Matthias Wedemeyer)

Language : C++ 11 and beyond

Trends and Future of C++ Standard and ISOCPP.org (M. Wong)

Transactional Memory in C++ (M. Wong)

Einfacheres C++ mit C++11 (Peter Sommerlad)

Atomics for C++ (Detlef Vollmann)

Windows Development

Developing Windows 8 Drivers with Visual Studio 2012 (T.Roy)

Windows XP/Vista/7/8(9/10/n) Desktop Kompatibilität – Wann ist eine Anwendung kompatibel? (Oliver Niehus)

Media Apps in Windows 8 und Windows Phone 8 (Gunter Logemann)

Windows 8 Store Apps mit C++ und XAML erstellen (Thomas Trotzki)

Building Windows 8 Store Apps using C++/CX and WRL (Tarek Madkour)

Embedded

Windows Embedded 8 Standard im Überblick (Alexander Wechsler)

Windows Embedded Compact 2013 eine technische Einführung (Reiner Gerczuk)

Team Foundation Server als ALM Plattform für Embedded Software (Thomas Hemmer)

Visual Studio & Cloud

C++ Unit Testing mit Visual Studio 2012 (Thomas Trotzki)

Effiziente Entwicklung im Team mit TFS 2012 (C.Binder)

What’s New in Visual Studio 2012 for C++ Developers (Tarek Madkour)

Building and Consuming Cloud Services with C++ (Steve Teixeira)

Parallel Development

Performance-Optimierung für parallelen C++ Code auf Windows (Intel)

Massive Parallelisierung mit C++ AMP (Bernd Marquart)

Parallel Development und Profiling (Bernd Marquart)

Special

C++ Programmieren und Optimieren auf Xeon Phi (Intel)

Gestensteuerung für Windows mit Kinect  (Gunter Logemann)

DNUG Braunschweig - MVVM mit Windows 8 – wirklich einfach, oder?

21.02.2013 11:04:00 | Lars Keller

Die DNUG Braunschweig trifft sich am 26.02.2013 um 19:00 im Restaurant Zucker (Tagungsraum). Dieses Mal hält unser Co-Leiter Karim El Jed Mitglied einem Vortrag zum Thema “MVVM mit Windows 8”.

Abstract
Das Model-View-ViewModel Pattern ist schnell erklärt und eigentlich auch leicht zu verstehen. Geht es dann an den praktischen Einsatz tauchen ziemlich schnell viele Fragezeichen auf: Wo und wann wird eigentlich das ViewModel instanziert? Wie funktioniert das doch gleich mit dem DataBinding? Was ist ein Command und darf die View jetzt überhaupt keinen Code mehr enthalten?
Diese und weitere Fragen werden im Vortrag anhand von praktischen Beispielen beantwortet.

Es werden auch Grenzen für die Anwendung von MVVM mit Windows 8 aufgezeigt und wie man diese Überwinden kann. Es wird bewusst auf den Einsatz eines bestehenden MVVM-Frameworks verzichtet und die Konzepte anhand einfacher Implementationen erläutert.
Bio
Karim El Jed arbeitet als Senior Entwickler bei der H&D International Group. Dort beschäftigt er sich hauptsächlich mit der App-Entwicklung für Windows 8 und Windows Phone 8. Er entwickelt seit über 12 Jahren individuelle Software im Microsoft-Umfeld und ist auf verschiedenen Konferenzen als Sprecher oder „Ask the Expert“ (ATE) anzutreffen.

Karim ist Mitbegründer der .NET Developer Group Braunschweig und seit 2007 Co-Lead der INETA Deutschland. In seinem Blog Karims KrimsKramsKiste publiziert er technische Artikel, twittert unter @karim_el_jed und ist auch über XING erreichbar.

Wie immer ist die Veranstaltung kostenlos! Weitere Informationen zur DNUG Braunschweig können hier gefunden werden: http://www.dotnet-braunschweig.de

Der kurze Weg : Team Explorer 2012 Keyboard Shortcuts

20.02.2013 13:04:00 | Christian Binder

Ist zwar schon länger bekannt, aber im täglichen Umgang mit dem Team Explorer möchte man vielleicht die verschieden Bereiche direkt mit Shortcuts ansprechen. Eigentlich sehr einfach zu merken, mit CRTL+0 den Fokus auf den Team Explorer setzen, gefolgt von dem Anfangsbuchstaben des Bereichs z.B. P für Pending Changes.

 

image

 

 

Hier die Shortcuts im Team Explorer 2012 :

Shortcut Team Explorer Page
Ctrl+' Search
Ctrl+0,H Home
Ctrl+0,P Pending Changes
Ctrl+0,M My Work
Ctrl+0,W Work Items
Ctrl+0,B Build
Ctrl+0,R Reports
Ctrl+0,D Documents
Ctrl+0,S Settings
Ctrl+0,A Web Access – team home page
F5 Refresh
Ctrl+Up Arrow Move focus to the previous visible section header
Ctrl+Down Arrow Move focus to the next visible section header
Alt+Left Navigate backward
Alt+Right Navigate forward
Alt+Home Focus the navigation control
Alt+0 Focus the page top level content
Alt+[1-9] Focus the visible section [1-9] level content
Alt+Up Focus the previous visible section content
Alt+Down Focus the next visible section content

MVP Showcase @ Summit – Ich bin dabei!

16.02.2013 15:58:05 | Lars Keller

Als einer von 20 MVPs werde ich morgen das Projekt “Kinash” auf dem Microsoft MVP Global Summit präsentieren.

In der Agenda steht:

Join us for this very special event that will showcase 20 select MVPs and their impact on communities around the world. In this expo-type setting, each MVP will host a booth to demonstrate their work and speak with their peers. Many Microsoft Teams will be there too, including

Ich freue mich sehr die Gelegenheit zu haben, anderen MVP und Microsofties etwas zu unserer Entwicklung erzählen zu können. Ich bin gespannt auf die Fragen und Ideen der Teilnehmer.

Update:

Es gibt ein Microsoft Video zu dem Event.

Mein Buch ist fertig!

11.02.2013 08:53:00 | Jörg Neumann

Nach fast 12 Monaten Arbeit ist mein Buch “Windows Store Apps entwickeln mit C# und XAML” endlich fertig.

Neues Cover

Hierin beschreibe ich die wichtigsten Konzepte und Techniken zur Entwicklung von soliden Windows Store Apps. Hier ein Auszug auch dem Abstract:

Windows Store-Apps definieren eine neue Gattung in der Windows Entwicklung für moderne Endgeräte wie Tablets, Smartphones und Ultra Books. Als .NET-Entwickler bringen Sie bereits das erforderliche Grundwissen mit, um in kürzester Zeit zu lernen, eigene Apps für Windows 8 zu entwickeln und erfolgreich im App Store zu vermarkten. Darüber hinaus können Sie mit der neuen Plattform auch Business Apps entwickeln und in Ihrem Unternehmen verteilen.
Das Buch stellt ausführlich die neuen Konzepte vor und führt Sie Schritt für Schritt in die Entwicklung ein. Hierbei lernen Sie nicht nur die wichtigsten APIs der neuen Windows Runtime kennen, sondern erfahren auch was beim App-Design zu beachten ist. Zudem werden wertvolle Tipps für den Zertifizierungsprozess vermittelt, die Ihnen helfen schnell zu Erfolg zu kommen.

Themen des Buches:

  • Architektur der Windows Runtime
  • Anatomie einer Windows Store App
  • Contracts und Capabilities
  • Navigation, App Bars und App State
  • XAML: Die Extensible Markup Language
  • Ressourcen, Styles und Templates
  • Oberflächen entwerfen mit Layout und Controls
  • Elemente animieren und transformieren
  • Datenbindungstechniken und Semantic Zoom
  • Oberflächen für verschiedenen Darstellungsformen realisieren
  • Lokalisierung: Apps für unterschiedliche Sprachen bereitstellen
  • Apps nach dem MVVM-Pattern entwickeln
  • Interaktivität mit Tiles & Notifications
  • Kommunikation mit Dateisystem und externen Services
  • Apps zertifizieren und im Windows Store veröffentlichen
  • In-App-Verkäufe und Trail-Versionen bereitstellen

Weitere Details finden Sie unter http://www.amazon.de/Windows-Apps-entwickeln-mit-XAML/dp/3866455631

LightCore 1.5.1 auf NuGet verfügbar

09.02.2013 13:54:04 | Jürgen Gutsch

Die von Peter Bucher aktualisierte LightCore Version 1.5.1 ist nun auch auf Nuget verfügbar.

Das Core Package mit LightCore, Configuration und dem CommonServiceLocator für .NET4.0,  .NET3.5, .NET-CF3.5 und Silverlight:
https://nuget.org/packages/LightCore/

Das Web Integration Package für .NET4.0 und .NET3.5 und der Abhängigkeit zum Core Package:
https://nuget.org/packages/LightCore.WebIntegration/

Sollte irgendwas mit dem Package nicht stimmen, etwas fehlen, etc. freue ich mich über eine Nachricht um ein eventuelles Problem schnell beheben zu können.

(Diesmal waren die Package tatsächlich in 15 Minuten erstellt *fg*)

LightCore 1.5.1 Release

09.02.2013 01:45:00 | Peter Bucher

Es wurde soeben die Version 1.5.1 von LightCore veröffentlicht.

LightCore ist auf Constructor Injection optimiert. In der Version 1.5 hat sich leider ein Fehler eingeschlichen.
Die PropertyInjection wurde bei jeder Typenauflösung ausgeführt. Dies führte zu einer StackOverlow-Exception wenn eine zirkuläre Abhängigkeit, z.B. View.Presenter / Presenter.View vorhanden ist.

Da LightCore zirkuläre Abhängigkeiten nicht unterstützt wird, wurde die automatische PropertyInjection entfernt. So sollten keine Fehler mehr auftreten und das PropertyInjection ist optional.

Das aktuelle Release findet sich unter http://lightcore.ch/

Ich entschuldige mich für die Unanehmlichkeiten und wünsche viel Erfolg.

Gastbeitrag: MVP oder MVVM? Was gehoert wohin?

06.02.2013 20:14:00 | Peter Bucher

Einleitung

Ein Kollege von mir hat sich intensiv mit den Designpatterns MVP und MVVM auseinandergesetzt und unter anderem auch mit mir diskutiert.
Da ich seine Gedanken sehr interessant fand, kam uns schlussendlich die Idee, diese als Gastbeitrag in meinem Blog zu veröffentlichen.
Der Hauptgedanke dieser Veröffentlichung ist Entwirrung und das Einholen von Feedback zu diesem Thema aus meiner Leserschaft.

In diesem Sinne wünsche ich euch viel Spass mit dem Gastbeitrag und wir freuen uns auf reichliches Feedback.

Gastbeitrag

Die Designpatterns MVP (Model - View - Presenter) und MVVM (Model - View - ViewModel) sind Designpatterns für die Strukturierung und Trennung von Daten, Ansicht und Presentationslogik.
Ich habe mich im Zusammenhang mit der Entwicklung eines Applikationsframework für Businessanwendungen damit beschäftigt und schaute dazu im Internet verschiedene Implementierungen und Blogeinträge an. Mein Verständnis hatte sich dabei nicht vergrössert, sondern erstmal mehr Verwirrung geschaffen:

  • Was ist der Unterschied zwischen einem Model und einem Entity?
  • Was ist ein Presenter?
  • Was ist Presentationslogik?
  • Was ist der Unterschied zwischen Presenter und ViewModel?

Ich versuche möglichst knapp meine Ansicht mitzuteilen und auch Beispiel-Code anzubieten. Im folgenden Beispiel verwende ich das MVP-Pattern:

Entity / Model:

Ein Entity enthält Daten wie Name, Adresse und Ort usw. z.B. eines Customers:

 


public class CustomerEntity
    {
        public int CustomerId { get; set; }

        public string Name { get; set; }

        public string Address { get; set; }

        public string Location { get; set; }
    }

 

Ein Model enthält wiederum ein oder mehrere Entities (z.B. ein zu editierender Customer oder ein Suchergebnis).

Das Model stellt die dazugehörenden Methoden, um Entities zu laden, zu suchen oder abzuspeichern zur Verfügung.
Zusätzlich darf im Model der Status des Views gespeichert werden, z.B. IsCustomerSelected, um gebunden mit der Eigenschaft IsEnabled eines Button zu unterscheiden, ob ein Customer im ListView der Ansicht selektiert wurde und somit editiert werden kann oder nicht.
Eigenschaften wie die eines Customers sollten meiner Meinung nach nicht im Model zur Verfügung gestellt werden, sondern getrennt in einem separaten Entity, obwohl dies in den meisten Artikel bezüglich MVP / MVVM genau anders dargestellt wird.
Im MVVM-Pattern wird von Microsoft empfohlen, die Daten sogar im ViewModel (Presenter) einzufügen; diese Mischung zwischen einerseits Daten und Presentationslogik steht die Möglichkeit entgegen, ableitbare Model-BasisKlassen für Daten und Basisklassen für Presentationslogik zu entwickeln.

In der Basisklasse für Modelle sollte INotifyPropertyChanged implementiert werden, damit die Ansicht, falls mit DataBinding gearbeitet, aktualisiert wird.

 


public class Model : INotifyPropertyChanged
    {
        public void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

public class EditCustomerModel : Model
    {
        private CustomerEntity _customer;

        public void NewCustomer()
        {
            this.Customer = new CustomerEntity();
        }

        public void EditCustomer(int customerId)
        {
            // Code, um Customer Entity zu laden
            // this.Customer = ...
        }

        public CustomerEntity Customer
        {
            get { return _customer; }
            set
            {
                _customer = value;

                this.OnPropertyChanged("Customer");
            }
        }
    }

public class SearchCustomerModel : Model
    {
        private IEnumerable<CustomerEntity> _customers =
new List<CustomerEntity>();

        private CustomerEntity _selectedCustomer = null;

        public CustomerEntity SelectedCustomer
        {
            get { return _selectedCustomer; }
            set
            {
                _selectedCustomer = value;

                // Aktualisiert DataBindings für SelectedCustomer
                this.OnPropertyChanged("SelectedCustomer");

                // Aktualisiert die IsEnabled Eigenschaft des Buttons
                this.OnPropertyChanged("IsCustomerSelected");
            }
        }

        public IEnumerable<CustomerEntity> Customers
        {
            get { return _customers; }
            set
            {
                _customers = value;

                // OnPropertyChanged aktiviert das updaten der Liste in der Ansicht, falls DataBinding verwendet wurde
                this.OnPropertyChanged("Customers");
            }
        }

        public void LoadAllCustomers()
        {
            // Code, um alle CustomerEntities zu laden
            // this.Customers = ...
        }

        public void SearchCustomers(string text)
        {
            // Code, um CustomerEntities zu laden
        }

        public bool IsCustomerSelected
        {
            get
            {
                return this.SelectedCustomer != null ? true : false;
            }
        }
    }

 

 

View:

Die Views hier als Code bereitzustellen, sprengt den Rahmen dieses Artikels. Ich bitte hierzu die Vorstellungskraft des Lesers zu bemühen, um sich die Views für EditCustomerView und SearchCustomerView vorzustellen.
Das Databinding für ListView und SearchCustomerModel.Customers, sowie den Edit Button mit IsCustomerSelected zu verknüpfen, können wir uns vorstellen.
Im View ist eine Referenz auf den Presenter zu setzen, um auf die Methoden des Presenters zugreifen zu können.

 


public partial class SearchCustomerView : Page
    {
        private SearchCustomerPresenter Presenter { get; set; }

        public SearchCustomerView()
        {
            InitializeComponent();

            // Neue Presenter Instanz
            this.Presenter = new SearchCustomerPresenter();

            // Model binden mit DataContext des View für DataBinding
            this.DataContext = this.Presenter.Model;

        }

        private void searchButton_Click_1(object sender, RoutedEventArgs e)
        {
            this.Presenter.SearchCustomers(this.searchTextBox.Text);
        }

        private void loadAllCustomers_Click_1(object sender, RoutedEventArgs e)
        {
            this.Presenter.LoadAllCustomers();
        }
    }

 

Presenter / ViewModel:

Persönlich finde ich die Namensgebung Presenter besser als ViewModel; so kann besser zwischen Model-, View- und Presenterklassen unterschieden werden.
Im Presenter ist die Presentationslogik. Der Presenter delegiert meistens nur vom View zum Model.
Microsoft empfiehlt bezüglich MVVM das ViewModel (Presenter) als DataContext im View zu setzen - dies im Zusammenhang mit Commands, die sich im Presenter befinden und mit Steuerelementen des Views gebunden werden; in meinem Beispiel setze ich als DataContext das Model.

Ich meine, dass das MVVM Schema im Sinne von Microsoft hinterfragt werden muss, denn Microsoft trennt im MVVM-Schema nicht klar zwischen Model und Presenter oder besser ausgedrückt zwischen Daten und Presentation. Das Model klar vom ViewModel (Presenter) zu trennen, ist ja aber gerade die ursprüngliche Idee dieser Pattern MVP und MVVM.

Meiner Ansicht nach gehören Daten ins Model und nicht in die Presentationslogik: deshalb setze ich das Model als DataContext im View und nicht das ViewModel (Presenter).

In meinem Beispiel habe ich eine einfache Implementierung verwendet, ohne Kommunikation zwischen Presenter und View:

 


public class EditCustomerPresenter
    {
        public EditCustomerPresenter()
        {
            this.Model = new EditCustomerModel();
        }

        public void NewCustomer()
        {
            this.Model.NewCustomer();
        }

        public void EditCustomer(int customerId)
        {
            this.Model.EditCustomer(customerId);

            // Falls ohne DataBinding per xaml:
            // UpdateView();
        }

        public EditCustomerModel Model { get; set; }
    }

public class SearchCustomerPresenter
    {
        public SearchCustomerPresenter()
        {
            this.Model = new SearchCustomerModel();
        }

        public SearchCustomerModel Model { get; set; }

        public void SearchCustomers(string text)
        {
            this.Model.SearchCustomers(text);
        }

        public void LoadAllCustomers()
        {
            this.Model.LoadAllCustomers();
        }
    }

 

Um nun an einem ganz kleinen Beispiel zu veranschaulichen, was Presentationslogik ist, erweitere ich die SearchCustomers Methode etwas:

 


public void SearchCustomers(string text)
        {
            this.Model.SearchCustomers(text);
               
MessageBox.Show(String.Format("{0} Kunde(n) gefunden.", this.Model.Customers.Count()));
           
        }

 

Wo sonst sollte die MessageBox die Anzahl der Ergebnisse anzeigen, wenn nicht in der Presentationslogik des Presenters? Diese Info soll natürlich nur die Presenationslogik veranschaulichen; solche unnötigen Infos sollten in Businessapplikationen vermieden werden.

Auch erfahrene Entwickler brauchen etwas Zeit, wenn sie sich zum ersten Mal mit MVP und MVVM beschäftigen, um diese Patterns zu verstehen. Das beste Verständnis habe ich persönlich beim Implementieren eigener MVPs gewonnen und kann das nur weiterempfehlen.

Hier eine fragwürdige Implementierung des MVVM:

http://msdn.microsoft.com/de-de/magazine/dd419663.aspx

Hierzu einige Äusserungen:
Erstmal vorne weg: In diesem Artikel scheint ein Model gar nicht erst vorzukommen; die Daten wurden in das ViewModel, bzw. in den Presenter, also in die Presentationlogik hineingesetzt. Deshalb wurde dort auch die Schnittstelle INotifyPropertyChanged implementiert, die klar ins Model gehört.


Fazit:
 
Der MVP Pattern trennt klar Model und Presenter; der MVVM Pattern scheint diese Trennung nicht mehr anzustreben. Auch wenn wir uns vorstellen, Models zu entwickeln, die mit Hilfe von Generics standardmässig Eigenschaften zur Verfügung stellen, scheint mir die Trennung zwischen Model und Presenter im Sinne der Klassenhierarchie wichtig; So würden wir wohl Basisklassen einerseits für Daten-Modelle und andererseits für Presentationslogik erstellen und kaum beides in eine ViewModel-Klasse zwängen.
Wichtig ist für mich auch die Trennung zwischen Entity und Model.
Der MVVM Pattern scheint einige sinnvolle Eigenheiten des MVP Pattern über Bord zu schmeissen (z.B. klare Trennung zwischen Model und Presenter). Die aufwendige Verwendung von Commands sehe ich nicht als existentielle Erweiterung beim MVVM; ich sehe die MVP Implementierung als einfacher und klarer an.


Stefan Werdenberg, IntegralFramework

LightCore 1.5 auf NuGet verfügbar

06.02.2013 00:17:03 | Jürgen Gutsch

Am 25. Januar 2013 hat Peter Bucher das Release 1.5 von LightCore bekannt gegeben.

Die aktuellen Bibliotheken sind auf der Website verfügbar, genauso wie eine ausführliche Dokumentation und der Zugang zu den Sourcen.

Als ich den Beitrag (leider etwas spät) in seinem Blog entdeckte, war das Grund genug für mich, dass ich mich gestern eine viertel Stunde hinsetze um die Nuget Packages auf NuGet.org aktualisieren.

Auf Anhieb wollte das nicht klappen, da sich NuGet seit ich die ersten LightCore Packages gemacht habe weiterentwickelt hat. Damals gab es noch keinen Owner, der einen als Herausgeber / Verwalter / etc. eines Packages kennzeichnet. Die alten Packages hatten also keinen Owner und ich war somit nicht berechtigt ein Update zu machen.

Ein Ticket bei der NuGet Gallery ein paar DMs per Twitter mit dem NuGet Gallery Team und der Owner war nachgetragen. Vielen Dank an dieser Stelle für die schnelle und unkomplizierte Hilfe durch das NuGet Team.

Aus der Viertel Stunde wurden dann halt doch insgesamt zwei, aber ich kann nun hiermit ankündigen, dass LightCore 1.5 auf und per NuGet verfügbar ist.

Das Core Package mit LightCore, Configuration und dem CommonServiceLocator für .NET4.0,  .NET3.5, .NET-CF3.5 und Silverlight:
https://nuget.org/packages/LightCore/

Das Web Integration Package für .NET4.0 und .NET3.5 und der Abhängigkeit zum Core Package:
https://nuget.org/packages/LightCore.WebIntegration/

Sollte irgendwas mit dem Package nicht stimmen, etwas fehlen, etc. freue ich mich über eine Nachricht um ein eventuelles Problem schnell beheben zu können.

Springwald Radio ab sofort on-air!

06.02.2013 00:13:00 | Daniel Springwald

Springwald Radio 

Ein Hinweis in eigener Sache: Ab sofort sendet Springwald Radio.

Das Thema der ersten Sendung lautet "Sicherheit im Web":

Thomas Smits berichtet über die Internet-Sicherheit aus Sicht des Benutzers, woran man Sicherheitsmängel bei Internetangeboten erkennen kann und welche Maßnahmen die Betreiber von Webseiten ergreifen können, um ihren Nutzern ein möglichst sicheres Umfeld zu ermöglichen.

Hier könnt ihr die Sendung direkt und kostenfrei anhören

Dependency Injection, ASP.NET MVC 4 und Autofac

05.02.2013 01:55:01 | Jürgen Gutsch

In annähernd jedem Projekt nutze ich seit 2008 Dependency Injection (DI) um Komponenten und Module lose zu koppeln, die Nutzung zu Vereinfachen und vor allem, um die Testbarkeit zu gewährleisten.

DI gibt die Abhängigkeiten (Sub-Komponenten) von außen in die Komponente herein, statt innen zu erzeugen. Üblicherweise werden die Abhängigkeiten über den Constructor injiziert, in manchen Szenarien macht auch die Injektion über öffentliche Eigenschaften Sinn.

Beispiel abhängige Komponenten:

public class DataRepo
{
    public void SaveMyData(IEntity data) {}
}

public class BusinessService
{
    private readonly DataRepo _repo;
    public BusinessService()
    {
        _ repo = new DataRepo();
    }
}

In diesem Szenario kann die Komponente BusinessService nicht isoliert ohne das DataRepository getestet werden. Möglicherweise hat das DataRepository weitere Abhängigkeiten an eine Datenbank, was die Sache dann noch schwieriger macht.

Die Lösung bietet die Entkopplung der Komponenten:

public interface IDataRepo
{
    void SaveMyData(IEntity data);
}

public class DataRepo : IDataRepo
{
    public void SaveMyData(IEntity data) {}
}

public class BusinessService
{
    private readonly DataRepo _repo;
    public BusinessService(IDataRepo repo)
    {
        _ repo = repo;
    }
}

Nun kann ich die Instanz des DataRepository von außen hineingeben:

var repo = new DataRepository();
var service = new BusinessService(repo);

Im Falle eines UnitTest, kann ich eine Simulation eines Repository hineingeben, das Testdaten liefert oder so tut als würde es Daten speichern können.

IoC-Container

IoC-Container sind Werkzeuge, die einem das instanziieren der Objekte abnehmen, deren Lebenszeit verwalten können und in der Regel das hineingeben (injizieren) von Abhängigkeiten abnehmen. Alle IoC-Container machen das fast auf die gleiche Weise, mal mit etwas mehr, mal mit etwas weniger zusätzlicher Unterstützung.

Im Grunde wird einem IoC-Container immer nur mitgeteilt, für welches Interface er welche konkrete Klasse instanziieren und hineingeben kann. Dabei werden für die zu instanziierenden Klassen wieder die Abhängigkeiten aufgelöst und hineingegeben.

Mehr zu IoC-Container hat Peter Bucher in folgenden Beiträgen geschrieben:

Autofac

Autofac ist ein Leichtgewichtiger IoC-Container der unter anderem diverse Unterstützung für ASP.NET (Webforms, MVC3, MVC4 und Web API), MVC, MEF und SignalR bietet. Das Framework wird als Open Source auf Google Code gehostet. Autofac und die einzelnen Unterstützenden Bibliotheken können auch per NuGet in die Projekte integriert werden:
http://nuget.org/packages?q=Autofac

DI mit MVC

Hier möchte ich kurz vorstellen wie Autofac als DIIoCContainer in ASP.NET MVC4 genutzt werden kann, um Abhängigkeiten in Controllern und sogar in AktionFiltern aufzulösen.

Als ersten Schritt wird analog zu den anderen MVC Konfigurationen eine Klasse IocConfig im Verzeichnis App_Start angelegt. die dann ebenso in der Global.asax.cs aufgerufen wird.

public static void RegisterDependencies()
{
    var currentAssembly = typeof(MvcApplication).Assembly;

    var builder = new ContainerBuilder();

    builder.RegisterControllers(currentAssembly);
    builder.RegisterModelBinders(currentAssembly);
    builder.RegisterModelBinderProvider();
    builder.RegisterFilterProvider();
    builder.RegisterModule(new AutofacWebTypesModule());

    builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
    builder.RegisterType(typeof(UnitOfWork)).As(typeof(IUnitOfWork));

    var container = builder.Build();

    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}

Nach der Instanziierung des ContainerBuilder sehen wir hier die MVC4 Integration von Autofac:

  • RegisterControllers holt automatisch alle Controller aus der angegebenen Assembly und registriert sie im ContainerBuilder
  • RegisterModelBinders macht das wie RegisterControllers nur für ModelBinder
  • RegisterModelBinderProvider registriert den AutofacModelBinderProvider, eine Autofac Implementation des IModelBinderProvider
  • RegisterFilterProvider ermöglicht das injizieren von Abhängigkeiten in eigene ActionFilter
  • Als letztes in diesem Block sehen wir die Registrierung eines Moduls, welches die MVC spezifischen HTTP-Abstraktionen im ContainerBilder registriert, um diese automatisch in die Komponenten hineinzugeben.

In den nächsten zwei Zeilen sehen wir die Typische Registrierung von Mappings zwischen Interface und konkreten Klassen. In der ersten Zeile die Registrierung von generischen Typen die in meinem Fall sehr nützlich ist um mit einer Registrierung sechs bis sieben Daten-Repositories zu erschlagen.

Zuletzt wird der Container gebaut und dem AutofacDependencyResolver hinzugefügt, der wiederum als DepencyResolver dem ASP.NET MVC4 hinzugefügt wird.

Wer’s nicht glaubt, kann es gerne selber asuprobieren, aber das wars tatsächlich schon fast ;-)

Nun kann der MVC Controller einfach mit einem oder mehreren Constructor Parametern ausgestattet werden und wir können mit den injizierten Instanzen arbeiten als hätten wir sie selber erstellt:

public class HomeController : Controller
{
    private readonly IUnitOfWork _unitOfWork;
    public HomeController(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
    }
[...]
}

Weitere IoC-Container

In den nächsten Beiträgen zeige ich die Konfiguration von folgenden weiteren IoC-Containern anhand des selben Szenarios

  • LightCore
  • Unity
  • NInject
  • StructureMap
  • Castle Windsor

[Update]

Auf Anfrage eines Lesers nehme ich noch StructureMap in die Liste mit auf und erweitere dann auch gerne um Castle Windsor. Ich muss allerdings dazu sagen, dass ich selber StructureMap und Castle Windsor nie selber verwendet habe und ich mich erst etwas einlesen muss.

Der genannte Leser würde hier im Blog auch gerne einen Vergleich der Container sehen. Wer noch? Eventuell lasse ich mich ja noch überreden. ;-)

[Update2]

“DI-Container” nach “IoC-Container” geändert. Danke an Laurent Bugnion der mich gestern in seinem Vortrag bei der Zurich Developers .NET User Group daran erinnert hat dass es da einen erheblichen Unterschied in der Definition gibt ;-)

Nur noch vier Wochen bis zur CeBIT

04.02.2013 19:46:48 | Mathias Gronau

Vom 5. Bis 9. März ist es wieder so weit: die CeBIT öffnet in Laatzen bei Hannover ihre Pforten. Für alle, die nicht bis dahin auf die Neuheiten und Innovationen warten wollen, veröffentliche ich hier eine Pressemitteilung der Messe AG in Hannover. Geht es um Businessmodelle für die Zukunft, zählen “Crowdsourcing” und dessen populärste Spielart “Open Innovation” zu den vielversprechendsten Ansätzen. Immer mehr Unternehmen nutzen die Chance, sich Know-how oder innovative Denkanstöße von außen zu holen, um bestimmte Aufgabenstellungen zu lösen oder neue Produkte zu entwickeln. Die CeBIT fördert diese neue Art des Wirtschaftens und stellte auf der CeBIT-Preview eine herstellerübergreifende Open-Innovation-Plattform vor, die unter der Webadresse https://innovation.cebit.de erreichbar ist.   “Die CeBIT ist seit jeher der Ort für Innovationsfindung und kreative Impulse. Mit CeBIT Open Innovation gehen wir einen Schritt weiter und schaffen einen virtuellen Raum für kreative Ideenschaffung. Unternehmen, die den Zugang zur ITK-affinen Zielgruppe suchen, sind herzlich eingeladen, die neue Plattform zu nutzen”, sagte CeBIT-Vorstand Frank Pörschmann bei der Vorstellung der Initiative in München. Partner des vielversprechenden Projekts ist die Münchner Firma innosabi, die für zahlreiche namhafte Unternehmen bereits erfolgreiche Open-Innovation- Kampagnen realisiert hat. Als erster Nutzer der neuen CeBIT Open Innovation Plattform ist der Internetbuchhändler Buecher.de an Bord, der Anregungen für die Weiterentwicklung seiner mobilen Website sucht.   Spannende Konzepte für die boomende “Shareconomy” In einer vielbeachteten Keynote im Rahmen der Preview skizzierte Dr. Christian P. Illek, Mitglied des BITKOM -Hauptvorstandes und Vorsitzender der Geschäftsführung von Microsoft Deutschland, eine Zeitenwende in der Industrie. Die neue Ära sei durch das Bedürfnis der Menschen gekennzeichnet, Dinge miteinander zu teilen und sich “mitzuteilen”. “Das verändert die Erwartungshaltung der Nutzer an Software, Services und Endgeräte: Diese müssen einfach, intuitiv und geräteübergreifend nutzbar sein.” Dieser Aspekt der Nutzung von Informationen über unterschiedliche Endgeräte und Cloud-Services hinweg steht laut Illek im Zentrum des Messeauftritts von Microsoft in Halle 4. Das Unternehmen möchte auf der CeBIT die “Shareconomy” und die dahinterliegenden ITK-Prozesse erlebbar machen – beispielsweise mit einem Fahrradverleih der Zukunft: Mit der Suchmaschine Bing Maps kann man einen Drahtesel in der Nähe finden, per NFC-Smartphone (Near Field Communication) das Schloss öffnen und automatisch bezahlen. Ein cloud-basiertes Datacenter übernimmt im Hintergrund das Datenmanagement. Im Ausstellungsbereich “New Experience” können die CeBIT-Besucher außerdem die neuesten Anwendungen für Windows 8, Windows RT und Windows Phone testen und sich über NFC oder kabelloses Aufladen informieren.   Das Thema Vernetzung spielt auch bei Salesforce eine große Rolle, einem der größten Spezialisten für Unternehmensanwendungen in der Internet-Cloud. “Wir wollen Firmen auf der CeBIT zeigen, wie sie zu einer Customer Company werden”, berichtete Peter Ruchatz, Vice President Marketing EMEA Central bei Salesforce, auf der CeBIT-Preview. “Unter Zuhilfenahme von sozialen, mobilen und Cloud-Technologien können sich Unternehmen mit ihren Kunden vernetzen und eine völlig neue Intensität des Dialogs erreichen, aber auch ihre Mitarbeiter und Partner einbinden.” Eine solche Customer Company sei dann hervorragend für die Shareconomy aufgestellt.   Gute Aussichten für Enterprise Content Management Voll im CeBIT-Trend liegen 2013 aber nicht nur Ideen aus der Welt des Teilens, sondern auch ECM-Lösungen (Enterprise [...]

Visual Studio Update 2 bringt MS Fakes nach VS Premium

04.02.2013 15:55:00 | Christian Binder

Das Visual Studio Update 2 bringt nicht nur den Test Hub, Work Item Tagging im Web Access mit sich, sondern auch die Gruppierung von UnitTest basierend auf Test Klassen, was uns einfach gefehlt hat. Natürlich sind noch viel mehr Neuerungen dabei, ein Überblick zum Update 2 findet Ihr hier.

Für mich einer der wirklich wichtigen Punkte ist aber vor allem der Fakt, dass MS Fakes nun in VS Premium verfügbar ist. Christian Jacob hat in folgendem Post alles wichtige zum Thema MS Fakes zusammengefasst.

Die Möglichkeit, eine Code Map aus einem Call Stack während der Debug Session zu erstellen, ist echt hilfreich, um den Überblick zu behalten.

 

image

image 

Das Surface mit Windows 8 Pro kommt – eventuell am 14. Februar – Update –

04.02.2013 09:18:53 | Mathias Gronau

Seit einigen Tagen hat Microsoft eine Website mit der Ankündigung des Surface Pro online. Allerdings zeigt sie lediglich eine Grafik mit der Ankündigung, dass das Gerät demnächst auch in Deutschland erhältlich ist. Einen offiziellen festen Termin gibt es nur für die USA und Canada. In diesen Ländern wird das Surface ab dem 9. Februar nicht nur in den Microsoft Stores, sondern auch bei zwei ausgewählten Elektronikketten erhältlich sein. Für Deutschland hat Microsoft noch keinen offiziellen Termin veröffentlicht. Nicht alle potentiellen Käufer geben sich aber mit dieser Aussage zufrieden. Ein Nutzer des Forums drwindows.de hat einmal im Support-Chat nachgefragt und die folgende Aussage erhalten, die er als Screenshot gesichert hat: Eine ähnliche Aussage erhielt der Schreiber von Cachys Blog. Ihm wurde vom Microsoft-Support für Deutschland eine Markteinführung etwa eine Woche nach dem Launch in den USA genannt. Außerdem verrät Microsoft noch nicht, über welche Kanäle das Surface Pro vertrieben wird. Kommt es wie das Surface RT nur über den Online Store von Microsoft oder wird es auch im Einzelhandel erhältlich sein? Immerhin ist Staples, eine der Elektronikketten, die das Surface Pro in den USA vertreiben werden, auch in Deutschland aktiv. Lassen wir uns überraschen. Eine überraschende Aktion, die auf den ersten Blick etwas kurios wirkt, hat das amerikanische Onlinemagazin Neowin veröffentlicht. Nach dieser Meldung bietet Microsoft Käufern in den USA an, beim Kauf des Surface Pro ein vorhandenes Surface RT in Zahlung zu nehmen. Allerdings stellte Neowin bei einer Umfrage in den Microsoft Stores auch fest, dass nicht alle Stores über diese Aktion informiert waren. Lediglich die Stores in Cincinnati und Indianapolis haben die Aktion bestätigt, während andere Stores erklärten, von dieser Aktion nichts zu wissen. – Update – Wie das Onlinemagazin golem.de berichtet, bestätigt Microsofts Pressestelle den Erscheinungstermin nicht. Das Unternehmen macht weder zum Launchtermin noch zu Preisen oder Vertriebswegen irgendwelche Angaben. Es bleibt also unklar, ob sich hier nur einige Supportmitarbeiter verplappert haben oder ob es sich um Fehlinformationen handelt.

Office 2013 ist offiziell erschienen

04.02.2013 07:48:16 | Mathias Gronau

Seit dem 29. Januar ist das Neue Office in 162 Märkten und 21 Sprachen erhältlich. Neue Funktionen sowie die direkte Anbindung an soziale Netzwerke, SkyDrive und Skype erleichtern die Kommunikation mit Familie und Freunden. Ob Büro oder Freizeit, mit dem Neuen Office hat jeder Anwender künftig sein persönliches Office überall verfügbar, auf PC, Tablet oder Smartphone – und auch auf Macs. Anwender bedienen das Neue Office neben Tastatur auch über Touch oder Stifteingabe.Und das Besondere: Erstmals können Privatanwender ein vollwertiges Office-Paket, Outlook inklusive, als Service abonnieren. Das neue “Office 365 Home Premium” umfasst eine Lizenz zur Installation auf fünf Rechnern (Windows und Macs) und ist somit besonders für Familien und Technikfans mit mehreren Rechnern interessant. Wer nur ein Gerät mit Office nutzt, kann auch weiterhin Office als Office Home & Student 2013, Office Home & Business 2013 und Office Professional 2013 kaufen.“Immer mehr Menschen nutzen mit Notebooks, Tablets und Smartphones gleich mehrere Geräte. Die Technologien helfen, z.B. Beruf und Familie besser miteinander zu vereinbaren”, sagt Dr. Christian P. Illek, Vorsitzender der Geschäftsleitung von Microsoft Deutschland. “Auch mit dem Neuen Office orientieren wir uns genau an den Belangen unserer Anwender und ermöglichen ihnen ein Höchstmaß an Flexibilität. So können Anwender mit Office 365 Home Premium ein Dokument auf dem Notebook erstellen, im Webbrowser ergänzen, auf dem Tablet korrigieren und per Smartphone versenden – ohne sich Gedanken darüber zu machen, ob sie die Datei physisch dabei haben und ob Office installiert ist.” Dabei gibt es allerdings einen kleinen Wermutstropfen: Bei unseren Tests stellte sich heraus, dass in Word 2013 erstellte Dokumente auf einem Windows Phone 8 zwar angezeigt, aber nicht bearbeitet werden können. Das persönliche Office immer dabeiJeder nutzt Word, Excel, Outlook und die anderen Programme der Office-Familie auf seine ganz persönliche Art und Weise. Deshalb werden individuelle Einstellungen bei Office 365 Home Premium automatisch mit der Cloud synchronisiert und auf allen angebundenen PCs übernommen. “Selbst an fremden PCs haben Nutzer vollen Zugriff auf ihr personalisiertes Office 365 Home Premium, wenn sie sich dort mit ihrem Microsoft-Konto wie hotmail.de, outlook.com oder live.de anmelden”, erklärt Oliver Gronau, Direktor Microsoft Office Division, Microsoft Deutschland. “In diesem Fall streamt der Cloud-Dienst “Office on Demand” das Neue Office für die Bearbeitung auf den jeweiligen Rechner. Der Nutzer kann innerhalb weniger Minuten anfangen, mit seinem Office zu arbeiten. Diese Flexibilität kann kein anderes Angebot auf dem Markt zur Verfügung stellen.”Bei Office on Demand läuft auf dem lokalen System das Office in einer virtuellen Umgebung. Beim Beenden der Sitzung wird die virtuelle Umgebung geschlossen und das Office mit sämtlichen Daten verschwindet wieder vollständig vom System. Die Privatsphäre bleibt damit auch beim Nutzen des Neuen Office auf fremden Computern vollständig erhalten.Verbunden bleiben – Soziale Netzwerke sind unmittelbar integriertSoziale Netzwerke sind in dem Neuen Office nur einen Mausklick weit entfernt. So bleibt der Anwender über die Einbindung von Facebook und anderen sozialen Netzwerken in Outlook in Kontakt mit seinen Freunden, verfolgt jederzeit Statusmeldungen via Kontaktkarte, sieht Videos oder gerade geknipste Fotos und vergisst nie wieder einen Geburtstag. Alte Verbindungen lassen [...]

5 Jahre .NET User Group Koblenz mit Christian Weyer!

04.02.2013 00:37:52 | Andre Kraemer

Am kommenden Mittwoch, den 6. Februar 2013, feiern wir mit unserer .NET User Group in Koblenz das fünfjährige Bestehen!

CW_Detail2Als Speaker und “Ehrengast” konnten wir Christian Weyer gewinnen, der unsere Gruppe damit bereits zum zweiten Mal besucht. Christian wird “Leichtgewichtige Architekturen mit Web APIs & Push Services – auch jenseits des Webs” sein.

Aktuell haben wir übrigens noch einige Plätze frei, so dass ihr euch gerne noch auf unserer Xing Event Seite zum kostenlosen Treffen anmelden könnt!

Das Treffen findet wie immer um 19 Uhr im großen Besprechungsraum des Technologiezentrum Koblenz statt.

 

Wenn ich so daran zurückdenke, wie die .NET User Group Koblenz entstand, finde ich es schon erstaunlich, dass wir es wirklich auf fünf aktive Jahre gebracht haben!

Ende 2007 waren mein ehemaliger Kollege und guter Freund Markus Rennings und ich nämlich gemeinsamer auf einem MCPD Bootcamp. Markus und ich arbeiteten damals bereits nicht mehr in derselben Firma und trauerten etwas sentimental unseren damaligen internen Meetings zum Wissensaustausch zwischen den Entwicklern nach. Wir überlegten ob wir nicht regelmäßige Treffen zwischen den Entwicklern unserer beider Firmen anregen sollten, bis irgendwann die Idee kam:

Lass uns doch eine User Group gründen

Die Idee geisterte schon eine ganze Weile in meinem Kopf herum, nämlich seitdem ich Roland Weigelts Anleitung zum Gründen einer User Group gelesen hatte.

Das größte Problem an der Sache war nun allerdings, dass weder Markus noch ich jemals auf einem Treffen einer User Group waren und demnach keiner von uns beiden wusste was man da so wirklich macht: bei der  User Group.  Ich war übrigens bis heute noch bei keiner anderen User Group Zwinkerndes Smiley

Um nun also nicht mehr alleine ahnungslos zu sein, holten wir uns noch einen weiteren ehemaligen Kollegen und guten Freund, Eric Berres mit ins Boot. Außerdem kam auch noch Thomas Naunheim mit dazu, womit wir nun vier Ahnungslose User Group Gründer waren.

Eric konnte seinen ehemaligen Chef Timo Ziegler, auch gleich von der Idee einer User Group überzeugen, so dass das größte Problem, nämlich die Raumfrage überraschend schnell geklärt werden konnte. Außerdem setzte Eric eine DotNetNuke basierte Homepage für unsere Gruppe auf, zu der Thomas das Design beisteuerte.

Das Design ist 2013 übrigens immer noch das unveränderte Originaldesign von Ende 2007 / Anfang 2008.

Nachdem die Raum- und Homepagefrage also schnell geklärt war, war eigentlich alles in Butter. Bis auf:

Wo bekommen wir eigentlich Teilnehmer und Sprecher her?

Tja, das war so eine Sache! Bisher hatten wir nämlich kaum Kontakte in die .NET Community außerhalb unserer Firmen. Woher also Teilnehmer und Sprecher nehmen?`

Für die Teilnehmer fand sich eine relativ schnelle Lösung. Eric hatte noch Kontakte zur Koblenzer Fachhochschule und ließ dort en wenig Werbung aushängen. Außerdem kannte er noch eine(!!!) weitere Firma in der Koblenzer Umgebung und kontaktierte dort dort den Teamleiter. Somit konnten wir es im ersten Treffen auf ca. 20 Teilnehmer bringen, die fast ausschließlich aus Markus, Erics, meiner und der anderen Firma kamen.

Im Laufe der Zeit hat es sich aber glücklicherweise herumgesprochen, dass es in Koblenz eine .NET User Group gibt, so dass wir nun auch Teilnehmer aus anderen Firmen begrüßen würden. Den Schnitt von 20 Personen halten wir allerdings immer noch.

Das zweite Problem – die Sprecher – mussten wir erst einmal intern lösen. Den ersten Vortrag übernahm Eric, der DotNetNuke vorstellte. In den nächsten Treffen waren dann Jan Meinecken, Markus und ich dran. Relativ bald konnten wir allerdings mit Roland Weigelt unseren ersten externen Sprecher gewinnen.

Durch die zunehmende Vernetzung in der Community, unter anderem durch die Aufnahme in die INETA und das Microsoft CLIP Programm, konnten wir aber glücklicherweise immer mehr Kontakte zu anderen Sprechern aufbauen, die uns dann besuchten.

presentationAbsolute Highlights für unsere Gruppe waren sicherlich die internationalen Speaker Tony Lombardo, damals ASP.NET MVC aus New Jersey und Worldwide Lead Evangelist der Firma Infragistics oder die Software Legende Juval Löwy.

 

Selbstverständlich hatten wir aber auch einige deutschsprachige Top Experten, die sich sicherlich nicht hinter den amerikanischen Kollegen verstecken müssen!

Unter anderem wurden wir von Christian Weyer, Oliver Sturm, Roland Weigelt, Torsten Weber, Lars Keller, Kiril Matev, Konstantin Klein, Markus Kissling und Gregor Biswanger besucht. Einige, wie Roland, Kostja oder Gregor waren sogar Wiederholungstäter Zwinkerndes Smiley

Dies war natürlich nur eine kleine Auswahl der vielen freiwilligen Sprecher, die alle (unentgeltlich!) in den letzten Jahren bei uns gesprochen haben! Auf unserer neuen Homepage, die wir bereits seit drei Jahren planen, werden wir selbstverständlich alle Sprecher einzeln aufzählen.

An dieser Stelle aber schon einmal vielen Dank an alle, die bereits bei uns einen Vortrag gehalten haben und natürlich auch vielen Dank an die, ohne die es gar keinen Sinn machen würde die Gruppe zu führen: die zahlreichen Teilnehmer!

Außerdem möchte ich auch gerne Timo Ziegler noch einmal hervorheben, der nicht nur in den ersten Jahren die Räumlichkeiten stelle und diese seit einem Jahr auch wieder organisiert, sondern seit letztem Jahr als weiter User Group Lead den Platz von Markus und Thomas einnimmt, die beide berufsbedingt leider etwas zurücktreten mussten.

Besucht User Groups!

Generell möchte ich jedem Entwickler ans Herz legen einmal eine lokale User Group zu besuchen. Falls es keine gibt: Einfach selbst eine gründen Zwinkerndes Smiley

5 Jahre .NET User Group Koblenz mit Christian Weyer!

04.02.2013 00:37:00 | Andre Kraemer

Am kommenden Mittwoch, den 6. Februar 2013, feiern wir mit unserer .NET User Group in Koblenz das fünfjährige Bestehen!

CW_Detail2Als Speaker und “Ehrengast” konnten wir Christian Weyer gewinnen, der unsere Gruppe damit bereits zum zweiten Mal besucht. Christian wird “Leichtgewichtige Architekturen mit Web APIs & Push Services – auch jenseits des Webs” sein.

Aktuell haben wir übrigens noch einige Plätze frei, so dass ihr euch gerne noch auf unserer Xing Event Seite zum kostenlosen Treffen anmelden könnt!

Das Treffen findet wie immer um 19 Uhr im großen Besprechungsraum des Technologiezentrum Koblenz statt.

Wenn ich so daran zurückdenke, wie die .NET User Group Koblenz entstand, finde ich es schon erstaunlich, dass wir es wirklich auf fünf aktive Jahre gebracht haben!

Ende 2007 waren mein ehemaliger Kollege und guter Freund Markus Rennings und ich nämlich gemeinsam auf einem MCPD Bootcamp. Markus und ich arbeiteten damals bereits nicht mehr in derselben Firma und trauerten etwas sentimental unseren damaligen internen Meetings zum Wissensaustausch zwischen den Entwicklern nach. Wir überlegten, ob wir nicht regelmäßige Treffen zwischen den Entwicklern unserer beider Firmen anregen sollten, bis irgendwann die Idee kam:

Lass uns doch eine User Group gründen

Die Idee geisterte schon eine ganze Weile in meinem Kopf herum, nämlich seitdem ich Roland Weigelts Anleitung zum Gründen einer User Group gelesen hatte.

Das größte Problem an der Sache war nun allerdings, dass weder Markus noch ich jemals auf einem Treffen einer User Group waren und demnach keiner von uns beiden wusste, was man da so wirklich macht: bei der  User Group.  Ich war übrigens bis heute noch bei keiner anderen User Group Zwinkerndes Smiley

Um nun also nicht mehr alleine ahnungslos zu sein, holten wir uns noch einen weiteren ehemaligen Kollegen und guten Freund, Eric Berres mit ins Boot. Außerdem kam auch noch Thomas Naunheim mit dazu, womit wir nun vier ahnungslose User Group Gründer waren.

Eric konnte seinen ehemaligen Chef Timo Ziegler, auch gleich von der Idee einer User Group überzeugen, so dass das größte Problem, nämlich die Raumfrage überraschend schnell geklärt werden konnte. Außerdem setzte Eric eine DotNetNuke basierte Homepage für unsere Gruppe auf, zu der Thomas das Design beisteuerte.

Das Design ist 2013 übrigens immer noch das unveränderte Originaldesign von Ende 2007 / Anfang 2008.

Nachdem die Raum- und Homepagefrage also schnell geklärt war, war eigentlich alles in Butter. Bis auf:

Wo bekommen wir eigentlich Teilnehmer und Sprecher her?

Tja, das war so eine Sache! Bisher hatten wir nämlich kaum Kontakte in die .NET Community außerhalb unserer Firmen. Woher also Teilnehmer und Sprecher nehmen?`

Für die Teilnehmer fand sich eine relativ schnelle Lösung. Eric hatte noch Kontakte zur Koblenzer Fachhochschule und ließ dort ein wenig Werbung aushängen. Außerdem kannte er noch eine(!!!) weitere Firma in der Koblenzer Umgebung und kontaktierte dort  den Teamleiter. Somit konnten wir es im ersten Treffen auf ca. 20 Teilnehmer bringen, die fast ausschließlich aus Markus, Erics, meiner und der anderen Firma kamen.

Im Laufe der Zeit hat es sich aber glücklicherweise herumgesprochen, dass es in Koblenz eine .NET User Group gibt, so dass wir nun auch Teilnehmer aus anderen Firmen begrüßen dürfen. Den Schnitt von 20 Personen halten wir allerdings immer noch.

Das zweite Problem – die Sprecher – mussten wir erst einmal intern lösen. Den ersten Vortrag übernahm Eric, der DotNetNuke vorstellte. In den nächsten Treffen waren dann Jan Meinecken, Markus und ich dran. Relativ bald konnten wir allerdings mit Roland Weigelt unseren ersten externen Sprecher gewinnen.

Durch die zunehmende Vernetzung in der Community, unter anderem durch die Aufnahme in die INETA und das Microsoft CLIP Programm, konnten wir aber glücklicherweise immer mehr Kontakte zu anderen Sprechern aufbauen, die uns dann besuchten.

presentationAbsolute Highlights für unsere Gruppe waren sicherlich die internationalen Speaker Tony Lombardo, damals ASP.NET MVC aus New Jersey und Worldwide Lead Evangelist der Firma Infragistics oder die Software Legende Juval Löwy.

Selbstverständlich hatten wir aber auch einige deutschsprachige Top Experten, die sich sicherlich nicht hinter den amerikanischen Kollegen verstecken müssen!

Unter anderem wurden wir von Christian Weyer, Oliver Sturm, Roland Weigelt, Torsten Weber, Lars Keller, Kiril Matev, Konstantin Klein, Markus Kissling und Gregor Biswanger besucht. Einige, wie Roland, Kostja oder Gregor waren sogar Wiederholungstäter Zwinkerndes Smiley

Dies war natürlich nur eine kleine Auswahl der vielen freiwilligen Sprecher, die alle (unentgeltlich!) in den letzten Jahren bei uns gesprochen haben! Auf unserer neuen Homepage, die wir bereits seit drei Jahren planen, werden wir selbstverständlich alle Sprecher einzeln aufzählen.

An dieser Stelle aber schon einmal vielen Dank an alle, die bereits bei uns einen Vortrag gehalten haben und natürlich auch vielen Dank an die, ohne die es gar keinen Sinn machen würde, die Gruppe zu führen: die zahlreichen Teilnehmer!

Außerdem möchte ich auch gerne Timo Ziegler noch einmal hervorheben, der nicht nur in den ersten Jahren die Räumlichkeiten stelle und diese seit einem Jahr auch wieder organisiert, sondern seit letztem Jahr als weiter User Group Lead den Platz von Markus und Thomas einnimmt, die beide berufsbedingt leider etwas zurücktreten mussten.

Besucht User Groups!

Generell möchte ich jedem Entwickler ans Herz legen einmal eine lokale User Group zu besuchen. Falls es keine gibt: Einfach selbst eine gründen Zwinkerndes Smiley

Regeln | Impressum