Skip to content

.NET User Group Austria – Fünf Gründe für Memory Leaks

Bei der .NET User Group Austria geht es am 3. März um ein wichtiges .NET Thema: Memory Leaks:

Fünf Gründe weshalb auch Sie in Ihrer Anwendung ein Memory Leak haben könnten

Viele Entwickler sind überrascht, wenn sie bemerken, dass ihre Anwendung ein Memory Leak hat. Schließlich unterliegen sie dem weit verbreiteten Irrglauben, dass es unter .NET dank des Garbage Collectors gar keine Memory Leaks mehr gibt. In dieser Session lernen Sie fünf typische Ursachen für Memory Leaks kennen und erfahren, wie Sie solche Speicherprobleme in Ihren Anwendung vermeiden können.

André Krämer ist selbständiger Software Architekt, Entwickler, Trainer und Berater. Seine Schwerpunkte liegen in den Bereichen Webentwicklung mit ASP.NET und JavaScript, App Entwicklung für Windows 8 und Windows Phone, Application Life Cycle Management mit dem Microsoft Team Foundation Server sowie der Analyse von Memory Leaks und Performanceproblemen. Er ist regelmäßiger Autor für video2brain, wo er bereits mehr als 10 Video Trainings veröffentlicht hat. Als einer der Leiter und Gründer der .NET User Group Koblenz wurde er für sein Community Engagement in das Microsoft CLIP Programm aufgenommen. Außerdem ist er Mitglied im Red Gate Software EMEA Advisory Board, TX Text Control MVP, Infragistics MVP und Microsoft MVP für Windows Platform Development. Sie erreichen Ihn unter: http://andrekraemer.de/

Achtung – dismal wieder am Dienstag!

Dienstag, 3. März 2015

Agenda:

17:30 Treffen und Diskussionen
18:00 Vortrag – Windows Azure – Welche Storage Technologie soll ich verwenden?
Nach dem Vortrag Networking und Pizza

Location: Global Knowledge, Wien, 1101, Gutheil Schoder Gasse 7

Anmeldung über Facebook oder XING oder einfach hier einen Kommentar hinterlassen!

Christian

CN Innovation
Blog
Twitter

.NET User Group Austria – Welche Storage Technologie soll ich jetzt verwenden?

Bei der .NET User Group Austria geht es am 19. Februar um Azure Storage Technologien – SQL Database, Azure Storage, DocumentDB – als Draufgabe auch noch Azure Search:

Neben SQL Database gibt es bei Windows Azure NoSQL Storage Möglichkeiten wie Table-, Blob-Storage und DocumentDB. In dieser Session werden die Features der unterschiedlichen Storage-Technologien beleuchtet und es wird gezeigt wie die .NET APIs von Table Storage und DocumentDB in Applikationen eingesetzt werden können.

Achtung – diesmal am Donnerstag!

Donnerstag, 19. Februar 2015

Agenda:

17:30 Treffen und Diskussionen
18:00 Vortrag – Windows Azure – Welche Storage Technologie soll ich verwenden?
19:30 Verpflegung und Diskussionen

Location: Global Knowledge, Wien, 1101, Gutheil Schoder Gasse 7

Anmeldung über Facebook oder XING oder einfach hier einen Kommentar hinterlassen!

Christian

CN Innovation
Blog
Twitter

Universal Apps für Windows 10

Im Oktober 2014 gab es von mir bereits erste Informationen zu: Windows 10 – was ändert sich für Entwickler. Eine meiner Aussagen war dabei auf Universal Apps zu setzen. Doch was sind Universal Apps, wie unterscheiden sich die von traditionellen Desktop Applikationen? Und was ändert sich bei Windows 10 für Universal Apps? Weitere Informationen hier! Universal Windows Apps sind Apps die mit einer Codebasis für Windows (Windows Store Apps) und das Windows Phone geschrieben werden können. Und das mit C# und XAML oder C++ und XAML oder HTML und JavaScript.

Universal Apps vs Desktop Applikationen

