<?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>Codehauerei Schwarz &#187; WCF</title>
	<atom:link href="http://codehauerei-schwarz.de/tag/wcf/feed/" rel="self" type="application/rss+xml" />
	<link>http://codehauerei-schwarz.de</link>
	<description>.NET SQL-Server &#38; more</description>
	<lastBuildDate>Mon, 28 Mar 2011 08:38:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Custom WCF Username/Password Validator mit wsHttpBinding</title>
		<link>http://codehauerei-schwarz.de/2010/04/16/custom-wcf-usernamepassword-validator-mit-wshttpbinding/</link>
		<comments>http://codehauerei-schwarz.de/2010/04/16/custom-wcf-usernamepassword-validator-mit-wshttpbinding/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 12:53:41 +0000</pubDate>
		<dc:creator>Andreas Schwarz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://codehauerei-schwarz.de/?p=175</guid>
		<description><![CDATA[... namespace WCFTestService.Auth { public class CustomUserNamePasswordValidator : UserNamePasswordValidator { public override void Validate(string userName, string password) { // check credentials here... ... Config: ... ... ... ...]]></description>
			<content:encoded><![CDATA[<pre class="brush:[c#]">
...
namespace WCFTestService.Auth
{
    public class CustomUserNamePasswordValidator : UserNamePasswordValidator
    {
        public override void Validate(string userName, string password)
        {
               // check credentials here...
...
</pre>
<p>Config:</p>
<pre class="brush:[xml]">
<system.serviceModel>
...
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpWithMessageSecurity">
          ...
          <security mode="Message">
<transport clientCredentialType="Basic">
              <extendedProtectionPolicy policyEnforcement="Never" />
            </transport>
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="CustomSecurityTest">
          <serviceCredentials>
            <serviceCertificate findValue="zensiert"
              storeLocation="zensiert" storeName="zensiert" x509FindType="FindBySerialNumber" />
            <userNameAuthentication userNamePasswordValidationMode="Custom"
              customUserNamePasswordValidatorType="WCFTestService.Auth.CustomUserNamePasswordValidator, WCFTestService" />
          </serviceCredentials>
          ...
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="CustomSecurityTest" name="ServiceTestConfig">
        <endpoint address="zensiert"
          binding="wsHttpBinding"
          bindingConfiguration="wsHttpWithMessageSecurity" name="wstHttpCustomSecurityTest"
          contract="WCFTestService.ITest" />
      </service>
    </services>
    ...
</system.serviceModel>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codehauerei-schwarz.de/2010/04/16/custom-wcf-usernamepassword-validator-mit-wshttpbinding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom WCF MSMQ-Tracer</title>
		<link>http://codehauerei-schwarz.de/2009/11/30/custom-wcf-msmq-tracer/</link>
		<comments>http://codehauerei-schwarz.de/2009/11/30/custom-wcf-msmq-tracer/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 20:56:26 +0000</pubDate>
		<dc:creator>Andreas Schwarz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[MSMQ]]></category>
		<category><![CDATA[Trace]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://codehauerei-schwarz.de/?p=160</guid>
		<description><![CDATA[WCF Custom MSMQ Tracer &#8211; Sample Das Standard-Traceing im WCF Framework ist erstaunlich einfach anzuwenden und zu konfigurieren. Auch das im Framework enthaltene Analysetool ist ganz brauchbar. So viel Luxus ist man gar nicht gewohnt wenn man vorher hauptsächlich mit dem WSE-Framework zu tun hatte&#8230; Leider ist Microsoft den Weg nicht komplett zu Ende gegangen. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/WCF-Custom-MSMQ-Tracer.rar">WCF Custom MSMQ Tracer &#8211; Sample</a></p>
<p>Das Standard-Traceing im WCF Framework ist erstaunlich einfach anzuwenden und zu konfigurieren. Auch das im Framework enthaltene Analysetool ist ganz brauchbar.</p>
<p>So viel Luxus ist man gar nicht gewohnt wenn man vorher hauptsächlich mit dem WSE-Framework zu tun hatte&#8230;</p>
<p>Leider ist Microsoft den Weg nicht komplett zu Ende gegangen. Gibt man sich nicht mit der Erzeugung von Logdateien zufrieden, sondern will das Ganze in eine Datenbank  bzw. Message Queue persistieren darf man wieder selbst tätig werden.</p>
<p>Ich würde davon abraten das komplette Traceing direkt synchron aufzusetzen. Es hat sich bewährt die Nachrichten zuerst einmal zwischenzulagern und die Verarbeitung dann asynchron auszuführen.</p>
<pre class="brush:[c#]">public class MsmqTracer : TraceListener
{
   public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
   {
   if (!string.IsNullOrEmpty(traceQueue))
   {
      try
      {
      MessageQueue msmq = new MessageQueue(traceQueue);
      MessageQueueTransaction trans = new MessageQueueTransaction();

      trans.Begin();
      Message msg = new Message(data.ToString(), new XmlMessageFormatter());

      msmq.Send(msg, trans);
      trans.Commit();
      }

      catch (Exception msmqEx)
      {
         Debug.WriteLine(string.Format("Error while persisting trace: {0}", msmqEx.ToString()));
      }
   }
   else
   {
      Debug.WriteLine("Missing MSMQ Trace");
   }
}

public override void Write(string message) {}

public override void WriteLine(string message) {}</pre>
<pre class="brush:[xml]"><!--l version="1.0" encoding="utf-8"-->

  <!-- Perfmon -->

 <!-- Trace Queue --></pre>
]]></content:encoded>
			<wfw:commentRss>http://codehauerei-schwarz.de/2009/11/30/custom-wcf-msmq-tracer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WCF Performance Counter</title>
		<link>http://codehauerei-schwarz.de/2009/11/30/wcf-performance-counter/</link>
		<comments>http://codehauerei-schwarz.de/2009/11/30/wcf-performance-counter/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 20:00:39 +0000</pubDate>
		<dc:creator>Andreas Schwarz</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://codehauerei-schwarz.de/?p=150</guid>
		<description><![CDATA[Das WCF-Framework stellt eine Unzahl an Meßwerten zur Verfügung. Leider ist das Ganze kaum dokumentiert&#8230; Die Aktivierung der Counter ist denkbar einfach (wenn man mal rausgefunden hat dass es sowas überhaupt gibt&#8230;) und erfolgt durch einen Eintrag in der App.Config des Hosts Die entsprechenden Werte lassen sich dann direkt mit perfmon anzeigen und auswerten.]]></description>
			<content:encoded><![CDATA[<p>Das WCF-Framework stellt eine Unzahl an Meßwerten zur Verfügung.</p>
<p>Leider ist das Ganze kaum dokumentiert&#8230;</p>
<p>Die Aktivierung der Counter ist denkbar einfach (wenn man mal rausgefunden hat dass es sowas überhaupt gibt&#8230;) und erfolgt durch einen Eintrag in der App.Config des Hosts</p>
<p><a href="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/PerfCountersConfig.png"><img class="alignnone size-full wp-image-151" title="PerfCountersConfig" src="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/PerfCountersConfig.png" alt="PerfCountersConfig" width="362" height="49" /></a></p>
<p>Die entsprechenden Werte lassen sich dann direkt mit perfmon anzeigen und auswerten.</p>
<p><a href="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/perfmon1.png"><img class="alignnone size-full wp-image-152" title="perfmon1" src="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/perfmon1.png" alt="perfmon1" width="584" height="386" /></a></p>
<p><a href="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/perfmon2.png"><img class="alignnone size-full wp-image-154" title="perfmon2" src="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/perfmon2.png" alt="perfmon2" width="461" height="532" /></a><a href="http://codehauerei-schwarz.de/wp-content/uploads/2009/11/perfmon2.png"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://codehauerei-schwarz.de/2009/11/30/wcf-performance-counter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

