<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://developers.de/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Andreas Erben's posts : BizTalk 2006 R2</title><link>http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx</link><description>Tags: BizTalk 2006 R2</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Don't cache your DeviceConnection in an EventHandler / Eine DeviceConnection sollte man nicht in einem Eventhandler cachen</title><link>http://developers.de/blogs/andreas_erben/archive/2008/06/11/don-t-cache-your-device-connection-in-an-eventhandler-eine-device-connection-sollte-man-nicht-in-einem-eventhandler-cachen.aspx</link><pubDate>Wed, 11 Jun 2008 08:29:38 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:2338</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=2338</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/06/11/don-t-cache-your-device-connection-in-an-eventhandler-eine-device-connection-sollte-man-nicht-in-einem-eventhandler-cachen.aspx#comments</comments><description>&lt;p&gt;(German version below / deutsche Version weiter unten)&lt;/p&gt; &lt;p&gt;A while ago I talked to someone who knows BizTalk RFID inside out about that sometimes it just takes too long to open a connection to a device in an EventHandler.&lt;/p&gt; &lt;p&gt;The advice I received was, why not caching the connection to the device in the EventHandler, possibly opening it in the in the Init() method and keeping it open.&lt;/p&gt; &lt;p&gt;Out of respect I gave it serious thought and now seriously recommend NOT to do that.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;When opening the connection in the Init()-method takes too long or has any slight problems, it will mess up starting up the whole process pipeline.&lt;/li&gt; &lt;li&gt;You would need to build thread safety around it. Though this is not the biggest concern, it is something you should not do.&lt;/li&gt; &lt;li&gt;There is a reason why a DeviceConnection implements IDisposable and allows you to use the using statement.&lt;/li&gt; &lt;li&gt;You effectively disable the chance of any other event handler in another process or even in another piece of software, e.g. a webservice, to access the device normally because you are hogging the connection the whole time.&lt;/li&gt; &lt;li&gt;Connection caching should be implemented by the device provider implementation, because only this piece of software can have appropriate knowledge.&lt;/li&gt; &lt;li&gt;In my opinion mechanisms like connection pooling should be part of the application stack in fact.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;There might be isolated cases where it still makes sense to cache a connection in an EventHandler, but those should be pretty rare.&lt;/p&gt; &lt;p&gt;(German version / deutsche Version)&lt;/p&gt; &lt;p&gt;For einiger Zeit unterhielt ich mich mit jemandem, der/die BizTalk RFID in- und auswendig kennt darüber, dass es manchmal einfach zu lange dauert, in einem EventHandler eine Verbindung zu einem Gerät zu öffnen.&lt;/p&gt; &lt;p&gt;Ich erhielt den Ratschlag, warum ich nicht die DeviceConnection im EventHandler cachen würde und sie vielleicht schon in der Init()-Methode öffnen würde und danach einfach offen lassen.&lt;/p&gt; &lt;p&gt;Aus Respekt gegenüber meinem Gesprächspartner habe ich ernsthaft darüber nachgedacht und empfehle nun sehr ernsthaft, dies NICHT zu tun.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Wenn das Öffnen der Verbindung in der Init()-Methode zu lange dauert, oder ein kleines Problem dabei auftritt, wird das den Startvorgang für die ganze Prozess-Pipeline stören.&lt;/li&gt; &lt;li&gt;Man muss um die Verbindung herum eine ordentliche Thread-Safety herum bauen. Auch wenn das nicht das Hauptproblem sein sollte, ist es einfach etwas, was man vermeiden sollte.&lt;/li&gt; &lt;li&gt;Es gibt einen Grund, warum die DeviceConnection IDisposable implementiert und so das using-Statement zulässt.&lt;/li&gt; &lt;li&gt;Man entzieht jedem anderen EventHandler in einem anderen Prozess oder auch einer anderen Software, z.B. einem Webservice, die Chance, selbst normal auf das Device zuzugreifen, weil man die ganze Zeit die Verbindung blockiert.&lt;/li&gt; &lt;li&gt;Eigentlich sollte man Connection Caching in einer Device Provider Implementierung vorfinden, da nur diese &amp;quot;wissen&amp;quot; kann, was das Device wirklich benötigt.&lt;/li&gt; &lt;li&gt;Meiner Meinung nach sollten Connection Pooling Mechanismen auch bei RFID Teil des Applikationsstack sein.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Es mag einzelne, isolierte Szenarien geben, wo es Sinn machen kann, eine DeviceConnection in einem EventHandler zu cachen, dies sollte aber wirklich ziemlich selten erforderlich sein.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=2338" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>Typical setting of IOPorts in BizTalk RFID / Typisches Setzen von IOPorts in BizTalk RFID</title><link>http://developers.de/blogs/andreas_erben/archive/2008/05/05/typical-setting-of-ioports-in-biztalk-rfid-typisches-setzen-von-ioports-in-biztalk-rfid.aspx</link><pubDate>Mon, 05 May 2008 07:26:34 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:2336</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=2336</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/05/05/typical-setting-of-ioports-in-biztalk-rfid-typisches-setzen-von-ioports-in-biztalk-rfid.aspx#comments</comments><description>&lt;p&gt;(German version below / deutsche Version weiter unten)&lt;/p&gt; &lt;p&gt;When wanting to set an IOPort in BizTalk RFID, to for example switch on a specific light connected to an RFID reader, you basically deal with bits and bytes that you set somewhere. There are typically two ways of how this is implemented in a device:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;the device will encode several signal lines in a bitmask in just one port (e.g. implemented by Intermec)  &lt;li&gt;the device will have a port for each and every line (e.g. implemented by Sirit)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Depending on the implementation and your hardware you will have to set a bit to 0 or to 1 to actually activate the line (usually to 1).&lt;/p&gt; &lt;p&gt;So, when wanting to set the second and third line, this could look like this in the first case (e.g. Intermec):&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] bitValue = &lt;span style="color:#2b91af;"&gt;BitConverter&lt;/span&gt;.GetBytes(6);&lt;/p&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;ThePortName&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;and like this in the second case (e.g. Sirit):&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] bitValue = &lt;span style="color:#2b91af;"&gt;BitConverter&lt;/span&gt;.GetBytes(1);&lt;/p&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;PortNameOfLine2&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;PortNameOfLine3&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;(German version)&lt;/p&gt; &lt;p&gt;Wenn man einen IOPort in BizTalk RFID setzen möchte, um beispielsweise ein bestimmtes Licht, welches an einen RFID Reader angeschlossen ist, anzuschalten, hat man vereinfacht gesagt mit Bits und Bytes zu tun, die man irgendwo setzen muss. Typischerweise gibt es zwei Herangehensweisen, wie dies in einem Gerät implementiert ist:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;das Gerät kodiert verschiedene Leitungen in einer Bitmaske in nur einem Port (z.B. so durch Intermec implementiert)  &lt;li&gt;das Gerät hat einen Port für jede einzelne Leitung (z. B. so bei Sirit zu finden)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Je nach Implementierung und der vorliegenden Hardware muss man nun den Wert jeweils zu 0 oder 1 setzen, um die Leitung zu aktivieren (normalerweise auf 1).&lt;/p&gt; &lt;p&gt;Wenn man also die zweite und dritte Leitung aktivieren möchte, würde das im ersten Fall (z.B. bei Intermec) so aussehen:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] bitValue = &lt;span style="color:#2b91af;"&gt;BitConverter&lt;/span&gt;.GetBytes(6);&lt;/p&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;ThePortName&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;und so im zweiten Fall (z.B. bei Sirit):&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] bitValue = &lt;span style="color:#2b91af;"&gt;BitConverter&lt;/span&gt;.GetBytes(1);&lt;/p&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;PortNameOfLine2&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;connection.SetProperty(&amp;quot;PortNameOfLine3&amp;quot;,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;StandardDevicePropertyGroups&lt;/span&gt;.Source,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;SourcePropertyGroup&lt;/span&gt;.PortOutputValue,&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bitValue, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=2336" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>daenet wins German innovation prize 2008 for SOA / daenet gewinnt den Innovationspreis 2008 für die Kategorie SOA</title><link>http://developers.de/blogs/andreas_erben/archive/2008/03/06/daenet-wins-german-innovation-prize-2008-for-soa-daenet-gewinnt-den-innovationspreis-2008-f-252-r-die-kategorie-soa.aspx</link><pubDate>Thu, 06 Mar 2008 15:41:43 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1817</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1817</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/03/06/daenet-wins-german-innovation-prize-2008-for-soa-daenet-gewinnt-den-innovationspreis-2008-f-252-r-die-kategorie-soa.aspx#comments</comments><description>&lt;p&gt;(German version below / deutsche Version weiter unten)&lt;/p&gt;  &lt;p&gt;Now I can finally talk about it. &lt;a href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html" target="_blank"&gt;Our daenet SOA Suite now has officially been awarded with an important prize&lt;/a&gt;. &amp;quot;&lt;a title="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html" href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html"&gt;http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html&lt;/a&gt;&amp;quot; The &amp;quot;Innovationspreis 2008&amp;quot; (innovation prize 2008) specifically considers the needs of the so called &amp;quot;Mittelstand&amp;quot;. The &amp;quot;Mittelstand&amp;quot; is the engine and the driver of the economy in Germany. Even though it means roughly &amp;quot;medium sized businesses&amp;quot;, many of them are international, globalized companies with 10000 employees and more that in the US most often would be called enterprises. What is special about them is the down-to-earth &amp;quot;can-do&amp;quot; attitude and the need for fast return of investment (ROI) coupled with a high level of innovation.&lt;/p&gt;  &lt;p&gt;So we are very proud that our SOA solution is being recognized as the &lt;strong&gt;BEST&lt;/strong&gt; SOA solution for the most important customers that possibly could exist for all the right reasons.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/jury.html" target="_blank"&gt;jury&lt;/a&gt; was huge and impressive, both academically apt and still with the mindset of delivering value is the key differentiator in life.&lt;/p&gt;  &lt;p&gt;Why did we target the needs of the &amp;quot;Mittelstand&amp;quot;? Because we see that a lot of SOA approaches are far too complex for most companies and therefore too much being talked about and too little is being actually done. Being suitable for &amp;quot;Mittelstand&amp;quot; in my opinion automatically means being suitable for enterprises with the advantage that you can &amp;quot;scale&amp;quot; the approach down even to the departmental level.&lt;/p&gt;  &lt;p&gt;In future posts I will likely talk more about what the &lt;em&gt;daenet&lt;/em&gt; SOA Suite can do... until then: just ask me if you are interested.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(German version / deutsche Version)&lt;/p&gt;  &lt;p&gt;Nun kann ich endlich dar&amp;#252;ber sprechen. &lt;a href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html" target="_blank"&gt;Unsere daenet SOA Suite wurde offiziell mit einem wichtigen Preis ausgezeichnet&lt;/a&gt;. &amp;quot;&lt;a title="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html" href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html"&gt;http://www.imittelstand.de/auszeichnungen/innovationspreis2008/kategoriesieger/soa.html&lt;/a&gt;&amp;quot; Der &amp;quot;Innovationspreis 2008&amp;quot; ber&amp;#252;cksichtigt besonders die Bed&amp;#252;rfnisse des sogenannten &amp;quot;Mittelstand&amp;quot;. Der Mittelstand ist der Motor der deutschen Wirtschaft. Auch wenn es eigentlich &amp;quot;Mittelgro&amp;#223;e Firmen&amp;quot; bedeutet, sind viele dieser in Wirklichkeit internationale, globalisierte Firmen mit 10000 und mehr Angestellten, die in den USA oft &amp;quot;enterprises&amp;quot; genannt w&amp;#252;rden. Besonders am Mittelstand ist die Bodenst&amp;#228;ndigkeit und die &amp;quot;wir machen&amp;#39;s m&amp;#246;glich&amp;quot;-Einstellung, welche aber mit der Notwendigkeit einhergeht, einen schnellen Investitionsr&amp;#252;ckfluss (ROI) zu erreichen, der mit einem hohen Innovationsbedarf und hoher Innovationskraft gekoppelt ist.&lt;/p&gt;  &lt;p&gt;Also sind wir sehr stolz, dass unsere SOA L&amp;#246;sung als die &lt;strong&gt;BESTE&lt;/strong&gt; SOA L&amp;#246;sung f&amp;#252;r diese Kundenzielgruppe anerkannt wurde, welche sicherlich aus all den richtigen Gr&amp;#252;nden heraus gesehen die wichtigste Kundenzielgruppe &amp;#252;berhaupt ist.&lt;/p&gt;  &lt;p&gt;Die &lt;a href="http://www.imittelstand.de/auszeichnungen/innovationspreis2008/jury.html" target="_blank"&gt;Jury&lt;/a&gt; selbst war gro&amp;#223; und beeindruckend: Akademisch qualifiziert und gleichzeitig mit dem Bewusstsein, dass &amp;quot;Werte schaffen&amp;quot; der Hauptunterscheidungsgrund im Leben ist.&lt;/p&gt;  &lt;p&gt;Warum haben wir speziell die Bed&amp;#252;rfnisse des &amp;quot;Mittelstand&amp;quot; adressiert? Weil wir sehen, dass viele SOA Ans&amp;#228;tze bei weitem zu komplex f&amp;#252;r die meisten Firmen sind und deshalb zu viel geredet und zu wenig gehandelt wird. Wenn eine L&amp;#246;sung f&amp;#252;r den Mittelstand geeignet ist, heisst das meiner Meinung nach, dass sie automatisch auch f&amp;#252;r Konzerne geeignet ist aber den Vorteil mitbringt, nach &amp;quot;unten&amp;quot; skalierbar zu sein, also selbst auf Abteilungsebene einsetzbar zu sein.&lt;/p&gt;  &lt;p&gt;In k&amp;#252;nftigen Artikeln werde ich wahrscheinlich mehr dar&amp;#252;ber schreiben, was die &lt;em&gt;daenet&lt;/em&gt; SOA Suite alles kann... bis dahin: Bitte fragen Sie mich, wenn Sie Interesse haben!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1817" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/WCF/default.aspx">WCF</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BPM/default.aspx">BPM</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Huge surprise today around daenet and SOA / Heute große Überraschung rund um daenet und SOA</title><link>http://developers.de/blogs/andreas_erben/archive/2008/03/06/huge-surprise-today-around-daenet-and-soa-heute-gro-223-e-220-berraschung-rund-um-daenet-und-soa.aspx</link><pubDate>Thu, 06 Mar 2008 12:35:18 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1816</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1816</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/03/06/huge-surprise-today-around-daenet-and-soa-heute-gro-223-e-220-berraschung-rund-um-daenet-und-soa.aspx#comments</comments><description>&lt;p&gt;(German version below / deutsche Version weiter unten)&lt;/p&gt;  &lt;p&gt;Expect a huge surprise today. I am waiting for the official press info to leak out so nobody is upset with me that I talk about it. What I can tell you is that it is around &lt;em&gt;daenet&lt;/em&gt; and SOA. It will be one more reason to talk to us when it comes to this topic :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(German version / deutsche Version)&lt;/p&gt;  &lt;p&gt;Heute kommt noch eine gro&amp;#223;e &amp;#220;berraschung auf uns zu. Ich warte noch darauf, dass eine offizielle Presseinfo raussickert, so dass niemand sauer auf mich sein kann, dass ich dar&amp;#252;ber rede. Was ich jetzt schon sagen kann ist, dass es um &lt;em&gt;daenet&lt;/em&gt; und SOA geht. Es wird ein weiterer Grund sein, mit uns &amp;#252;ber dieses Themengebiet zu sprechen :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1816" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/WCF/default.aspx">WCF</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/.NET+3.0/default.aspx">.NET 3.0</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/.NET+3.5/default.aspx">.NET 3.5</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Typical processing of IOPortValueChangedEvents / Typische Verarbeitung von IOPortValueChangedEvents</title><link>http://developers.de/blogs/andreas_erben/archive/2008/02/27/typical-processing-of-ioportvaluechangedevents-typische-verarbeitung-von-ioportvaluechangedevents.aspx</link><pubDate>Wed, 27 Feb 2008 11:13:58 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1814</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1814</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/02/27/typical-processing-of-ioportvaluechangedevents-typische-verarbeitung-von-ioportvaluechangedevents.aspx#comments</comments><description>&lt;p&gt;(German version below, deutsche Version weiter unten)&lt;/p&gt;  &lt;p&gt;When dealing with IOPortValueChangedEvents, you will have a method like this: &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;[&lt;span style="color:#2b91af;"&gt;RfidEventHandlerMethod&lt;/span&gt;]&lt;/p&gt;              &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;               &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IOPortValueChangedEvent&lt;/span&gt; HandleIOPortValueChangedEvent(&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;IOPortValueChangedEvent&lt;/span&gt; iOPortEvent)&lt;/p&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;What to do with it now?    &lt;br /&gt;After considering the DeviceName, the PortName, the Source and the Time-properties of the ioPortEvent, usually the most important piece of information is in the byte-array shown here:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] iodata = iOPortEvent.GetPortValue();&lt;/p&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;(Of course can have VendorSpecificData also, but this special case is neglected here.)&lt;/p&gt;  &lt;p&gt;What you want to do for each of these bytes is to be able to compare against it. We look at the &amp;quot;discrete&amp;quot; case where you do not care about continuous values but about specific lines being set somewhere, meaning that specific bits are set to &amp;quot;0&amp;quot; or &amp;quot;1&amp;quot;.    &lt;br /&gt;This is &amp;quot;old-school&amp;quot;. Typically this is done by two things:     &lt;br /&gt;1. Define a bitmask with the bits that interest you, use it with &amp;quot;AND&amp;quot; on the retrieved value     &lt;br /&gt;2. then compare the result with a value you provide. This gives you pretty good flexibility.     &lt;br /&gt;In the case of having only one element in the array above, this is simplified to:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt; ioValue = iodata[0];&lt;/p&gt;              &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;               &lt;p style="margin:0px;"&gt;ioValue = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToByte( ioValue &amp;amp; m_InputIOBitMask );&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (ioValue == m_InputIOValue)&lt;/p&gt;                &lt;p style="margin:0px;"&gt;{&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// do something&lt;/span&gt;&lt;/p&gt;                &lt;p style="margin:0px;"&gt;}&lt;/p&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(German version, deutsche Version)&lt;/p&gt;  &lt;p&gt;Wenn man mit&amp;#160; IOPortValueChangedEvents zu tun hat, wird in der Regel eine derartige Methode vorliegen: &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;[&lt;span style="color:#2b91af;"&gt;RfidEventHandlerMethod&lt;/span&gt;]&lt;/p&gt;              &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;               &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;IOPortValueChangedEvent&lt;/span&gt; HandleIOPortValueChangedEvent(&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;IOPortValueChangedEvent&lt;/span&gt; iOPortEvent)&lt;/p&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Was nun?    &lt;br /&gt;Nachdem man DeviceName,&amp;#160; PortName,&amp;#160; Source und die Time-Properties von ioPortEvent beachtet hat, ist normalerweise der wirklich relevante Teil in diesem Byte-Array:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt;[] iodata = iOPortEvent.GetPortValue();&lt;/p&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;(Nat&amp;#252;rlich kann es auch VendorSpecificData geben, dieser Fall wird hier aber vernachl&amp;#228;ssigt)&lt;/p&gt;  &lt;p&gt;Nun will man in der Lage sein, diese Bytes gegen etwas zu vergleichen. Wir betrachten den &amp;quot;diskreten&amp;quot; Fall, also wo man sich nicht um kontinuierliche Werte k&amp;#252;mmert, sondern darum dass bestimmte Verbindungen irgendwo vorhanden sind. Dies bedeutet, dass bestimmte Bits auf &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; sind.    &lt;br /&gt;Das ist &amp;quot;Old School&amp;quot;. Typischerweise wird dies durch zwei Dinge erledigt:     &lt;br /&gt;1. Definiere eine BitMask mit den Bits, welche interessant sind und verkn&amp;#252;pfe diese mit &amp;quot;UND&amp;quot; mit dem erhaltenen Wert     &lt;br /&gt;2. dann wird das Ergebnis mit einem Wert verglichen, f&amp;#252;r welchen wir uns interessieren. So erreicht man relativ gro&amp;#223;e Flexibilit&amp;#228;t.     &lt;br /&gt;In dem Fall, dass nur ein Element im obigen Array ist, vereinfacht sich dies zu:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="0"&gt;     &lt;tr&gt;       &lt;td&gt;         &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;           &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;             &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;byte&lt;/span&gt; ioValue = iodata[0];&lt;/p&gt;              &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt;               &lt;p style="margin:0px;"&gt;ioValue = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToByte( ioValue &amp;amp; m_InputIOBitMask );&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (ioValue == m_InputIOValue)&lt;/p&gt;                &lt;p style="margin:0px;"&gt;{&lt;/p&gt;                &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// irgendwas machen&lt;/span&gt;&lt;/p&gt;                &lt;p style="margin:0px;"&gt;}&lt;/p&gt;             &lt;/div&gt;           &lt;/div&gt;         &lt;/div&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1814" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>Presentation at the / Präsentation auf den 1st Worldwide Microsoft RFID Solution Days</title><link>http://developers.de/blogs/andreas_erben/archive/2008/02/20/presentation-at-the-pr-228-sentation-auf-den-1st-worldwide-microsoft-rfid-solution-days.aspx</link><pubDate>Wed, 20 Feb 2008 03:29:44 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1813</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1813</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/02/20/presentation-at-the-pr-228-sentation-auf-den-1st-worldwide-microsoft-rfid-solution-days.aspx#comments</comments><description>&lt;p&gt;(German version below / deutsche Version weiter unten)&lt;/p&gt;  &lt;p&gt;Today I had the honor to present at the 1st Worldwide Microsoft RFID Solution Days (currently the corresponding page can be found &lt;a href="https://dynamicevents.emeetingsonline.com/emeetings/websitev2.asp?mmnno=279&amp;amp;pagename=SITE95554" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;You can find &lt;a href="http://developers.de/blogs/andreas_erben/Presentations/BizTalkRFID/RFIDSolutionDays2008/RFIDSolDays-StampingRoad2Success-daenet.zip" target="_blank"&gt;my presentation here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In the presentation I spoke about BizTalk RFID and about how a customer sees potential of real business problems to be solved easily with the help of RFID based technologies, about what the long-term vision is and what components can help building up a sound architecture at the same time.&lt;/p&gt;  &lt;p&gt;I introduced the Sensor Service Bus, the &lt;em&gt;daenet&lt;/em&gt; SOA Suite and XSYLON and what they can do for a customer.&lt;/p&gt;  &lt;p&gt;When talking about the SOA Suite it might have been that some folks might have misunderstood me jokingingly saying that using a virtual distributed service bus with some processing done by the participants instead of the core server might lead to BizTalk selling less licenses. Well, the actual point behind this is, that the patterns introduced by the daenet SOA Suite in fact are different from BizTalk&amp;#39;s hub/spoke approach. So, what it actually means is - well, you might sell less BizTalk licenses for the use cases where BizTalk is currently not a good fit anyways. (We are talking about direct communication between clients and services here.)&lt;/p&gt;  &lt;p&gt;In the end I have a strong belief in that it is better to deliver customer satisfaction than to sell a product at all cost and have a customer that might end up being unhappy with the solution they get.&lt;/p&gt;  &lt;p&gt;So, we are complementing BizTalk with new features and approaches, not competing with it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;(German version / deutsche Version)&lt;/p&gt;  &lt;p&gt;Heute hatte ich die Ehre auf den ersten weltweiten Microsoft RFID Solution Days (zur Zeit kann die entsprechende Seite noch &lt;a href="https://dynamicevents.emeetingsonline.com/emeetings/websitev2.asp?mmnno=279&amp;amp;pagename=SITE95554" target="_blank"&gt;hier&lt;/a&gt; gefunden werden).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://developers.de/blogs/andreas_erben/Presentations/BizTalkRFID/RFIDSolutionDays2008/RFIDSolDays-StampingRoad2Success-daenet.zip" target="_blank"&gt;Meine Pr&amp;#228;sentation ist hier&lt;/a&gt; zu finden.&lt;/p&gt;  &lt;p&gt;In der Pr&amp;#228;sentation sprach ich &amp;#252;ber BizTalk RFID und dar&amp;#252;ber, wie ein Kunde das Potential sieht, echte Probleme in Gesch&amp;#228;ftsprozessen mit RFID basierenden Technologien leicht zu l&amp;#246;sen, was die langfristige Vision des Kunden ist und welche Komponenten helfen k&amp;#246;nnen, das Ganze in einer guten Architektur zu verankern sind.&lt;/p&gt;  &lt;p&gt;Ich f&amp;#252;hrte den Sensor Service Bus, die &lt;em&gt;daenet&lt;/em&gt; SOA Suite und XSYLON ein und erkl&amp;#228;rte, was diese Komponenten f&amp;#252;r einen Kunden tun k&amp;#246;nnen.&lt;/p&gt;  &lt;p&gt;Als ich &amp;#252;ber die SOA Suite gesprochen habe, haben mich m&amp;#246;glicherweise einige mi&amp;#223;verstanden, als ich aus Spa&amp;#223; gesagt habe, dass bei der Verwendung eines virtuellen verteilten Service Bus, wo Teile der Verarbeitung direkt bei den Partizipanten stattfindet, statt auf einem Server im Kern der Verarbeitung,dies dazu f&amp;#252;hren k&amp;#246;nnte, dass BizTalk weniger oft verkauft w&amp;#252;rde. Nun, der Knackpunkt dahinter ist, dass die Patterns, welche &amp;#252;ber die daenet SOA Suite eingef&amp;#252;hrt werden tats&amp;#228;chlich unterschiedlich gegen&amp;#252;ber dem typischen Hub/Spoke Szenario des BizTalk ist. Was wirklich gemeint ist: Nun, vielleicht verkauft man weniger BizTalk Lizenzen f&amp;#252;r die Use Cases, wo BizTalk sowieso nicht gut passen w&amp;#252;rde (denn wir reden hier &amp;#252;ber die direkte Kommunikation zwischen Clients und Services).&lt;/p&gt;  &lt;p&gt;Ich glaube fest daran, dass es besser ist, den Kunden zufrieden zu stellen, als um jeden Preis ein Produkt zu verkaufen und am Ende einen Kunden zu haben, der mit der gelieferten L&amp;#246;sung ungl&amp;#252;cklich ist.&lt;/p&gt;  &lt;p&gt;Wir erg&amp;#228;nzen also BizTalk um sinnvolle neue Features und Ans&amp;#228;tze und stehen nicht im Wettbewerb damit.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1813" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>Consideration when using PGL templates to Printronix printers - Was ist bei der Verwendung von PGL Templates für Printronix Drucker zu beachten</title><link>http://developers.de/blogs/andreas_erben/archive/2008/02/06/consideration-when-using-pgl-templates-to-printronix-printers-was-ist-bei-der-verwendung-von-pgl-templates-f-252-r-printronix-drucker-zu-beachten.aspx</link><pubDate>Wed, 06 Feb 2008 08:28:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1791</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1791</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2008/02/06/consideration-when-using-pgl-templates-to-printronix-printers-was-ist-bei-der-verwendung-von-pgl-templates-f-252-r-printronix-drucker-zu-beachten.aspx#comments</comments><description>&lt;p&gt;(German Version below - Deutsche Version weiter unten)&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Read the release notes of the Printronix DSPI!&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;(This section relates to the DSPI available in February 2008)&lt;/p&gt;
&lt;p&gt;One relevant part of it says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The provider does not support locking tags using the Print Wizard. Tags must be locked using the LOCK option in the PGL template.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So, you need to adjust the template when you want to lock tags. 
&lt;p&gt;Then: 
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;PGL templates must use DF1 for the Tag Identifier field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF2 for the Tag Data field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF3 for the Access Code field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF4 for the Kill Code field.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For example this means that for BizTalk RFID to &amp;quot;know&amp;quot; what to do when you want to put the Tag Identifier field, you have to put&amp;nbsp;&amp;quot;DF1&amp;quot; in your PGL template. 
&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;The SFCC must be ‘~’.&lt;/u&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;e.g. in the template:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;~NORMAL&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;&lt;strong&gt;Do not forget to put &amp;quot;DISK&amp;quot; in your &amp;quot;~CREATE&amp;quot; line&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;For those who write/edit templates from scratch in PGL or whose tools for editing templates are perhaps flawed, it is important to remember that you need to put &amp;quot;DISK&amp;quot; in your &amp;quot;~CREATE&amp;quot; line.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;~CREATE;RAFU450;216;DISK&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;If you forget this, then you will try endlessly to send the template to the printer through BizTalk RFID, it will not show up in the list of available templates! Actually BizTalk RFID will send the template just fine, but the printer is missing the instruction to save the template in the flash memory where it needs to be stored, so it will not be available for you.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Vista users (and others): Do not edit the supplied PGL-template examples with Notepad, use a good text editor&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&amp;quot;Notepad&amp;quot; of Windows Vista unfortunately does not represent the usual line-feeds correctly (this also applies to some other text editor programs).&lt;/p&gt;
&lt;p&gt;Example:&amp;nbsp; RAFU450.pgl in Vista Notepad&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developers.de/blogs/andreas_erben/WindowsLiveWriter/ConsiderationwhenusingPGLtemplatestoPrin_3F01/image_6.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="68" alt="image" src="http://developers.de/blogs/andreas_erben/WindowsLiveWriter/ConsiderationwhenusingPGLtemplatestoPrin_3F01/image_thumb_2.png" width="552" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Example how it should look like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;~CREATE;RAFU450;216;DISK&lt;br /&gt;RFWTAG;96;EPC&lt;br /&gt;96;DF1;H&lt;br /&gt;STOP&lt;br /&gt;RFWTAG;256;USR&lt;br /&gt;256;DF2;H&lt;br /&gt;STOP&lt;br /&gt;END&lt;br /&gt;~NORMAL&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Please use another text-editor that ideally does not do anything fancy like gobbling up those characters or changing encoding or adding prefix bytes...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;(German version / deutsche Version)&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;Die Release Notes des Printronix DSPI lesen!&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;(Dieser Bereich bezieht sich auf den DSPI, welcher Anfang Februar 2008 verfügbar war.)&lt;/p&gt;
&lt;p&gt;Eine relevante Aussage ist:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The provider does not support locking tags using the Print Wizard. Tags must be locked using the LOCK option in the PGL template.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Also muss man im PGL Template vorsehen, dass ein Tag &amp;quot;gelockt&amp;quot; wird. 
&lt;p&gt;Dann:&amp;nbsp; 
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;PGL templates must use DF1 for the Tag Identifier field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF2 for the Tag Data field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF3 for the Access Code field.&lt;/em&gt; 
&lt;p&gt;&lt;em&gt;PGL templates must use DF4 for the Kill Code field.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Dies bedeutet, dass wir die DF1 bis DF4 Felder für die Kern-Tag-Funktionalitäten nutzen müssen, welche BizTalk RFID benötigt. Zum Beispiel benötigt BizTalk RFID das &amp;quot;DF1&amp;quot;-Feld im Template um zu wissen, dass man das Tag Identifier Feld benutzen möchte.. 
&lt;blockquote&gt;
&lt;p&gt;&lt;u&gt;The SFCC must be ‘~’.&lt;/u&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Zum Beispiel also im Template:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;~NORMAL&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Nicht vergessen, &amp;quot;DISK&amp;quot; in der &amp;quot;~CREATE&amp;quot; Zeile anzufügen.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Für diejenigen, welche Templates verändern oder komplett manuell in PGL erzeugen, oder für diejenigen, welche Templates mit Tools verändern, welche vielleicht ein paar Problemchen haben, ein wichtiger Hinweis: In die &amp;quot;~CREATE&amp;quot;-Zeile muss ein &amp;quot;DISK&amp;quot;.&lt;/p&gt;
&lt;p&gt;Beispiel:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="courier new"&gt;~CREATE;RAFU450;216;DISK&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Wenn man dies vergisst, wird man immer wieder erfolglos versuchen, das Template über BizTalk RFID an den Drucker zu übertragen, es wird nie in der Liste der verfügbaren Templates auftauchen. Genauer gesagt macht BizTalk RFID alles richtig, das Template wird ordentlich an den Drucker geschickt, aber es fehlt die Anweisung, dass das Template im Flash Memory, wo es hin muss, abgespeicehrt wird - daher ist es nicht verfügbar.&lt;/p&gt;
&lt;p&gt;Bei Problemen also ruhig einmal in einem guten Text Editor (nicht Notepad für Vista, dies stellt Zeilenumbrüche nicht gut dar) im PGL-Template nachschauen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Vista Benutzer und andere: Die mitgelieferten PGL-Template Beispiele nicht mit Notepad verändern, sondern einen besseren Text Editor verwenden.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Das &amp;quot;Notepad&amp;quot; von Windows Vista stellt leider die üblichen Zeilenumbrüche nicht richtig dar (dies gilt auch für manche anderen Editoren).&lt;/p&gt;
&lt;p&gt;Beispiel:&amp;nbsp; RAFU450.pgl in Vista Notepad&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developers.de/blogs/andreas_erben/WindowsLiveWriter/ConsiderationwhenusingPGLtemplatestoPrin_3F01/image_6.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="68" alt="image" src="http://developers.de/blogs/andreas_erben/WindowsLiveWriter/ConsiderationwhenusingPGLtemplatestoPrin_3F01/image_thumb_2.png" width="552" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Beispiel wie es aussehen sollte:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;~CREATE;RAFU450;216;DISK&lt;br /&gt;RFWTAG;96;EPC&lt;br /&gt;96;DF1;H&lt;br /&gt;STOP&lt;br /&gt;RFWTAG;256;USR&lt;br /&gt;256;DF2;H&lt;br /&gt;STOP&lt;br /&gt;END&lt;br /&gt;~NORMAL&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Bitte daher einen anderen Texteditor verwenden, der idealerweise keine derartigen Zeichen verschluckt und der auch nicht versucht das Encoding zu verändern oder Prefix-Bytes anzuhängen.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1791" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>German/deutscher BizTalk RFID Webcast as part of the German/als Teil des deutschen BizTalk Server 2006 R2 Launch</title><link>http://developers.de/blogs/andreas_erben/archive/2007/11/15/german-deutscher-biztalk-rfid-webcast-as-part-of-the-german-als-teil-des-deutschen-biztalk-server-2006-r2-launch.aspx</link><pubDate>Thu, 15 Nov 2007 18:49:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1675</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1675</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/11/15/german-deutscher-biztalk-rfid-webcast-as-part-of-the-german-als-teil-des-deutschen-biztalk-server-2006-r2-launch.aspx#comments</comments><description>&lt;p&gt;(German version below, English version is very minimal since this post is targeted to the German audience)&lt;/p&gt; &lt;p&gt;On November 15, 2007, I presented BizTalk RFID in a webcast format to the German audience in German as part of the launch of BizTalk 2006 R2.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;(German version)&lt;/p&gt; &lt;p&gt;Am 15. November 2007 durfte ich BizTalk RFID der deutschen Community im Rahmen des deutschen Microsoft BizTalk Server 2006 R2 Launch-Events vorführen.&lt;/p&gt; &lt;p&gt;Anbei stelle ich gerne allen &lt;a href="http://developers.de/blogs/andreas_erben/Presentations/BizTalkRFID/BTS2006R2LaunchGermany/BTSR2Launch_Germany_BTSRFID.zip" target="_blank"&gt;die Slides hier zum Download zur Verfügung&lt;/a&gt;. Für Code-Beispiele und ähnliches möchte ich auf mein &lt;a href="http://developers.de/blogs/andreas_erben/archive/2007/11/08/biztalk-rfid-work-at-teched-emea-developers-2007-by-daenet.aspx" target="_blank"&gt;vorheriges Blog-Post zur TechEd Developers 2007 in Barcelona verweisen&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Leider war ich durch eine starke Erkältung und damit zusammenhängendem Doping, um den Webcast überhaupt durchführen zu können schwer &amp;quot;gehandicappt&amp;quot; und ich bitte die Teilnehmer um Nachsicht. Gerne spreche ich mit Interessierten im Nachgang über BizTalk RFID.&lt;/p&gt; &lt;p&gt;Der Webcast war leider nur eine Stunde lang und hatte den Anspruch, die technischen Aspekte einem gemischtem Publikum etwas näher zu bringen. Dies ist ein schwieriges Unterfangen, da das Produkt zu umfangreich und die Interessengruppen zu verschieden sind, um es allen recht zu machen. Ich hoffe, dass dennoch ein erstes Gefühl dafür entstand, was man mit Biztalk RFID erreichen kann, über viele Bereiche musste ich leider sehr schnell rüberfliegen und sehr oberflächlich bleiben. Wir wollten dennoch bewusst vermeiden, nur einen Feature-Rundflug mit Marketing-Slides über das Produkt zu machen, sondern zumindest einen kurzen Einblick in das &amp;quot;doing&amp;quot; geben, daher gab es in der Veranstaltung zum Beispiel kurz &amp;quot;Code&amp;quot; zu sehen und auch ein kommendes &amp;quot;SOA-Integrations Pattern&amp;quot;, der Sensor Service Bus, wurde kurz vorgestellt.&lt;/p&gt; &lt;p&gt;Nach meiner Meinung wäre es sinnvoll, künftig mehrere Veranstaltungen zum Thema durchzuführen, welche sich beispielsweise wie folgt aufgliedern könnten:&lt;/p&gt; &lt;table cellpadding="2" cellspacing="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;b&gt;Zielgruppe&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Beschreibung&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Alle&lt;/td&gt; &lt;td&gt;Allgemeiner Überblick ohne Entwicklung usw – im Gegensatz zu dem „alles in einer Stunde“&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Entscheidungsträger/BDMs (Business Decision Maker), Business Analysten, Solution-Architekten&lt;/td&gt; &lt;td&gt;business value: typische Business Szenarien und wie man diese mit BizTalk RFID lösen kann, welchen Business Value BizTalk RFID bietet (z.B. Supply Chain, Asset Management usw.)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Software-Architekten, Entwickler&lt;/td&gt; &lt;td&gt;Architektonische und Integrations Patterns mit BizTalk RFID (vielleicht mit Vertiefung von Sensor Service Bus in gesonderter Session)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Softwareentwickler&lt;/td&gt; &lt;td&gt;Einführung in die synchronen BizTalk RFID APIs&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Softwareentwickler&lt;/td&gt; &lt;td&gt;Einführung in die asynchrone BizTalk RFID Entwicklung&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Softwareentwickler&lt;/td&gt; &lt;td&gt;Einführung in die DSPI Entwicklung&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Architekten, Softwareentwickler&lt;/td&gt; &lt;td&gt;Best Practices, Business Rule Engine, Logging, Performance Aspekte... (lässt sich beliebig ausweiten)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Administratoren, IT-Pros&lt;/td&gt; &lt;td&gt;BizTalk RFID für den IT Pro&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Entscheidungsträger/BDMs (Business Decision Maker)&lt;/td&gt; &lt;td&gt;Kundenstories&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Alle&lt;/td&gt; &lt;td&gt;Workshops - mit Einbeziehung von Hardware&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1675" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/SOA/default.aspx">SOA</category></item><item><title>BizTalk RFID@Work at TechEd EMEA Developers 2007 by daenet</title><link>http://developers.de/blogs/andreas_erben/archive/2007/11/08/biztalk-rfid-work-at-teched-emea-developers-2007-by-daenet.aspx</link><pubDate>Thu, 08 Nov 2007 10:55:30 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1657</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1657</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/11/08/biztalk-rfid-work-at-teched-emea-developers-2007-by-daenet.aspx#comments</comments><description>&lt;p&gt;(German version below)&lt;/p&gt; &lt;p&gt;Today we presented about &lt;a href="http://www.microsoft.com/biztalk/technologies/rfid/default.mspx" target="_blank"&gt;Microsoft BizTalk RFID&lt;/a&gt; at the &lt;a href="http://www.mseventseurope.com/teched/07/developers" target="_blank"&gt;TechEd EMEA Developers conference in Barcelona&lt;/a&gt;. Some content was similar to &lt;a href="http://developers.de/blogs/andreas_erben/archive/2007/11/02/presentation-at-pr-228-sentation-auf-der-microsoft-soa-amp-business-process-conference-2007.aspx" target="_blank"&gt;the presentation we did last week at the Microsoft SOA&amp;amp;Business Process Management conference in Redmond&lt;/a&gt;, but since the audience at TechEd is more developer centric, we prioritized on showing demos and code. You can find our slide deck here: &lt;a title="SBP306_Microsoft BizTalk RFID @ Work.zip" href="http://developers.de/blogs/andreas_erben/Presentations/BizTalkRFID/TechEdEMEADevelopers2007/SBP306_Microsoft%20BizTalk%20RFID%20@%20Work.zip"&gt;SBP306_Microsoft BizTalk RFID @ Work.zip&lt;/a&gt;. This slide deck will also contain additional material not presented in the &amp;quot;Backup slides&amp;quot; section at the end.&lt;/p&gt; &lt;p&gt;Please check out &lt;a href="http://developers.de/blogs/damir_dobric/default.aspx" target="_blank"&gt;Damir&amp;#39;s blog posts&lt;/a&gt; to get the bits we talked about:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/08/tech-session-samples.aspx"&gt;Tech Session Samples&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/07/eventhandler-project-template-for-visual-studio.aspx"&gt;EventHandler Project Template for Visual Studio&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/05/dspi-project-template-for-visual-studio-2008.aspx"&gt;Dspi Project Template for Visual Studio 2008&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/10/13/debugeventhandler-for-biztalk-rfid.aspx"&gt;DebugEventHandler for BizTalk RFID&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/10/29/filewatcher-dspi-provider.aspx"&gt;FileWatcher DSPI Provider&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;(German version)&lt;/p&gt; &lt;p&gt;Heute präsentierten wir über &lt;a href="http://www.microsoft.com/biztalk/technologies/rfid/default.mspx" target="_blank"&gt;Microsoft BizTalk RFID&lt;/a&gt; auf der &lt;a href="http://www.mseventseurope.com/teched/07/developers" target="_blank"&gt;TechEd EMEA Developers Konferenz in Barcelona&lt;/a&gt;. Naturgemäß ist einiger Inhalt ähnlich zu dem, was wir &lt;a href="http://developers.de/blogs/andreas_erben/archive/2007/11/02/presentation-at-pr-228-sentation-auf-der-microsoft-soa-amp-business-process-conference-2007.aspx" target="_blank"&gt;letzte Woche auf der Microsoft SOA&amp;amp;Business Process Management conference in Redmond vortrugen&lt;/a&gt;. Da die TechEd Developer-fokussiert ist, haben wir den Schwerpunkt auf Demos und Programmierung gesetzt. Das Slide-Deck ist hier verfügbar: &lt;a title="SBP306_Microsoft BizTalk RFID @ Work.zip" href="http://developers.de/blogs/andreas_erben/Presentations/BizTalkRFID/TechEdEMEADevelopers2007/SBP306_Microsoft%20BizTalk%20RFID%20@%20Work.zip"&gt;SBP306_Microsoft BizTalk RFID @ Work.zip&lt;/a&gt;. In der PowerPoint-Datei gibt es zusätzliches Material welches wir leider nicht vorstellen konnten im &amp;quot;Backup slides&amp;quot;-Bereich.&lt;/p&gt; &lt;p&gt;&lt;a href="http://developers.de/blogs/damir_dobric/default.aspx" target="_blank"&gt;Damir&lt;/a&gt; hat in verschiedenen Posts die relevanten vorgestellten Beispiele veröffentlicht.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/08/tech-session-samples.aspx"&gt;Tech Session Samples&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/07/eventhandler-project-template-for-visual-studio.aspx"&gt;EventHandler Project Template for Visual Studio&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/11/05/dspi-project-template-for-visual-studio-2008.aspx"&gt;Dspi Project Template for Visual Studio 2008&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/10/13/debugeventhandler-for-biztalk-rfid.aspx"&gt;DebugEventHandler for BizTalk RFID&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/10/29/filewatcher-dspi-provider.aspx"&gt;FileWatcher DSPI Provider&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1657" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Presentation at the / Präsentation auf der Microsoft SOA &amp; Business Process Conference 2007</title><link>http://developers.de/blogs/andreas_erben/archive/2007/11/02/presentation-at-pr-228-sentation-auf-der-microsoft-soa-amp-business-process-conference-2007.aspx</link><pubDate>Fri, 02 Nov 2007 09:18:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1644</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1644</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/11/02/presentation-at-pr-228-sentation-auf-der-microsoft-soa-amp-business-process-conference-2007.aspx#comments</comments><description>&lt;p&gt;(German version below)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developers.de/blogs/damir_dobric/default.aspx" target="_blank"&gt;Damir&lt;/a&gt; and I presented at the &lt;a href="http://www.mssoaandbpconference.com/" target="_blank"&gt;Microsoft SOA &amp;amp; Business Process Conference 2007&lt;/a&gt; at the Microsoft Conference Center in Redmond.&lt;br /&gt;We talked about interesting topics surrounding BizTalk RFID, a completely new component of BizTalk 2006 R2, and a new concept named &amp;quot;Sensor Service Bus&amp;quot;. It was a relatively technical session, but demonstrates business value in an RTI (Reusable Transport Item) scenario.&lt;br /&gt;If you are interested, we invite you to check out our &lt;a href="http://developers.de/files/folders/damir_dobric/entry1642.aspx" target="_blank"&gt;slide-deck&lt;/a&gt;.&lt;br /&gt;We are happy about follow-ups, specifically regarding the &amp;quot;Sensor Service Bus&amp;quot;, please do not hesitate to contact us.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(German version / deutsche version)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://developers.de/blogs/damir_dobric/default.aspx" target="_blank"&gt;Damir&lt;/a&gt; und ich präsentierten auf der &lt;a href="http://www.mssoaandbpconference.com/" target="_blank"&gt;Microsoft SOA &amp;amp; Business Process Conference 2007&lt;/a&gt; im Microsoft Conference Center in Redmond.&lt;/p&gt;
&lt;p&gt;Wir stellten interessante Themen rund um BizTalk RFID, eine komplett neue Komponente von Microsoft BizTalk Server 2006 R2, und um das neue Konzept des &amp;quot;Sensor Service Bus&amp;quot; vor. Es handelt sich um eine relativ technische Session, dennoch wird Mehrwert für Kunden in einem RTI (Reusable Transport Items - wiederverwertbare Transportmaterialien) - Szenario demonstriert.&lt;br /&gt;Wir laden interessierte Leser herzlich ein, unser &lt;a href="http://developers.de/files/folders/damir_dobric/entry1642.aspx" target="_blank"&gt;Slide-Deck&lt;/a&gt; hierzu anzuschauen.&lt;/p&gt;
&lt;p&gt;Wir freuen uns über Folgegespräche, besonders bezogen auf den &amp;quot;Sensor Service Bus&amp;quot;. Zögern Sie nicht, uns zu kontaktieren.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1644" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BPM/default.aspx">BPM</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Let BizTalk RFID handle your EventHandler-component logging / Lassen Sie BizTalk RFID das Logging für Ihre EventHandler-Komponenten übernehmen.</title><link>http://developers.de/blogs/andreas_erben/archive/2007/10/31/let-biztalk-rfid-handle-your-eventhandler-component-logging-lassen-sie-biztalk-rfid-das-logging-f-252-r-ihre-eventhandler-komponenten-252-bernehmen.aspx</link><pubDate>Wed, 31 Oct 2007 10:59:51 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1641</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1641</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/10/31/let-biztalk-rfid-handle-your-eventhandler-component-logging-lassen-sie-biztalk-rfid-das-logging-f-252-r-ihre-eventhandler-komponenten-252-bernehmen.aspx#comments</comments><description>&lt;p&gt;German version below&lt;/p&gt; &lt;p&gt;The Visual Studio project template for BizTalk RFID EventHandlers that is shipped with BizTalk RFID demonstrates nicely, how you should use logging from your EventHandler-components unless you have a really good reason to do otherwise :)&lt;/p&gt; &lt;p&gt;You can use the static method RfidProcessContext.GetLogger to retrieve the logger. Furthermore you can retrieve context specific information about the logger through the RfidProcessContext instance that you receive in the &amp;quot;Init&amp;quot;-Method of your EventHandler component.&lt;/p&gt; &lt;p&gt;The logger exposes quite some methods to log. The most natural to use is &amp;quot;Log&amp;quot; as shown below.&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; InitializeLog(&lt;span style="color:#2b91af;"&gt;RfidProcessContext&lt;/span&gt; container)&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (myLogger != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;string&lt;/span&gt; loggerName = &lt;span style="color:blue;"&gt;this&lt;/span&gt;.GetType().Name;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myLogger = &lt;span style="color:#2b91af;"&gt;RfidProcessContext&lt;/span&gt;.GetLogger(loggerName);&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;//inherit log level from the process&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myLogger.CurrentLevel = &lt;span style="color:#2b91af;"&gt;RfidProcessContext&lt;/span&gt;.GetLogger(container.ProcessName).CurrentLevel;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myLogger.Info(&lt;span style="color:#a31515;"&gt;&amp;quot;starting logging for {0}&amp;quot;&lt;/span&gt;, loggerName);&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;internal&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; LogMessage(&lt;span style="color:blue;"&gt;string&lt;/span&gt; msg, &lt;span style="color:#2b91af;"&gt;Level&lt;/span&gt; msglevel)&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myLogger.Log(msg, msglevel);&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;German version:&lt;/p&gt; &lt;p&gt;The Visual Studio Projekt Template für BizTalk RFID EventHandlers, welches mit BizTalk RFID mitgeliefert wird, zeigt nett, wie man innerhalb eigener EventHandler-Komponenten Logging nutzen sollte, sofern man nicht einen wirklich guten Grund hat, einen anderen Ansatz zu wählen :)&lt;/p&gt; &lt;p&gt;Über die statische Methode RfidProcessContext.GetLogger erhält man den Logger. In der &amp;quot;Init&amp;quot;-Methode der EventHandler-Komponente erhält man ferner eine RfidProcessContext Instanz, welche man verwenden kann, um kontextspezifische Informationen über den Logger zu erhalten.&lt;/p&gt; &lt;p&gt;Der Logger stellt eine stattliche Anzahl von Methoden für Loggingzwecke zur Verfügung, die naheliegendste ist die Methode &amp;quot;Log&amp;quot;, wie oben gezeigt.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1641" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>Refresh your BizTalk RFID documentation! Holen Sie sich die neue BizTalk RFID Dokumentation!</title><link>http://developers.de/blogs/andreas_erben/archive/2007/10/26/refresh-your-biztalk-rfid-documentation-holen-sie-sich-die-neue-biztalk-rfid-dokumentation.aspx</link><pubDate>Fri, 26 Oct 2007 01:25:44 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1640</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1640</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/10/26/refresh-your-biztalk-rfid-documentation-holen-sie-sich-die-neue-biztalk-rfid-dokumentation.aspx#comments</comments><description>&lt;p&gt;(German version below)&lt;/p&gt; &lt;p&gt;As with a recent customer scenario we were wondering what the customer was talking about: Please remember that BizTalk RFID documentation was updated after the launch. You can download it here:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22b2e8d9-8cda-44f8-8f4e-b372c7660989&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=22b2e8d9-8cda-44f8-8f4e-b372c7660989&amp;amp;DisplayLang=en&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;German version:&lt;/p&gt; &lt;p&gt;In einem Kundenszenario wunderten wir uns, über was unser Kunde spricht. Daher möchten wir hier darauf aufmerksam machen, dass die BizTalk RFID Dokumentation kurz NACH dem Launch aktualisiert wurde. Sie können diese hier runterladen:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=22b2e8d9-8cda-44f8-8f4e-b372c7660989&amp;amp;DisplayLang=de" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22b2e8d9-8cda-44f8-8f4e-b372c7660989&amp;amp;DisplayLang=de"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=22b2e8d9-8cda-44f8-8f4e-b372c7660989&amp;amp;DisplayLang=de&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1640" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>BizTalk Rfid EventHandler recap</title><link>http://developers.de/blogs/andreas_erben/archive/2007/10/08/biztalk-rfid-eventhandler-recap.aspx</link><pubDate>Mon, 08 Oct 2007 01:12:27 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1639</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1639</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/10/08/biztalk-rfid-eventhandler-recap.aspx#comments</comments><description>&lt;p&gt;(German version below)&lt;/p&gt; &lt;p&gt;For those who are new to BizTalk RFID or have not used it in a while, here is a recap of the minimal requirements for implementing a EventHandler component.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Inherit from &lt;font face="courier new"&gt;RfidEventHandlerBase&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Parameterless constructor must be accessible&lt;/li&gt; &lt;li&gt;Implement public static method &lt;font face="courier new"&gt;RfidEventHandlerMetadata&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Override method &lt;font face="courier new"&gt;Init&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Mark at least one method with attribute [&lt;font face="courier new"&gt;RfidEventHandlerMethod&lt;/font&gt;] with signature:&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Accepting one parameter of type &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt; or &lt;font face="Courier New"&gt;RfidEventBase&lt;/font&gt;[] (or derived from those)&lt;/li&gt; &lt;li&gt;Returning &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt; or &lt;font face="Courier New"&gt;RfidEventBase&lt;/font&gt;[] (or derived from those) or &lt;font face="courier new"&gt;void&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Return-type void specifies an &lt;font face="courier new"&gt;EventSink&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Typical &lt;font face="courier new"&gt;EventHandler&lt;/font&gt; will use type &lt;font face="courier new"&gt;TagReadEvent&lt;/font&gt; and &lt;font face="courier new"&gt;TagListEvent&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;A minimal EventHandler would look like this:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SensorServices.Rfid;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SensorServices.Rfid.Utilities;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; MinimalEventHandler&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyEventHandler&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;RfidEventHandlerBase&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventHandlerMetadata&lt;/span&gt; GetEventHandlerMetadata(&lt;span style="color:blue;"&gt;bool&lt;/span&gt; vendorextensionalso)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Init(&lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;, &lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;gt; parameters, &lt;span style="color:#2b91af;"&gt;RfidProcessContext&lt;/span&gt; container)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;RfidEventHandlerMethod&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; MyEventHandlerMethod(&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; myEvent;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Alternatively &amp;quot;MyEventHandlerMethod&amp;quot; could look like this:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;or &lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;or&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;or in case you would want to create an EventSink&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;or &lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;In a &amp;quot;real life&amp;quot; scenario you typically would choose &lt;font face="courier new"&gt;TagReadEvent&lt;/font&gt; and &lt;font face="courier new"&gt;TagListEvent&lt;/font&gt; instead of &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;German version:&lt;/p&gt; &lt;p&gt;Für Einsteiger in BizTalk RFID oder Kollegen, welche BizTalk RFID längere Zeit nicht nutzten, hier eine kurze Zusammenfassung der Minimalanforderungen, welche eine EventHandler-Komponente zu erfüllen hat.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Von &lt;font face="courier new"&gt;RfidEventHandlerBase ableiten&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Parameterloser constructor must erreichbar sein&lt;/li&gt; &lt;li&gt;Die public-statische Methode method &lt;font face="courier new"&gt;RfidEventHandlerMetadata muss implementiert werden&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Überschreiben (Override) der &lt;font face="courier new"&gt;Init-Methode &lt;/font&gt;&lt;/li&gt; &lt;li&gt;Mindestens eine Methode muss mit dem Attribut [&lt;font face="courier new"&gt;RfidEventHandlerMethod&lt;/font&gt;] markiert werde und folgende Signatur haben:&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Akzeptieren eines Parameters des Typs &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt; oder &lt;font face="Courier New"&gt;RfidEventBase&lt;/font&gt;[] (oder ein hiervon abgeleiteter Typ)&lt;/li&gt; &lt;li&gt;Zurückgeben von &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt; oder &lt;font face="Courier New"&gt;RfidEventBase&lt;/font&gt;[] (oder ein hiervon abgeleiteter Typ) oder &lt;font face="courier new"&gt;void&lt;/font&gt;&lt;/li&gt; &lt;li&gt;Rückgabe-Typ void spezifiziert, dass ein EventSink vorliegt.&lt;/li&gt; &lt;li&gt;Ein typischer &lt;font face="courier new"&gt;EventHandler&lt;/font&gt; verwendet die Typen &lt;font face="courier new"&gt;TagReadEvent&lt;/font&gt; und &lt;font face="courier new"&gt;TagListEvent&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Ein minimaler EventHandler würde folgendermassen Aussehen:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SensorServices.Rfid;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.SensorServices.Rfid.Utilities;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; MinimalEventHandler&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyEventHandler&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;RfidEventHandlerBase&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventHandlerMetadata&lt;/span&gt; GetEventHandlerMetadata(&lt;span style="color:blue;"&gt;bool&lt;/span&gt; vendorextensionalso)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Init(&lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;, &lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;gt; parameters, &lt;span style="color:#2b91af;"&gt;RfidProcessContext&lt;/span&gt; container)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color:#2b91af;"&gt;RfidEventHandlerMethod&lt;/span&gt;]&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; MyEventHandlerMethod(&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;return&lt;/span&gt; myEvent;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;Alternativ könnte &amp;quot;MyEventHandlerMethod&amp;quot; so aussehen:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;oder&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;oder&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;oder im Falle man einen EventSink erzeugen möchte:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;oder&lt;/p&gt; &lt;table cellspacing="0" cellpadding="0"&gt;  &lt;tr&gt; &lt;td&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;div style="font-size:10pt;background:#ffffc0;color:black;font-family:courier new;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; MyEventHandlerMethod(&lt;span style="color:#2b91af;"&gt;RfidEventBase[]&lt;/span&gt; myEvent)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;In einem realen Szenario würde man typischerweise &lt;font face="courier new"&gt;TagReadEvent&lt;/font&gt; und &lt;font face="courier new"&gt;TagListEvent&lt;/font&gt; anstatt &lt;font face="courier new"&gt;RfidEventBase&lt;/font&gt; wählen.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1639" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/.NET/default.aspx">.NET</category></item><item><title>BizTalk RFID integration too slow? BizTalk RFID Integration zu langsam?</title><link>http://developers.de/blogs/andreas_erben/archive/2007/05/30/BizTalk-RFID-integration-too-slow_3F00_-BizTalk-RFID-Integration-zu-langsam_3F00_.aspx</link><pubDate>Wed, 30 May 2007 20:40:53 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1349</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1349</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/05/30/BizTalk-RFID-integration-too-slow_3F00_-BizTalk-RFID-Integration-zu-langsam_3F00_.aspx#comments</comments><description>&lt;p&gt;(deutsche Version weiter unten)&lt;br&gt;&lt;/p&gt; &lt;h1&gt;BizTalk RFID integration too slow?&lt;/h1&gt; &lt;p&gt;I heard discussions that BizTalk RFID is too slow when integrating with "regular" BizTalk.&lt;br&gt;It is true that when you use only "out-of-the-box" components, you might end up building a solution like that:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;transactional BizTalk RFID process&lt;/li&gt; &lt;li&gt;BizTalk RFID SQL Server Event Sink&lt;/li&gt; &lt;li&gt;BizTalk SQL Server Adapter&lt;/li&gt; &lt;li&gt;... regular BizTalk Server processing&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Because of several reasons this is a "slow" approach:&amp;nbsp;Biztalk RFID works "transactional", adding overhead. BizTalk RFID&amp;nbsp;pushes data to the database. Then the BizTalk SQL Server Adapter needs to poll the database to retrieve the data, depending on the polling interval.&lt;/p&gt; &lt;p&gt;If speed is a concern, then consider carefully if you need transactional integrity or reliability at the process level. The "express" option can speed the process up with the risk of&amp;nbsp;missing some events. Next, it is not a good idea to have a coupling between BizTalk RFID and regular BizTalk that is dependend on polling. A better approach is to use&amp;nbsp;a BizTalk WCF adapter and write your own event handler that posts to that adapter. This means that BizTalk can "kick in" immediately when the message gets sent to BizTalk. Couple that with approaches that avoid the message box and the speed issues should go away while leveraging the BizTalk platform.&lt;/p&gt; &lt;p&gt;The "fastest" way of course would be to implement the system connectivity directly&amp;nbsp;in the event handler. However, try to keep the event handler as lightweight as possible and rather ship the processing out to another box, interfacing in a way that allows load balancing. Here, again WCF is a good guess since it allows you to retain most of the loose coupling you might need.&lt;/p&gt; &lt;p&gt;In my opinion WCF is the most practical approach to connect systems with BizTalk RFID.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;BizTalk RFID Integration zu langsam?&lt;/h1&gt; &lt;p&gt;Ich bekam einige Diskussionen mit, dass die Integration von BizTalk RFID mit der normalen BizTalk Infrastruktur zu langsam wäre. Wenn man nur die mitgelieferten Standardkomponenten nutzt, kann es tatsächlich passieren, dass man zu einer Lösung kommt, die ungefähr wie folgt aussieht:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;transaktionaler BizTalk RFID Prozess&lt;/li&gt; &lt;li&gt;BizTalk RFID SQL Server Event Sink&lt;/li&gt; &lt;li&gt;BizTalk SQL Server Adapter&lt;/li&gt; &lt;li&gt;... normale BizTalk Server Verarbeitung&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Aus verschiedenen Gründen ist das ein "langsamer" Lösungsansatz: BizTalk RFID arbeitet hier "transaktional", was einiges an Overhead bedeutet. Dann&amp;nbsp;schreibt BizTalk RFID die Daten in eine Datenbanktabelle. Der BizTalk SQL Server Adapter muss diese Tabelle regelmäßig abfragen, was dazu führt, dass die Geschwindigkeit wieder vom "Polling Intervall" abhängt.&lt;/p&gt; &lt;p&gt;Wenn Geschwindigkeit von Bedeutung ist, sollte man hingegen genau prüfen, ob transaktionale Integrität oder "Reliability" wirklich auf der Prozessebene gefordert sind. Die "Express"-Option kann den Prozess beschleunigen, birgt aber das Risiko, dass Events verloren gehen. Der nächste Punkt ist, dass eine Kopplugn zwischen BizTalk RFID und dem "normalen" BizTalk, welche auf einem Polling-Mechanismus basiert, keine sonderliche gute Idee ist. Ein besser geeigneter Ansatz ist, den BizTalk WCF Adapter zu verwenden und einen eigenen Event Handler zu implementieren, der an diesen Adapter sendet. Dies führt dazu, dass BizTalk sofort mit der Verarbeitung anfangen kann, wenn die Nachricht an Biztalk gesendet wird. Wenn man dies mit Ansätzen verbindet, welche die Verwendung der Message Box vermeiden, kann man Geschwindigkeitsprobleme umgehen und dennoch die Vorteile der BizTalk Plattform ausnutzen.&lt;/p&gt; &lt;p&gt;Der "schnellste" Weg wäre natürlich, die Systemanbindung direkt innerhalb des Event Handlers zu implementieren. Dieser Event Handler soll aber so leichtgewichtig wie möglich bleiben und eher die Verarbeitung an ein anderes System auslagern, wobei das andere System in einer Art und Weise verbunden werden sollte, welche eine Lastverteilung ermöglicht. Auch hier&amp;nbsp;bleibt WCF ein guter Ansatz, da es erlaubt eine möglichst lose Kopplung beizubehalten.&lt;/p&gt; &lt;p&gt;Fazit: Nach meiner Meinung ist WCF der praktikabelste Ansatz, um Systeme mit BizTalk RFID zu verbinden.&lt;/p&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1349" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/WCF/default.aspx">WCF</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item><item><title>Erster Blick auf Microsoft BizTalk RFID</title><link>http://developers.de/blogs/andreas_erben/archive/2007/04/09/Erster-Blick-auf-Microsoft-BizTalk-RFID.aspx</link><pubDate>Mon, 09 Apr 2007 14:27:00 GMT</pubDate><guid isPermaLink="false">7e491611-45ad-4dae-a68f-c4cb64439510:1240</guid><dc:creator>Andreas Erben</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://developers.de/blogs/andreas_erben/rsscomments.aspx?PostID=1240</wfw:commentRss><comments>http://developers.de/blogs/andreas_erben/archive/2007/04/09/Erster-Blick-auf-Microsoft-BizTalk-RFID.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-size:12pt;font-family:Times New Roman;"&gt;&lt;strong&gt;This blog-post is based on the English-language post &amp;quot;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/03/31/First-look-at-Microsoft-BizTalk-RFID.aspx"&gt;First look at Microsoft BizTalk RFID&lt;/a&gt;&amp;quot; found in the blog of &lt;a href="http://developers.de/blogs/damir_dobric/"&gt;Damir Dobric&lt;/a&gt;. There is no new information in the German language version.&lt;br /&gt;Dieser Blog-Post basiert auf dem englischsprachigen Post &amp;quot;&lt;a href="http://developers.de/blogs/damir_dobric/archive/2007/03/31/First-look-at-Microsoft-BizTalk-RFID.aspx"&gt;First look at Microsoft BizTalk RFID&lt;/a&gt;&amp;quot; aus dem Blog von &lt;a href="http://developers.de/blogs/damir_dobric/"&gt;Damir Dobric&lt;/a&gt;. Er enth&amp;auml;lt keine grunds&amp;auml;tzlich neue Aussagen oder Informationen gegen&amp;uuml;ber der englischsprachigen Version. &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:8pt;color:black;font-family:Verdana;"&gt;Microsoft BizTalk RFID ist eine offene Plattform, welche es Herstellern m&amp;ouml;glich macht, auf Microsoft Technologien basierende RFID L&amp;ouml;sungen zu entwickeln. Im Kern ist es ein Satz von APIs, welche auf dem .NET Framework 2.0 aufsetzen, die es erlauben, Anwendungen durch sogenannte Eventhandler zu erstellen. Generell bietet das Microsoft RFID Services Framework einen recht m&amp;auml;chtigen Funktionssatz in folgenden Bereichen an: &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:8pt;color:black;font-family:Verdana;"&gt;Synchrone Kommunikation mit Endger&amp;auml;ten (devices) &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:8pt;color:black;font-family:Verdana;"&gt;Asynchrone Eventverarbeitung &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:8pt;color:black;font-family:Verdana;"&gt;Management Funktionalit&amp;auml;ten &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:12pt;font-family:Times New Roman;"&gt;&lt;strong&gt;API und Befehlsmodell (Command Model) &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Das &lt;strong&gt;synchrone&lt;/strong&gt; Befehlsmodel ist dadurch gekennzeichnet, dass ein Aufrufer einen Aufruf (Request) &amp;uuml;ber BizTalk RFID Services Framework an ein RFID-Endger&amp;auml;t (device) schickt und solange wartet, bis er eine Antwort durch den RFID service erh&amp;auml;lt. model is when the caller issues a request to BizTalk RFID Services Framework &lt;br /&gt;and waits until it receives a response from the RFID service. Ein solches Endger&amp;auml;t kann beispielsweise ein RFID Reader (RFID-Leseger&amp;auml;t) oder ein RFID Printer (RFID Drucker) sein. Mit RFID Drucker k&amp;ouml;nnen Labels, also Etiketten mit RFID-Tag, bedrucken und den RFID-Tag gegebenenfalls mit spezifischen Daten f&amp;uuml;llen. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Im&lt;strong&gt; asynchronen &lt;/strong&gt;Befehlsmodell schicken RFID Ger&amp;auml;te Benachrichtigungen an das BizTalk RFID Services Framework, welches dann dies als Ereignisse (Events) verarbeitet und an passende RFID Prozess-Pipelines weiterleitet. Dies ist das am h&amp;auml;ufigsten verwendete Muster, welches man in RFID-Anwendungen, die auf dieser Plattform basieren, finden wird. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:10pt;"&gt;Das &lt;strong&gt;Management&lt;/strong&gt; Befehlsmodell beinhaltete administrative Ereignisse, z. B. &amp;uuml;ber das Versagen von spezifischen Endger&amp;auml;ten oder &amp;uuml;ber den Ausfall der Stromversorgung der Endger&amp;auml;te, oder wenn ein Prozess gestoppt wird. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:12pt;"&gt;&lt;strong&gt;Abbildung von Prozessen Dealing with Processes&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:10pt;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Das RFID services Framework ist im Namespace &amp;quot;Microsoft.SensorServices.RFID&amp;quot; implementiert, welches au seiner reihe von managed (.NET 2.0) Assemblies besteht. Das Framework selbst l&amp;auml;uft in einem Windows-Service namens &lt;em&gt;BizTalkRfid&lt;/em&gt;, der im Prozess &lt;em&gt;RfidServices.exe&lt;/em&gt; gehostet wird. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;&lt;br /&gt;RFID Dienste werden in durch die durch die unten abgebildete RFID Management Konsole verwaltet: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;img align="middle" alt="BizTalk RFID Management Konsole" height="446" src="http://developers.de/photos/storage/1000.14.1226.RFID%20Console.jpg" style="width:829px;height:446px;" title="BizTalk RFID Management Konsole" width="829" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Alle Einstellungen, welche in dieser Konsole getroffen werden k&amp;ouml;nnen, sind in einer Datenbank gespeichert. Diese Datenbank hei&amp;szlig;t per Default &amp;quot;RFIDSTORE&amp;quot;. Die Management Konsole steuert RFID relevante Gesch&amp;auml;ftsprozesse. Im oberen Bild sind drei Gesch&amp;auml;ftsprozesse aufgef&amp;uuml;hrt: S&lt;em&gt;cannenEingang, TestProcess&lt;/em&gt; and &lt;em&gt;xasd&lt;/em&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Wenn man mit RFID Diensten zu tun hat, gibt es einige wichtige Entit&amp;auml;ten, welche im folgenden erkl&amp;auml;rt werden: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;&lt;strong&gt;Device (Endger&amp;auml;t)&lt;/strong&gt;&lt;br /&gt;Die erste wichtige Entit&amp;auml;t ist das RFID Device, also das physische Endger&amp;auml;t. Dies kann zum Beispiel ein RFID-Reader sein. Um dieses Ger&amp;auml;t zu nutzen, muss ein Provider f&amp;uuml;r das Ger&amp;auml;t installiert sein. Dieser RFID Device Provider ist ein gemanagter Treiber und implementiert die ger&amp;auml;tespezifische Kommunikation ab. Durch ihn werden Device Management, sowie das Lesen oder Schreiben von Daten in allen drei genannten Befehlsmodellen abgebildet. Die Architektur des Frameworks erlaubt &amp;uuml;brigens, auch Provider zu implementieren, welche nicht nur mit RFID Ger&amp;auml;ten umgehen, sondern mit beliebigen Arten von Sensoren. Die Plattform bietet nach unserer Meinung viel mehr, als nur RFID spezifische Funktionalit&amp;auml;ten. Der Namespace der Assembly &amp;quot;Microsoft.SensorServices.RFID&amp;quot; deutet ebenfalls in die Richtung, dass man weiter denkt, als nur RFID-spezifische Funktionalit&amp;auml;ten auf dieser Infrastruktur aufzusetzen. Wir experimentierten bereits mit verschiedenen anderen Datenquellen wie Ultraschalldaten, File IO-Ereignissen usw. Wenn man in der Lage ist, einen passenden funktionierenden Provider zu erstellen, gibt es keine technische Limitierung, irgendeine andere Art von &amp;quot;Sensorik&amp;quot; in das Framework einzubinden. Es gibt noch eine Unterscheidung zwischen logischen und physischen Devices, auf welche hier aber nicht eingegangen wird. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;&lt;strong&gt;Component (Komponente)&lt;/strong&gt;&lt;br /&gt;Eine Komponente ist eine .NET Assembly, welches ein spezifisches Interface implementiert und in einer Kette von Eventhandlern installiert wird. Die vom Ger&amp;auml;t gelesenen Daten werden asynchron zum ersten Eventhandler geschickt. Nach der Verarbeitung kann der Eventhandler die Daten unver&amp;auml;ndert oder manipuliert an den n&amp;auml;chsten Eventhandler in der Kette weitersenden. Der letzte Eventhandler im Stack ist die sogenannte Eventsenke (Event Sink). BizTalk RFID wird mit einer SQL-Eventsenke ausgeliefert, welche die empfangenen Daten in einer SQL Server Datenbank speichert. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;&lt;strong&gt;Process (Prozess)&lt;br /&gt;&lt;/strong&gt;Jeder Businessprozess ist eine logische Entit&amp;auml;t, welche eine Menge von Ger&amp;auml;ten (devices) oder Device-Gruppen mit einem Satz von Komponenten verbindet. Nehmen wir zum Beispiel an, dass es zwei Ger&amp;auml;te D1 und D2 gibt, welche als Gruppe G1 zusammengefasst sind und nehmen wir an, dass es zwei Komponenten (Eventhandler) EH1 und EH2 gibt. Der erste Handler EH1 k&amp;ouml;nnte verwendet werden, um Dubletten herauszufiltern und der zweite Handler EH2 k&amp;ouml;nnte die SQL-Eventsenke sein, welche einfach Daten in die Datenbank schreibt. Man kann nun einen Prozess P1 definieren, welcher die Device-Gruppe G1 mit den Komponenten (Eventhandlern) EH1 und EH2 verbindet. Zur Veranschaulichung: Der Prozess P1 ist ein Gesch&amp;auml;ftsprozess welcher Daten von den Readern liest, welche sich hinter den Devices D1 und D2 verbergen, dann zuerst die doppelten, redundanten Tag-Leseereignisse ausfiltert und diese zur sp&amp;auml;teren Auswertung in eine Datenbank schreibt. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Das ist in K&amp;uuml;rze die Kernidee, welche hinter der RFID Services Plattform steckt. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Wir h&amp;ouml;ren oft die Frage: Was hat die Microsoft RFID Services Plattform mit BizTalk Server zu tun? &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Die Antwort ist zweigeteilt:&lt;br /&gt;Technisch gesehen derzeit nichts. Aus einer Marketing und Produktsicht kann es aber Sinn machen, dies zusammenzubundeln, was in diesem Post nicht weiter diskutiert wird.&lt;br /&gt;Aber man darf in diesem Kontext nicht vergessen, dass BizTalk RFID auf einem technisch sehr aktuellem Stand ist, w&amp;auml;hrend die BizTalk Server Engine und Infrastruktur eine seit mehreren Jahren gewachsene Struktur darstellt. Eine st&amp;auml;rkere &amp;quot;technische&amp;quot; Integration h&amp;auml;tte entweder erfordert, gro&amp;szlig;e Teile des BizTalk Server umzubauen, oder h&amp;auml;tte m&amp;ouml;glicherweise dazu gef&amp;uuml;hrt, dass BizTalk RFID nicht konsequent auf einem technisch aktuellem Framework (.NET 2.0) aufsetzen kann. Es gibt, wie wir in sp&amp;auml;teren Posts sehen werden, M&amp;ouml;glichkeiten, die Integration mit dem &amp;quot;Rest&amp;quot; des Produktes BizTalk Server mit relativ geringem Aufwand stattfinden zu lassen. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt;font-family:Times New Roman;"&gt;Wir hoffen, dass dieses Post hilft, die (hier stark vereinfachten) Grundlagen der Microsoft RFID Plattform zu verstehen.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://developers.de/aggbug.aspx?PostID=1240" width="1" height="1"&gt;</description><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+RFID/default.aspx">BizTalk RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/RFID/default.aspx">RFID</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+2006+R2/default.aspx">BizTalk 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk/default.aspx">BizTalk</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006/default.aspx">BizTalk Server 2006</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server+2006+R2/default.aspx">BizTalk Server 2006 R2</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/German/default.aspx">German</category><category domain="http://developers.de/blogs/andreas_erben/archive/tags/deutsch/default.aspx">deutsch</category></item></channel></rss>