Was sind die Unterschiede zwischen diesen Applikations-Typen – außer dass der Code auch auf Windows Phone läuft? Die Apps sind einfach mit Touch zu bedienen? Die Apps sind einfacher zu bedienen aber auch reduziert in der Funktionalität? Reduziert in der Funktionalität – das muss gar nicht sein. Es gibt auch schon recht komplexe Windows Store Apps mit einer Vielzahl an Features. Einer der wichtigsten Unterschiede ist der App Lifecycle. Bei traditionellen Desktop Applikationen ist der User zuständig für den Lebenszyklus des Applikations-Prozesses. Der User startet und beendet die Applikation. Anders bei Windows Store Apps. Zwar startet der User die App (es gibt auch noch andere Möglichkeiten die App zu starten, wie z.B. über einen Sharing von Daten), der User beendet sie aber nicht. Auch beim Click auf den Close Button bei Windows 8.1 läuft der Prozess weiter. Die App bekommt aber einen Suspend Request – der auch geschickt wird sobald die App in den Hintergrund verschoben wird. Beim Suspend kann die App reagieren und State speichern. Sobald der User die App wieder in den Vordergrund verschiebt, und mittlerweile der Prozess vielleicht doch beendet wurde, ist die App zuständig den State wieder herzustellen. Der User soll nichts davon merken dass der Prozess neu gestartet wurde. Neben diesem Unterschied zu Desktop Applikationen kommen noch Contracts, Navigation, Tiles und Toasts und vieles mehr.

Universal Apps unter Windows 10

Was ändert sich bei Windows 10? Am besten Weg zu Windows 10 ist man schon heute mit dem Universal Windows App Konzept. Natürlich gibt es eine neue Version der Windows Runtime mit neuen Features. Auch das User Interface von Windows Store Apps wird etwas umgestaltet. Von Windows 8.0 zu Windows 8.1 ist die Such-Funktionalität von Apps von der Charms Bar direkt als SearchBox in die App gekommen. Anwender haben die Such-Funktionalität auch nicht gefunden. Sobald man das Feature von Windows 8.0 kannte – welche App unterstützt das? Bei meiner Picture Search App war das eine der Änderungen zu Windows 8.1, die SearchBox direkt im Screen zu integrieren. Ich habe dann auch festgestellt dass kaum ein User das Feature der “Slide Show” in der App gefunden hat. Dazu musste man schon die AppBar öffnen. Diese Funktionalität habe ich dann auch direkt vom Screen verfügbar gemacht, ist es doch eine essentielle Funktionalität in der App. Genau das ist auch ein Ansatz von Apps unter Windows 10, es geht um das zeigen von “hidden controls”. Zwar ist die AppBar und die Charms Bar ohne Änderung auch hier über die Apps verfügbar, jedoch etwas umständlicher als das unter Windows 8.1 der Fall war (falls der Anwender diese Features gefunden hat). In neuen Apps kann das direkt sichtbar eingebaut werden, wie z.B. auch beim neuen Office erkennbar ist. Office mit Ribbon Controls. Bei der neuen Maps App gibt es im linken Bereich eine Toolbar (oder Ribbon, oder wie sie auch heisst):

Maps App for Windows 10, preview

Maps App for Windows 10, preview

Wenn wir jetzt noch OneNote von Windows 8.1 mit Windows 10 vergleichen, gibt es bei Windows 8.1 einen kleinen Button der beim Schreiben nie im Weg ist. Ein click darauf vergrößert den Button und bietet eine große Zahl an Optionen an:

OneNote Windows 8.1

OneNote unter Windows 8.1

Dieser Button ist zwar wirklich cool, aber es gibt doch Einschränkungen was damit alles möglich ist. Dieser Button ist unter Windows 10 wieder verschwunden. Stattdessen ist auch im modernen Design die Ribbon Control angekommen.

OneNote Windows 10 Preview

OneNote Windows 10 Preview

Das sind Beispiele für Änderungen die ich bereits jetzt in den neuen Versionen meiner Apps berücksichtige. Auf jeden Fall bleiben Universal Apps die beste Vorbereitung zu Windows 10.

Informationen dazu – inkl. Entwicklung von Web API Services für die Kommunikation mit dem Server gibt es bei meinem Kurs Programming Universal Apps with XAML and C#.

Viel Spaß und Erfolg mit Windows 10!

Christian

CN innovation

Road to the Cloud am 12. Februar in Wien

Am 12. Februar gibt es bei Microsoft Österreich Windows Azure aus der Business-Perspektive! Donnerstag, 12. Februar 2015, 13:00-18:00 Uhr Microsoft Österreich, Am Euro Platz 3, 1120 Wien Anmeldung Agenda:

Von Applikationen zu Apps: Wandel im Softwaremarkt (Christian Nagel)

