<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AWZhome</title>
	<atom:link href="http://www.awzhome.de/feed" rel="self" type="application/rss+xml" />
	<link>http://www.awzhome.de</link>
	<description></description>
	<lastBuildDate>Wed, 02 Jan 2013 14:04:01 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Das war .NET Open Space Süd 2012</title>
		<link>http://www.awzhome.de/pages/278</link>
		<comments>http://www.awzhome.de/pages/278#comments</comments>
		<pubDate>Sun, 15 Jul 2012 22:57:02 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[dotNET]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=278</guid>
		<description><![CDATA[Zum vierten Jahr in Folge durfte ich am 14./15.07.2012 beim .NET Open Space Süd dabei sein. Über den Dächern von Karlsruhe ging es wieder um einen lockeren Informations- und Erfahrungsaustausch zwischen .NET-Entwicklern...]]></description>
				<content:encoded><![CDATA[<p>Zum vierten Jahr in Folge durfte ich am 14./15.07.2012 beim <a href="http://karlsruhe.netopenspace.de/2012/" target="_blank">.NET Open Space Süd</a> dabei sein.<a href="http://www.awzhome.de/pages/278/dsc_0029" rel="attachment wp-att-279"><img class="aligncenter size-full wp-image-279" style="float: right;" title="Über den Dächern von Karlsruhe" alt="" src="http://www.awzhome.de/wp-content/uploads/DSC_0029.jpg" width="350" height="197" /></a></p>
<p>Über den Dächern von Karlsruhe ging es wieder um einen lockeren Informations- und Erfahrungsaustausch zwischen .NET-Entwicklern. Die Menge der Teilnehmer (rund 70) erlaubte dabei eine wie immer recht persönliche Atmosphäre. Das Entscheidende ist hier für mich die Teilnehmervielfalt, denn es versammeln sich Entwickler aus den verschiedensten Ecken der Wirtschaft, ob Standardsoftware oder Projektgeschäft, ob Rich Clients oder web-basierte, ob ERP- oder Ärztesoftware. Gerade das bringt häufig verschiedene Sichten auf ein Thema zu Tage, was bei der individuellen Wegfindung sehr hilfreich sein kann.</p>
<p><a href="http://www.awzhome.de/pages/278/dsc_0027" rel="attachment wp-att-280"><img class="aligncenter  wp-image-280" style="float: left;" title="Themenbesprechung am Session-Plan" alt="" src="http://www.awzhome.de/wp-content/uploads/DSC_0027.jpg" width="198" height="111" /></a></p>
<p>Themenschwerpunkte waren diesmal zum einen Datenhaltung und relationale vs. NoSQL-Datenbanken (wie oft fiel wohl der Name &#8220;RavenDB&#8221;?) und zum anderen Softwarearchitekturen, z.B. rund um Domain Driven Design und OOP-Konzepte. Interessant war die OOP-Diskussion mit der Frage &#8220;Bringt sich Müll selbst raus oder brauchen wir einen &#8216;Müllrausbringer&#8217;?&#8221; Aber natürlich gab es viel mehr Themen, z.B. waren die Ruby-Jungs wieder aktiv, ebenso entstanden u.a. Sessions zu Reactive Extensions, Python, API-Design oder Coding Dojos im Firmeneinsatz.</p>
<p>Auch Spaß musste mal sein: Im Verlauf mancher Pausen entstanden bahnbrechende Ideen, wie z.B. der wolkenförmige Aschenbecher &#8211; der &#8220;Azurebescher&#8221; &#8211; welcher der alltäglichen Nikotin-Cloud einen runden Abschluss verleihen dürfte. Vielleicht kommt er mal zur Serienreife?</p>
<p>Wie jedes Jahr gebührt den Veranstaltern viel Respekt, gerade auch den unermüdlichen Helfern, die für Verpflegung und konstanten Kaffee-Spiegel gesorgt haben. Die .NET-Community freut sich auf ein Wiedersehen im nächsten Jahr!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/278/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NQ Core 1.0 verfügbar</title>
		<link>http://www.awzhome.de/pages/274</link>
		<comments>http://www.awzhome.de/pages/274#comments</comments>
		<pubDate>Sun, 06 May 2012 22:26:27 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[NQ]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=274</guid>
		<description><![CDATA[Das neue stabile Release 1.0 des NQ Core ist nun über Codeplex und NuGet zum Download verfügbar. Im Fokus stand wieder einmal Detailarbeit.]]></description>
				<content:encoded><![CDATA[<p>Das neue stabile Release <strong>1.0</strong> des NQ Core ist nun über <a href="http://nq.codeplex.com/releases/view/74612">Codeplex</a> und <a href="http://www.nuget.org/List/Packages/NQ.Core">NuGet</a> zum Download verfügbar. Im Fokus stand wieder einmal Detailarbeit:</p>
<ul>
<li>In den Logging-Funktionen wurde ein wenig nachgebessert, v.a. was das Logging von Exceptions angeht. Auch der Core selbst gibt nun mehr Informationen über diesen Kanal aus.</li>
<li>Mehr Konsistenzprüfungen bei Erstellung von Serviceinstanzen.</li>
<li>Neu eingeführtes Interface <em>INQServiceInstanceCreator</em>: Durch eine eigene Implementierung dieses Interfaces lässt sich der standardmäßige Mechanismus zum Erzeugen von Serviceinstanzen durch eigenen Code überschreiben, auch wenn der bereits eingebaute Weg schon recht effektiv ist.</li>
<li>NQ Core wurde von der Vorgängerlizenz auf die <a href="http://www.mozilla.org/MPL/2.0/" target="_blank">Mozilla Public License 2.0</a> umgestellt.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/274/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unerwünschte Facebook-Aktivitäten eindämmen mit NoScript</title>
		<link>http://www.awzhome.de/pages/271</link>
		<comments>http://www.awzhome.de/pages/271#comments</comments>
		<pubDate>Thu, 16 Feb 2012 23:53:43 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=271</guid>
		<description><![CDATA[Dass Facebook so viele Daten wie möglich von seinen Nutzern einsammelt und verwertet, dürfte inzwischen vielen bekannt sein. Das Firefox Add-On "NoScript" kann helfen, diese Aktivitäten zu beschränken, ohne auf Facebook selbst verzichten zu müssen.]]></description>
				<content:encoded><![CDATA[<p>Dass Facebook so viele Daten wie möglich von seinen Nutzern einsammelt und verwertet, dürfte inzwischen vielen bekannt sein. So langsam dringt den Leuten auch ins Bewusstsein, dass Facebook auch fremde Seiten im Internet als Informationsquelle nutzt.</p>
<h2>So geht Facebook vor</h2>
<p>Der klassische Weg ist der viel gescholtene &#8220;Gefällt mir&#8221; Button. Zahlreiche Seiten binden ihn ein. Besucht nun ein Facebook-Nutzer eine solche Seite, lädt diese die Button-Grafik inkl. eines JavaScripts vom Facebook Server herunter. Ist der Besucher parallel in Facebook eingeloggt, erkennt der Server ihn wieder und kann somit protokollieren, dass Facebook-User X auf Seite Y war. Man bedenke dabei, dass es dazu absolut nicht nötig ist, aktiv auf den &#8220;Gefällt mir&#8221; Button zu klicken!</p>
<p>Prinzipiell ist es gar nicht notwendig, dass der Benutzer zum Zeitpunkt des Seitenbesuchs bei Facebook eingeloggt ist. Es genügt bereits, dass er irgendwann früher auf diesem Rechner mindestens einmal eingeloggt war und das dabei angelegte Cookie noch vorhanden ist. Das reicht zur Identifizierung des Nutzers völlig aus.</p>
<p>Seiten haben theoretisch sogar noch mehr Möglichkeiten zu evtl. ungewollten Datenlieferungen, z.B. das Mitteilen von gerade abgespielten Songs oder gar getätigte Käufe in Online-Shops. Das von Facebook dazu bereitgestellte Open Graph API wird immer weiter ausgebaut.</p>
<h2>Was kann man tun?</h2>
<p>Der radikalste, aber wohl sicherste Weg ist natürlich der Verzicht auf einen Facebook-Account. Es ist klar, dass das für viele nicht in Frage kommt. Auch ich möchte Facebook weiterhin nutzen, will aber dessen Sammelaktivitäten v.a. außerhalb dessen Seite behindern. Als Firefox-Nutzer hat man mit dem Add-On <a href="http://noscript.net/" target="_blank">NoScript</a> ein hilfreiches Werkzeug.</p>
<p>Allgemein dient NoScript dazu, den Anwender gegen Angriffe durch schädliche JavaScripts auf Webseiten zu schützen. Besonders interessant ist dabei dessen Funktion <a href="http://noscript.net/abe/" target="_blank">ABE (Application Boundaries Enforcer)</a>. Sie ermöglicht die Definition von beliebigen benutzerdefinierten Regeln, um ungewollte Webseitenaktivitäten einzuschränken. Die Konfiguration verbirgt sich in den NoScript-Einstellungen unter <em>Erweitert</em> und <em>ABE</em>.</p>
<p style="text-align: center;"><img class="aligncenter  wp-image-272" title="noscript_abe" src="http://www.awzhome.de/wp-content/uploads/noscript_abe.png" alt="" width="664" height="215" /></p>
<p>Im Textfeld können mit Hilfe einer definierten Syntax die Regeln eingegeben werden. Eine Regel für Facebook liefert bereits die oben verlinkte Dokumentation zu ABE. Leicht abgewandelt ist sie auf meinen Rechnern folgendermaßen im Einsatz:</p>
<pre class="brush: plain; title: ; notranslate">
# Zugriffe auf Facebook-Server von Nicht-Facebook-Seiten blockieren
Site .facebook.com .fbcdn.net .facebook.net
Accept from .facebook.com .fbcdn.net .facebook.net
Deny INCLUSION
</pre>
<p>Die Regel besagt:</p>
<ul>
<li>Zugriffe auf Inhalte von Facebook Servern dürfen nur von Seiten erfolgen, die selbst auf einem Facebook Server liegen. Damit ist die Nutzung von Facebook selbst weiterhin unbeschränkt möglich.</li>
<li>Zugriffe auf jegliche Facebook Inhalte von fremden Seiten aus werden nicht gestattet bzw. ausgefiltert. Auf diese Weise können also weder die &#8220;Gefällt mir&#8221; Buttons, noch die dazugehörigen JavaScripts vom Facebook Server nachgeladen werden. Es findet keine Kommunikation dorthin statt.</li>
</ul>
<h2>Und weiter?</h2>
<p>Selbst wenn Facebook durchaus mit Vorsicht zu genießen ist, viel spannender ist der Fall mit Google. Eine ähnliche ABE-Regel für Google zu definieren, hilft zwar gegen die ebenbürtigen &#8220;+1&#8243; Buttons auf anderen Seiten, doch leider nicht gegen die Datenspuren auf Google-Seiten selbst. Denn leider nutzt man z.B. nicht nur Google Plus als Social Network, sondern auch die alltägliche Suchmaschine, Google Maps, evtl. auch Docs oder Google Mail. Auch hier findet mit großer Sicherheit im Hintergrund eine Verknüpfung der Benutzeraktivitäten zu einem großen Benutzerprofil statt.</p>
<p>Aber diesem Thema würde ich beizeiten einen eigenen Beitrag widmen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/271/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wenn Firefox und Thunderbird nicht mehr nach Updates suchen wollen</title>
		<link>http://www.awzhome.de/pages/260</link>
		<comments>http://www.awzhome.de/pages/260#comments</comments>
		<pubDate>Wed, 09 Nov 2011 23:31:15 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=260</guid>
		<description><![CDATA[Ein kleiner Fall aus dem Alltag: Seit einigen Monaten hatte ich auf meinen zwei Rechnern (Windows Vista + Windows 7) das Problem, dass Firefox und Thunderbird grundsätzlich nicht nach Updates suchen wollten, wenn ich als eingeschränkter Benutzer angemeldet war...]]></description>
				<content:encoded><![CDATA[<p>Ein kleiner Fall aus dem Alltag: Seit einigen Monaten hatte ich auf meinen zwei Rechnern (Windows Vista + Windows 7) das Problem, dass Firefox und Thunderbird grundsätzlich nicht nach Updates suchen wollten, wenn ich als eingeschränkter Benutzer angemeldet war. Ich konnte zwar den About-Dialog öffnen und dort &#8220;Nach Updates suchen&#8221; anklicken, doch statt zu suchen starteten beide einfach neu&#8230; und alles blieb beim alten. Startete ich sie dagegen mit Administratorrechten, aktualisierten sich beide willig. Das ist natürlich extrem lästig, wenn man normalerweise nicht als Administrator arbeitet.</p>
<p>Es zog sich über alle Versionssprünge von 3.5, 4, 5&#8230; bis 8. Auch ein komplettes Überspielen mit einem manuell heruntergeladenen Setup änderte nichts. Ein Artikel der MozillaZine brachte schließlich die Idee:</p>
<p><a href="http://kb.mozillazine.org/Software_update#Software_Update_not_working_properly" target="_blank">http://kb.mozillazine.org/Software_update#Software_Update_not_working_properly</a></p>
<p>Einer der früheren Updates muss irgendeine Form von Schaden in den Update-Infos hinterlassen haben. Was half, war das Löschen folgender Verzeichnisse (gilt ab Windows Vista):</p>
<p><em>C:\Users\&lt;Benutzername&gt;\AppData\Local\Mozilla\Firefox\Mozilla Firefox</em><br />
<em>C:\Users\&lt;Benutzername&gt;\AppData\Local\Thunderbird\Mozilla Thunderbird</em></p>
<p>Danach konnten beide wieder nach Updates suchen, ohne sie extra mit Admin-Rechten starten zu müssen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/260/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neue Rubrik &#8220;Technology&#8221;</title>
		<link>http://www.awzhome.de/pages/263</link>
		<comments>http://www.awzhome.de/pages/263#comments</comments>
		<pubDate>Wed, 09 Nov 2011 23:29:43 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[AWZhome]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=263</guid>
		<description><![CDATA[Im Seitenmenü gibt es nun einen neuen Eintrag: Technology. In diesem Unter-Blog finden sich in Zukunft vermischte Themen rund um den Computeralltag.]]></description>
				<content:encoded><![CDATA[<p>Im Seitenmenü gibt es nun einen neuen Eintrag: <a href="http://www.awzhome.de/pages/category/technology">Technology</a>. In diesem Unter-Blog finden sich in Zukunft vermischte Themen rund um den Computeralltag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/263/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logging im NQ Core</title>
		<link>http://www.awzhome.de/pages/252</link>
		<comments>http://www.awzhome.de/pages/252#comments</comments>
		<pubDate>Sat, 08 Oct 2011 14:35:05 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[NQ]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=252</guid>
		<description><![CDATA[Der NQ Core bietet einige einfache Funktionen zum Loggen von Informationen. Dieser Artikel soll Ihnen einen kleinen Einblick in die Logging-Möglichkeiten bieten.]]></description>
				<content:encoded><![CDATA[<p>Der NQ Core bietet einige einfache Funktionen zum Loggen von Informationen. Dieser Artikel soll Ihnen einen kleinen Einblick in die Logging-Möglichkeiten bieten.</p>
<h2>Grundlagen</h2>
<p>NQ Core bietet zentral Methoden zum Absetzen von Log-Nachrichten aus Services heraus. Eine Nachricht besteht aus folgenden Informationen:</p>
<ul>
<li><strong>Timestamp</strong> der Nachricht</li>
<li><strong>Level</strong></li>
<li><strong>Service-Instanz</strong>, der die Nachricht generiert</li>
<li><strong>Text</strong> der Nachricht</li>
</ul>
<p>Nachrichten sind klassisch in mehrere Levels kategorisiert, je nachdem, wie kritisch die Information ist. Per Konfiguration kann nach einzelnen Levels gefiltert werden, um das Aufkommen an Log-Nachricht auf ein sinnvolles Maß einzuschränken.</p>
<table border="0">
<tbody>
<tr>
<th>Level</th>
<th>Beschreibung</th>
</tr>
<tr>
<td>Error</td>
<td>Unerwartete Fehler, die u.U. die Stabilität der Anwendung beeinträchtigen können.</td>
</tr>
<tr>
<td>Warning</td>
<td>Informative Warnungen über Fehler, die sauber abgefangen werden, aber dennoch erwähnenswert sind. Dieses Level gibt es erst ab NQ Core 0.96.</td>
</tr>
<tr>
<td>Info</td>
<td>Informative Meldungen zu Abläufen in der Anwendung.</td>
</tr>
<tr>
<td>Debug</td>
<td>Meldungen, die v.a. für Entwickler hilfreich sind.</td>
</tr>
</tbody>
</table>
<p>Die Nachrichten werden auf 2 verschiedenen Wegen verteilt:</p>
<ul>
<li>Füllen einer Log-Datei im Benutzerverzeichnis.</li>
<li>Melden von Log-Meldungen über das <em>MessageLogged</em> Event des Service Manager (siehe weiter unten).</li>
</ul>
<h2>Konfiguration</h2>
<p>Die erste Möglichkeit der Konfiguration sind Kommandozeilenparameter, die an die EXE-Datei des NQ Host (nq.exe) übergeben werden können:</p>
<table border="0">
<tbody>
<tr>
<th>Parameter</th>
<th>Beschreibung</th>
</tr>
<tr>
<td>-li</td>
<td>Aktiviert das Schreiben von Info-Log-Messages in die Log-Datei.</td>
</tr>
<tr>
<td>-Li</td>
<td>Aktiviert das Melden von Info-Log-Messages über <em>MessageLogged</em> Event.</td>
</tr>
<tr>
<td>-ld</td>
<td>Aktiviert das Schreiben von Debug-Log-Messages in die Log-Datei.</td>
</tr>
<tr>
<td>-Ld</td>
<td>Aktiviert das Melden von Debug-Log-Messages über <em>MessageLogged</em> Event.</td>
</tr>
</tbody>
</table>
<p>Standardmäßig ist im NQ Core immer das Logging von Error- und Warning-Nachrichten aktiviert, sodass mit den o.g. Parametern lediglich zusätzliche Levels hinzugenommen werden können.</p>
<p>Die Konfiguration der Levels kann auch programmatisch erfolgen, indem die Eigenschaften <em>LogEventFilter</em> bzw. <em>LogFileFilter</em> belegt werden:</p>
<pre class="brush: csharp; title: ; notranslate">
// Events für alle Levels feuern
NQServiceManager.Instance.LogEventFilter = NQLogType.All;

// Nur Error- und Warning-Messages in die Log-Datei schreiben
NQServiceManager.Instance.LogFileFilter = NQLogType.Error | NQLogType.Warning;
</pre>
<p>Mittels Fluent Interface ist sogar eine noch bequemere Konfiguration möglich. Im folgenden Code werden alle Levels außer dem Debug-Level in die Log-Datei geschrieben:</p>
<pre class="brush: csharp; title: ; notranslate">
ServiceCore.Log.FileLevels = NQLogType.All;
ServiceCore.Log.FileLevels -= NQLogType.Debug;
</pre>
<p>Wenn das Logging in die Textdatei aktiviert wurde, wird Pfad und Name im Normalfall vom NQ Core bestimmt. Der Ablageort ist das Windows-Einstellungsverzeichnis des jeweiligen Benutzers, unter Windows 7 beispielsweise</p>
<p><em>C:\Users\&lt;Benutzername&gt;\AppData\Roaming\NQ.&lt;HashDesApplikationsverzeichnisses&gt;.log</em></p>
<p>Der Dateiname enthält einen Hashwert, der aus dem Ausführungspfad der Anwendung berechnet wird. Dies dient der Unterscheidung von Log-Dateien von NQ-basieren Anwendungen, die in verschiedenen Verzeichnissen installiert sind.</p>
<p>Name und Ablageort der Datei können über den Kommandozeilenparameter <em>-lf</em> geändert werden:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
nq.exe -lf C:\EinVerzeichnis\Datei.log
</pre>
<p>Abschließend seien noch Kommandozeilenparameter zeigt, mit denen Logging grundsätzlich deaktiviert werden kann:</p>
<table border="0">
<tbody>
<tr>
<th>Parameter</th>
<th>Beschreibung</th>
</tr>
<tr>
<td>-ln</td>
<td>Vollständiges Deaktivieren der Logging-Funktionalität (per Events und Log-Datei)</td>
</tr>
<tr>
<td>-lni</td>
<td>Deaktivieren des Logging in eine Textdatei auf einem Datenträger. Bei Angabe von <em>-ln</em> muss <em>-lni</em> nicht zusätzlich angegeben werden.</td>
</tr>
</tbody>
</table>
<h2>Ausgabe von Meldungen</h2>
<p>Services können jederzeit Log-Nachrichten ausgeben, indem sie entsprechende Methoden des Service Managers verwenden:</p>
<pre class="brush: csharp; title: ; notranslate">
// Log-Nachricht mit Info-Level
NQServiceManager.Instance.LogMessage(NQLogType.Info, &quot;Das ist eine Info-Nachricht&quot;);

// Log-Nachricht mit Angabe der loggenden Klasse
NQServiceManager.Instance.LogMessage(this, NQLogType.Info, &quot;Das ist eine Info-Nachricht&quot;);
</pre>
<p>Es ist auch möglich, bei Auftreten einer Exception diese direkt zum Generieren einer Log-Nachricht zu übergeben:</p>
<pre class="brush: csharp; title: ; notranslate">
try
{
    // Some code throwing an exception
}
catch (Exception ex)
{
    NQServiceManager.Instance.LogMessage(this, NQLogType.Error, ex);
}
</pre>
<p>Das gleiche ist auch mit dem Fluent Interface möglich:</p>
<pre class="brush: csharp; title: ; notranslate">
// Log-Nachricht mit Info-Level
ServiceCore.Log.Info(&quot;Das ist eine Info-Nachricht&quot;);

// Log-Nachricht mit Angabe der loggenden Klasse
ServiceCore.Log.From&lt;object&gt;(this).Info(&quot;Das ist eine Info-Nachricht&quot;);
</pre>
<pre class="brush: csharp; title: ; notranslate">
try
{
    // Some code throwing an exception
}
catch (Exception ex)
{
    ServiceCore.Log.From&lt;object&gt;(this).Error(ex);
}
</pre>
<h2>Benutzerdefinierte Behandlung von Log-Messages</h2>
<p>Wie bereits erwähnt, ermöglicht der NQ Core Services auch eine eigene Behandlung von Log-Nachrichten. Dazu dient das Event <em>MessageLogged</em>:</p>
<pre class="brush: csharp; title: ; notranslate">
NQServiceManager.Instance.MessageLogged += ServiceManager_MessageLogged;
</pre>
<p>&#8230;</p>
<pre class="brush: csharp; title: ; notranslate">
void ServiceManager_MessageLogged(object sender, NQLogEventArgs e)
{
    // Anzeige einer MessageBox bei Error-Logs
    if (e.LogType == NQLogType.Error)
    {
        MessageBox.Show(e.LogMessage, Application.ProductName,
            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
}
</pre>
<p>Eine besondere Eigenschaft betrifft die Log-Nachrichten, die vom Service Manager selbst erzeugt werden. Viele dieser Nachrichten werden nämlich schon erzeugt, bevor überhaupt ein Service aktiv wird. Damit Services auch diese Nachrichten mitbekommen, werden sie während der Startup-Phase vorübergehend gecached. Erst wenn alle Single-Instance-Services geladen und aktiv sind, werden diese zwischengespeicherten Nachrichten &#8220;auf einen Schlag&#8221; per <em>MessageLogged</em> Event verteilt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/252/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NQ Core 0.96 verfügbar</title>
		<link>http://www.awzhome.de/pages/254</link>
		<comments>http://www.awzhome.de/pages/254#comments</comments>
		<pubDate>Sat, 08 Oct 2011 14:27:04 +0000</pubDate>
		<dc:creator>Rpinski</dc:creator>
				<category><![CDATA[NQ]]></category>

		<guid isPermaLink="false">http://www.awzhome.de/?p=254</guid>
		<description><![CDATA[Das neue Release 0.96 des NQ Core ist nun über Codeplex und erstmals auch über NuGet zum Download verfügbar. Nach 10 Monaten seit dem letzten Release gab es keine bahnbrechenden Neuerungen, sondern v.a. Detailarbeit.]]></description>
				<content:encoded><![CDATA[<p>Das neue Release <strong>0.96</strong> des NQ Core ist nun über <a href="http://nq.codeplex.com/releases/view/74612">Codeplex</a> und erstmals auch über <a href="http://www.nuget.org/List/Packages/NQ.Core">NuGet</a> zum Download verfügbar. Nach 10 Monaten seit dem letzten Release gab es keine bahnbrechenden Neuerungen, sondern v.a. Detailarbeit:</p>
<ul>
<li>Der NQ GUI Host (<em>nq.exe</em>) basiert nun endlich auch auf WPF. Bisher war es immer noch eine Windows Forms Applikation, was zu Schwierigkeiten mit WPF-Oberflächen führen konnte.</li>
<li>Das inzwischen überflüssige <em>INQService</em> Interface wurde entfernt. Auch der Service Manager enthält keine Sonderbehandlung mehr für dieses Interface.</li>
<li>Verbesserungen an der Fehlertoleranz in den Initialisierungsroutinen des Service Managers.</li>
<li>Der Service Manager füllt nun die Log-Messages, die er während des Startup erzeugt, in einen Cache. Grund: Sie können von Services nicht mit dem <em>MessageLogged</em> Event abgefangen werden, weil die Services zu dem Zeitpunkt noch nicht aktiv sind. Sobald alle Single-Instance-Services initialisiert sind, werden die <em>MessageLogged</em> Events aus dem Cache &#8220;nachgefeuert&#8221;.</li>
<li>Neues Log-Level &#8220;Warning&#8221;.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.awzhome.de/pages/254/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