13:00 – 14:00 Uhr Hardware und Software entwicklen sich in einer “Mobile first, Cloud first”-Welt rasant weiter, was für Entwickler und ISVs einige Veränderungen zur Folge hat. In einem solch dynamischen Umfeld Erfolg zu haben bedeutet, alte Gewohnheiten abzulegen und sich sich auf eine neue Weise mit Kunden und der Branche auseinander zu setzen. In dieser Session blicken wir auf Markttrends und erörtern Ansätze, wie Sie Ihre Software in der neuen Welt erfolgreich entwicklen und vermarkten können.

Cloud-Modelle: Private, Public und Hybrid (Rainer Stropek)

14:15 – 15:15 Uhr Analysten prognostizieren, dass SaaS-Applikationen den traditionellen Softwarevertrieb in naher Zukunft ablösen werden. Diese Cloud-Landschaft verlangt von Softwareentwicklern strategische Entscheide zu Application Lifecycle Management und Hostingmodellen. Lernen Sie in dieser Session, wie diese Ansätze aussehen und welche Plattformen Ihre Cloud-Modelle am besten unterstützen.

Das Geschäft mit der Cloud und Kostenmodelle (Gerd Saurer)

15:30 – 16:30 Uhr Die Cloud ist weniger eine technische, sondern vielmehr eine Business-Revolution. In dieser Session sehen wir uns die Trends an, die die Cloud vorantreiben, mit besonderem Fokus auf die Erfolgschancen, die sich daraus ergeben. Wir zeigen, wie die Cloud Geschäftsmodelle auf radikale Weise verändert und diskutieren konkrete Lösungsansätze für eine neue Software-Welt.

Erfolgsgeschichten (Christian Nagel/Rainer Stropek/Gerd Saurer)

16:30 – 17:00 Uhr Lernen Sie wie österreichische Firmen die Cloud heute einsetzen, wie Cloud Technologien auf Basis von Microsoft Azure erfolgreich eingesetzt werden. Ich freue mich auf viele Teilnehmer! Christian CN innovation

Offene Kurse – ASP.NET MVC im Februar

Ein Kurs der im Februar schon sicher stattfindet ist ASP.NET MVC 5 – 16.-20. Februar 2015!

2015_FebTraining

Neben Models, Views, Controllers, HTML Helpers und Authentication gibt es enen Einstieg in JavaScript mit jQuery, CSS3, und eine Einführung zu ASP.NET Web API. Natürlich mache ich auch noch einen Ausblick auf ASP.NET MVC 6 – das läuft dann nicht nur unter Windows sondern auch auf Mac und Linux.

Zusätzlich kann ich zur Web Entwicklung auch diese Trainings empfehlen:

Anmeldung zu all diesen Kursen ist direkt über meine Website möglich!

Christian

CN innovation

C# 6 Auto Property Initializers und Getter-only Auto Properties

C# 6 bringt zahlreiche neue Features in der Sprache. Dieser Artikel beschreibt neue Features bei den Auto Property Intializers und Getter-only Auto Properties.

Sharp right
© Liquidphoto | Dreamstime.comSharp Right Turn Sign Photo

C# ist eine Programmiersprache die laufend Änderungen unterworfen ist. C# ist dabei keine pure Objekt-orientierte Programmiersprache, und auch keine Funtionsorientiertte Sprache. Diese Sprache wird aber von all diesen Programmier-Paradigmen beeinflusst. Das was praktisch ist kommt auch in diese Sprache hinein.

Wenn wir da in die Vergangenheit blicken: mit C# 2 sind generics neu gekommen, C# 3 brachte zahlreiche Syntaxerweiterungen für Language Integrated Query (LINQ) und hat fast jede (oder jede) Applikation beeinflusst. Die Neuigkeiten bei C# 4 waren dann bei einigen Szenarien wie der Integration von Scripting oder auch COM praktisch. Mit Version 5 gab es dann zwar nur zwei neue Keywords, die waren aber so wichtig und haben die asynchrone Programmierung vereinfacht dass sie wieder praktisch jedes Programm beeinflussten.

Version 6 bringt jetzt keine so wichtige Features wie wir das bei den Neuerungen der Vorgängerversion erleben durften. Aber dafür gibt es viele praktische Dinge. Da legen wir gleich mit den neuen Auto Property Initializers los.

Bei C# 5 konnten Auto properties nur im Constructor initialisiert werden:

public class Sample1
{
  public Sample1()
  {
    IsTrue = true;
  }
  public bool IsTrue { get; set; }
}

Mit C# 6 können Auto properties direkt mit der Property initalisiert werden:

public class Sample1
{
  public bool IsTrue { get; set; } = true;
}

Wie sinnvoll ist das wirklich? Ein Problem dabei ist dass direkt bei der Property nur Konstante für die Initialiserung verwendet werden können. Damit reduziert sich der praktische Anwendungsfall doch. Während der Entwicklungsphase von C# 6 gab es auch noch Primary Constructors die sich als wirklich praktisch für die Initialiserung dieser Properties herausgestellt hatten. Die haben es aber nicht zum Release geschafft, werden aber sicher in anderer Form in einer zukünftigen C# Version kommen. Damit ist dieses Feature zur Initialisierung nur ein Kleines.

Was aber mit automatic properties auch jetzt schon sehr praktisch ist, sind read-only properties bei automatic properties. Bei C# 5 war der lange Property Syntax notwendig um read-only properties zu definieren:

public class Gadget
{
  public Gadget(int i, string name)
  {
    _i = i;
    _name = name;
  }

  private readonly int _i;
  public int I
  {
    get { return _i; }
  }

  private readonly string _name;
  public string Name
  {
    get { return _name; }
  }
}

Dafür war es schon notwendig eine Menge Code zu schreiben. Stattdessen wurden oft automatic properties mit einem private set Accessor eingesetzt:

public class Gadget
{
  public Gadget(int i, string name)
  {
    I = i;
    Name = name;
  }

  public string I { get; private set; }
  public string Name { get; private set; }
}

Das ist zwar viel kürzer. Der Nachteil ist aber das es sich nicht um eine readonly Property handelt. Diese Property kann jederzeit – wenn auch nur innerhalb der Klasse – geändert werden.

Mit C# 6 können jetzt automatic properties auch mit nur einem get Accessor deklariert werden. Dabei wird vom Compiler ein readonly field erzeugt. Die Initialisierung der Property ist dabei auch gleich viel praktischer. Und wenn für die Initialiserung keine Konstante möglich ist, ist die Initialiserung auch im Constructor möglich.

public string Name { get; } = "Sample";

Auto Property Initializers und Getter-only Auto properties sind nur zwei der zahlreichen Features von C# 6. Zum Beispiel über Null Propagation habe ich bereits geschrieben. Neben Blog Artikeln gibt es diese Features auch in meinen Workshops (Firmenkurse als auch offene Kurse)
Programmieren mit C# (23. März 2014 in Wien)

Take off to .NET 2015 (9. Februar 2014 in Wien),

und natürlich auch im Buch Professional C# 6 an dem ich gerade arbeite.

Christian

CN innovation

Offene Trainings – Windows Store Apps im Jänner 2015

2015_Training

Seit heuer gibt es auf meiner Website neben Firmentrainings auch die Möglichkeit offene Trainings zu buchen.

Direkt auf der Homepage stehen da gleich die nächsten Termine in Wien. Das startet gleich ganz spannend, der besten Vorbereitung auf Windows 10: Windows Store Apps.

Am 19.1. Windows Store Apps mit XAML und C#. C# Kenntnisse werden dabei vorausgesetzt. XAML Wissen hilft ist aber nicht Voraussetzung. XAML wird zwar auch (abhängig der Teilnehmervorkenntnisse) erklärt, es geht aber vor allem um Windows Store App Spezifika, wie z.B. die Windows Runtime und den App-LifeCycle. Spezifische Windows Store App Controls wie die AppBar, modernes Design, Tiles and Toasts und natürlich contracts wie sharing sind wichtige Themen.

In der Woche darauf ab 26.1. geht es mit Advanced Themen weiter – Advanced Windows Store Apps. Wenn Sie bis jetzt keine Windows Store Apps programmiert haben, würde ich den erstgenannten Kurs empfehlen. Im Advanced Kurs geht es dann nur um Spezialthemen wie z.B. Animationen, Globalisierung, Storage Optionen, Printing, Play To, Windows Push Notifications, Background Tasks, Sensoren, Camera… Und das mit C# und XAML oder JavaScript und HTML.

Bei Sonderwünschen gibt es natürlich auch im Kurs Flexibilität :-)

Es würde mich freuen Sie/Dich bei einem dieser Kurse zu sehen :-)

Christian

http://www.cninnovation.com

Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.