<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>EDA</title>
        <link>http://www.shanghai-software.com/blog/category/6.aspx</link>
        <description>EDA</description>
        <language>en-AU</language>
        <copyright>Ben Kloosterman</copyright>
        <generator>Subtext Version 2.1.0.5</generator>
        <item>
            <title>WS-Eventing </title>
            <link>http://www.shanghai-software.com/blog/archive/2009/08/06/ws-eventing.aspx</link>
            <description>WOW  , I got a very polite response from an issue I reported ( see earlier article in Blog) with WS-Eventing. I wish work related bugs reports were handled so nicely. &lt;br /&gt;
&lt;br /&gt;
I do disagree however it would have been nice to at least add this as Optional to the standard , though hope is not lost for a standard fast WS-Eventing as they may introduce it for WS-Topics. All it needs is a comment and then vendors will implement it as at the moment they do their own thing. &lt;br /&gt;
&lt;br /&gt;
Here is the transcript. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;meta content="text/html; charset=utf-8" http-equiv="Content-Type" /&gt;
&lt;meta content="Word.Document" name="ProgId" /&gt;
&lt;meta content="Microsoft Word 12" name="Generator" /&gt;
&lt;meta content="Microsoft Word 12" name="Originator" /&gt;
&lt;link href="file:///C:\Users\ben\AppData\Local\Temp\msohtmlclip1\01\clip_filelist.xml" rel="File-List" /&gt;
&lt;link href="file:///C:\Users\ben\AppData\Local\Temp\msohtmlclip1\01\clip_themedata.thmx" rel="themeData" /&gt;
&lt;link href="file:///C:\Users\ben\AppData\Local\Temp\msohtmlclip1\01\clip_colorschememapping.xml" rel="colorSchemeMapping" /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"&gt;
&lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" /&gt;
&lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 1" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 2" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 3" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 4" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 5" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 6" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 7" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 8" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 9" /&gt;
&lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /&gt;
&lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" /&gt;
&lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /&gt;
&lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /&gt;
&lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" /&gt;
&lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /&gt;
&lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /&gt;
&lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /&gt;
&lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" /&gt;
&lt;w:LsdException Locked="false" Priority="37" Name="Bibliography" /&gt;
&lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /&gt;
&lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style type="text/css"&gt;&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
a:link, span.MsoHyperlink
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
pre
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"HTML Preformatted";
	font-family:"Courier New";
	mso-ascii-font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:"Courier New";
	mso-bidi-font-family:"Courier New";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Ben,&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;At our F2F meeting this week we had a chance to discuss this issue. Basically there are several ways to simplify subscriptions, which can remove some extra processing such as XPath matching. One I know well is WS-Topics and Gilbert Pilz proposed a simpler approach in Comment #2 against the Issue: &lt;a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6917"&gt;http://www.w3.org/Bugs/Public/show_bug.cgi?id=6917&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;In the end the WG decided to close this issue with no action, meaning we will not specify a specific simplified format for subscriptions. However, there are places in the subscription where WS-Topics could be used and some implementations might support them easily. Likewise other strategies, such as Gil's approach would also work. Therefore we will put discussion and advice into out primer to help people exploit this optimization strategy.&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Lastly, we did look at how WS-Topics might be normatively referenced in WS-Eventing, but the WS-Topics spec was written as if it was meant to be used only with WS-Notification. Therefore, we felt that normative references to WS-Topics would cause more confusion than necessary. However, as one of the WS-Topics WG members, I believe WS-Topics will easily compose with WS-Eventing.&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Thanks you for you contribution and let me or the other members of the WG know if there is anything else we can do for you.&lt;o:p /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id="body" style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: pre-wrap; word-wrap: break-word; z-index: auto;"&gt;&lt;span style="color: black;"&gt;This is probably too late but i posted this on my blog&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;(&lt;a style="" href="../../../../archive/2009/02/15/ws-eventing-flaw.a"&gt;&lt;span style="color: rgb(0, 0, 238);"&gt;http://www.shanghai-software.com/blog/archive/2009/02/15/ws-eventing-flaw.a&lt;/span&gt;&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;spx) and someone said i should sent it to this list.&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Just doing some work on eventing and having a look at a number of&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;implementations there is a pretty annoying feature / flaw .&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;By default the only filter supported is Xpath and the specification&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;specifically states that&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;This specification does not constrain notifications because any message MAY&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;be a notification. from &lt;a style="" href="http://www.w3.org/Submission/WS-Eventing/"&gt;&lt;span style="color: rgb(0, 0, 238);"&gt;http://www.w3.org/Submission/WS-Eventing/&lt;/span&gt;&lt;/a&gt;.&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&amp;lt;javascript:void(0);/*1234671797014*/&amp;gt; &lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;I have no issues for this - sometimes you want any message , however this is&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;a very expensive way to do this especially when you have a large amount of&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;events with different topics all coming through a single&lt;span style=""&gt;  &lt;/span&gt;notification&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;service ( load balanced) .&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;All the implementations i have seen ( including the sample in the&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;specification ) introduce the concept of a topic in the header to route the&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;data. &lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;eg&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Sample in spec uses a header&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&amp;lt;ow:EventTopics&amp;gt;weather.report weather.storms&amp;lt;/ow:EventTopics&amp;gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;and a custom filter&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt; &amp;lt;wse:Filter xmlns:ow="&lt;a style="" href="http://www.example.org/oceanwatch"&gt;&lt;span style="color: rgb(0, 0, 238);"&gt;http://www.example.org/oceanwatch&lt;/span&gt;&lt;/a&gt;"&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;(43)&lt;span style=""&gt;           &lt;/span&gt;Dialect="&lt;a style="" href="http://www.example.org/topicFilter"&gt;&lt;span style="color: rgb(0, 0, 238);"&gt;http://www.example.org/topicFilter&lt;/span&gt;&lt;/a&gt;" &amp;gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;(44)&lt;span style=""&gt;         &lt;/span&gt;weather.storms&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;(45)&lt;span style=""&gt;       &lt;/span&gt;&amp;lt;/wse:Filter&amp;gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Look&lt;span style=""&gt;  &lt;/span&gt;at some implementations&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;MSE ( Managed Service Engine from Microsoft)&lt;span style=""&gt;  &lt;/span&gt;,Uses a custom filter&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;a style="" href="http://services.microsoft.com/2006-07/ServicePlatform/MSE6/Eventing/EventFil"&gt;&lt;span style="color: rgb(0, 0, 238);"&gt;http://services.microsoft.com/2006-07/ServicePlatform/MSE6/Eventing/EventFil&lt;/span&gt;&lt;/a&gt;&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;ter/&lt;span style=""&gt;    &lt;/span&gt;which includes topics in the body of their custom event message.&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Roman kiss implementation includes a string topic in his subscribe message&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;and has one topic per notification end point.&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;The end result is everyone will build their own system and filters.&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Basically all the authors recognize that&lt;span style=""&gt;  &lt;/span&gt;the default spec will have&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;performance issues and can be easily optimized ; &lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;So why didn't the spec include an optional header on notifications and a&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;simple canonical topic/subtopic&lt;span style=""&gt;  &lt;/span&gt;filter ? This way the majority of eventing&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;systems can talk to each other without resorting to expensive XPath queries&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;.. Take the weather example would you like to handle weather messages from a&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;million subscribers using Xpath?&lt;span style=""&gt;  &lt;/span&gt;With such a filter you can quickly route&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;via the topic in the header to different eventing services ( or servers)&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;and then handle an xpath body query..&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Regards,&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background: white none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: black;"&gt;Ben .&lt;o:p /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src="http://www.shanghai-software.com/blog/aggbug/47.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/08/06/ws-eventing.aspx</guid>
            <pubDate>Thu, 06 Aug 2009 15:59:20 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/47.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/08/06/ws-eventing.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/47.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/47.aspx</trackback:ping>
        </item>
        <item>
            <title>Can EDA SOA eventing systems be fast</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx</link>
            <description>A lot of  traditional eventing systems  use C++  and are dubious about whether the Lego block style SOA can provide sufficient performance. &lt;br /&gt;
&lt;br /&gt;
Again it boils down to design &lt;br /&gt;
&lt;br /&gt;
 WCF  C# can process  over 22000 small messeges per second on an average 2 year old quad server.   http://msdn.microsoft.com/en-us/library/bb310550.aspx#wcfperform_topic4.&lt;br /&gt;
&lt;br /&gt;
This is more than sufficient for most applications especially as with eventing systems you can add servers relatively simply , the algorithms which manage  the propogation of  subscriptions and the path are far more important . ( Distributed Event-Based Systems  (Muhl , Fiege and Pietzuch) is a good book which covers the theory here .&lt;br /&gt;
&lt;br /&gt;
The other big issue often sited is latency but EDAM ( which uses &lt;a title="WCF" href="http://www.shanghai-software.com/blog/WCF" rel=""&gt;Windows Communication Foundation&lt;/a&gt; ) has sometimes achieved cross machine rates of 3ms again the design is critical here if you pass through 6 nodes each adding 20 ms  it can become  quickly unacceptable.  Often people will use all the features of SOA such as queues , transactions , encryption etc  yet wouldn't implement these on a typical C++  system  these can be killers , don't use them unless you HAVE to and since most C++ eventing systems dont you better have a good reason. . &lt;br /&gt;
&lt;br /&gt;
I would also add Network latency between companies , cities  or even countries add far more significant delays.  With human reaction being about 120ms (At best)  the small delays these services add are insignificant. &lt;br /&gt;
&lt;br /&gt;
The end result is you CAN build lego block style SOA , high speed eventing systems  with a good a design and gain all the SOA benefits .&lt;br /&gt;
&lt;br /&gt;
You could argue computer trading systems require better times but again i think the small differences you will get ( single figure ms at best ) are more than outweighed by a flexible design.  eg  instead of running the trades on the clients premises , critical trades can be uploaded to a providers machine near to the exchange this is often hard due to inflexible implementations .  A strong and flexible design means more optomization can be made more easily eg message priritization , packing multiple data messeges for efficiency etc &lt;br /&gt;
&lt;br /&gt;
Like premature code optomization  the desire to be as fast as possible does not outweigh good progamming algorithms and design.  &lt;br /&gt;
&lt;br /&gt;
Ok i said it enough a flexible and strong design is far more important than premature optomization and making things as fast as possible, &lt;img src="http://www.shanghai-software.com/blog/aggbug/44.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx</guid>
            <pubDate>Fri, 10 Jul 2009 03:01:03 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/44.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/07/10/can-eda-soa-eventing-systems-be-fast.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/44.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/44.aspx</trackback:ping>
        </item>
        <item>
            <title>EDAM -What is EDAM trying to do.</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/04/05/40.aspx</link>
            <description>Just been working on EDAM ( my event driven architecture product) and wanted to note down and restate the long term goal  (in addition to being a great eventing system). &lt;br /&gt;
&lt;br /&gt;
The goal of EDAM is for people to be able to quickly add programs to the enterprise and to provide a fast event driven service to make this happen . Note i avoided the term framework  as i want this to be usable with no dll linked though we will provide one later to make it even easier. &lt;br /&gt;
&lt;br /&gt;
Remember when we used UNIX commands such as &lt;br /&gt;
&lt;br /&gt;
cat file* | tr -cs '[A-Z][a-z]' '\012' | sort | uniq -c | sort -nr | more&lt;br /&gt;
&lt;br /&gt;
these are incredibly powerful for experienced users and i wanted something similar so you could write enterprise applications and redirect them FAST.  &lt;br /&gt;
&lt;br /&gt;
What i want to do is something like &lt;br /&gt;
&lt;br /&gt;
string  ProcessOrder(Order order) { return order.ToXml())   &amp;lt;OrderService.NewOrderEvent("/orders/order[Customer=xyz]"   &amp;gt; LogEvent(Cat = "Check For Orders from customer xyz" , result;  &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
string  ProcessOrder(Order order) { if ( order.Amount&amp;gt; 1000000) return order.ToXml(); else return null; )   &amp;lt;[OrderService].NewOrderEvent("/orders/order[Customer=xyz]"   &amp;gt; [LogService].Log(Cat = "Check For Big Orders from customer xyz" , result;  &amp;gt; [EmailService].Email(result , "LargeOrder receviec" ,"person who wanted to know"@nobody.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basically take the input from a specified event and send it to a dynamically  service. The code would be compiled and loaded into a DB , a dynamic host would automatically load this service and keep it running,  &lt;br /&gt;
&lt;br /&gt;
With powershell ( and UNIX) adminstrators have been using this power for a long time  ( more for reviewing data then events though )  extending it to business events is something else.  &lt;span style="font-weight: bold;"&gt;It could &lt;/span&gt;lead to much quicker small applications being developed , the above example would normally require an application to be written but with some Enterprise infrastructure things could be written really quickly,  This is not really posisble with tradition systems as DB access is normally tightly controlled ( for good reason) and there are no events to trigger things and polling would be inefficient . Note EDA does need protection against a loop &lt;br /&gt;
&lt;br /&gt;
This would be bad.&lt;br /&gt;
&lt;br /&gt;
Order ProcessOrder(Order order) { return order)   &amp;lt;OrderService.NewOrderEvent("/orders/order[Customer=xyz]"   &amp;gt; OrderService.AddOrder(result); &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Filter and Replace &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In many cases i thought the flexability of EDA can be very usefull in critical systems such as defence ,finance markets etc  , remember  in the first gulf war the Ewacs ( control planes for the whole air war)  shut down because they were overload. They had people look at the bugs and uploaded a new version the next day ,but this sort of thing can cost the lives of many people . &lt;br /&gt;
&lt;br /&gt;
Even if it is some sort of fundamental problem like the hardware cant handle the load ,with EDA i could have build a simple service that subscribed to requests from the first service and have all the systems point to the new service.   This service would consist entirely of an xpath expression which would eliminate excess data by distance or some other dependency. &lt;br /&gt;
&lt;br /&gt;
So we need to change the current event to move to a different port and put a new service which filters events to a new port. &lt;br /&gt;
 &lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Filter  and Extend&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Similarly to the  above if you had extra computers and were overloaded you could add more with no impact on the system just some reconfiguration&lt;img src="http://www.shanghai-software.com/blog/aggbug/40.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/04/05/40.aspx</guid>
            <pubDate>Sun, 05 Apr 2009 09:16:31 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/40.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/04/05/40.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/40.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/40.aspx</trackback:ping>
        </item>
        <item>
            <title>Why should you use an Event Driven Architecture (EDA)?</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/03/27/why-should-you-use-an-event-driven-architecture-eda.aspx</link>
            <description>There is a lot of documentation on EDA and people working with SOA and call backs will naturally gravitate to EDA , but i have often wanted a simple reason why.  Here i will &lt;span style="font-style: italic;"&gt;attempt&lt;/span&gt; this and focus on service based EDA's. &lt;br /&gt;
&lt;br /&gt;
1.  It Naturally mirrors organisations.&lt;br /&gt;
&lt;br /&gt;
High level EDA events are business events. With EDA anybody may receive these events and act accordingly. This means extending events to new applications is a trivial excercise. &lt;br /&gt;
&lt;br /&gt;
2. Low integration costs&lt;br /&gt;
&lt;br /&gt;
Integration expenses are massive, EDA makes it really easy for systems to communicate even more so than SOA's which require writing a system to interact with the appropriate services.  With an EDA an admin can add a subscription and the appropriate messages will be sent to new system&lt;br /&gt;
&lt;br /&gt;
3. Lower hardware costs &lt;br /&gt;
&lt;br /&gt;
Sure machines are cheap but for large scale systems ( where EDA's shine) going from 500 servers to 10,000 servers is a big hit.  &lt;br /&gt;
&lt;br /&gt;
4. It is simpler.  Information which EDA's are good at often have to be polled . &lt;br /&gt;
&lt;br /&gt;
EDAs are often used for live events , when something happened with simple SOA services or with Databases this requires frequent polling.  Polling results in significant overheads and thare a few issues to ensure you dont get duplicate data.&lt;br /&gt;
&lt;br /&gt;
5. Information is live.  Anybody including clients can get information as soon as the company receives it . eg Bank transfers , courier scannings,share quotes  etc&lt;br /&gt;
&lt;br /&gt;
6. It brings organisations and their IT systems together.&lt;br /&gt;
&lt;br /&gt;
The easier integration and the capturing of real business events mean other IT teams are more likely to use them , this results in less duplication and technology islands. ( Though see below) &lt;br /&gt;
&lt;br /&gt;
7. It allows groups to be autonomous and still work with enterprise events. &lt;br /&gt;
&lt;br /&gt;
One of the big issues with SOA /large DB systems is its big centralised IT.  You sometimes need to meet standards etc . These standards are required since a single consumer can bring down the whole DB , With EDA down stream system systems provided little or no impact and hence can go unrestricted.  This allows quick and dirty systems needed for a new startup within the company to see if it is viable etc.  Futhermore you have a lot less restriction on the data you get , you are not required to use certain Service operations or stored procs. You can use any Xpath query and have the information you need in real time and can then store and use it yourself. &lt;br /&gt;
&lt;br /&gt;
8. Strong EDA's can result in smaller duplicated Data stores. &lt;br /&gt;
&lt;br /&gt;
In small organizations EDA will result in single data storage , in larger ones duplicate data will normally evolve , these will not have the same information but there will be overlap.  This is good as it allows the appropriate  business to manage the data.&lt;br /&gt;
&lt;br /&gt;
9. Creating a good EDA can be easier to implement than good SOA's.&lt;br /&gt;
&lt;br /&gt;
Creating a good SOA is hard , you need to consider Data ( multiple service access ?? ) , orchestration , polling ,Service Bus , Data ware housing etc &lt;br /&gt;
&lt;br /&gt;
With an EDA based SOA the focus is on Events and hence has a looser policy on SOA's , things like Data storage are up to the individual team who may or may nor share.&lt;br /&gt;
&lt;br style="font-weight: bold;" /&gt;
&lt;span style="font-weight: bold;"&gt;The key point here is the focus is and remains on the important part of the architecture the actual business events.&lt;/span&gt; SOA systems tend to wonder as vendors write many pages on their products and people spend a lot of time learning them and debating technical issues. &lt;br /&gt;
&lt;br /&gt;
10. Completely loosely coupled&lt;br /&gt;
&lt;br /&gt;
The sender knows nothing about the receiver and hence dependencies do not form.(Which also leads to lower integration costs above)  .&lt;br /&gt;
&lt;br /&gt;
Weaknesses&lt;br /&gt;
&lt;br /&gt;
1. Not suitable for most small companies &lt;br /&gt;
&lt;br /&gt;
Like SOA's its pointless using EDA for a small part of the enterprise. Its like designing a big building but make 1 apartment have full height curved windows.  The one exception is companies with lots of monotoring systems as these are by definition event driven  and hence map well to EDA's (Stock Brokers , Couriers , Police /Security , Military ,Aviation etc) &lt;br /&gt;
&lt;br /&gt;
2. No Shared Data .&lt;br /&gt;
&lt;br /&gt;
EDAs dont have any form of data storage and hence you still need these in your EDA . However they work well with Data warehouses which can store the data from the events it receives.  EDAs dont work well for firms with massive data processing ( eg Credit card bonus point provider). &lt;br /&gt;
&lt;br /&gt;
3. All data is live ,so bad for partially connected systems like mobile phones. &lt;br /&gt;
&lt;br /&gt;
Partially connected systems need a store retrieve mechanism ( Note our EDA system EDAM provides this) &lt;br /&gt;
&lt;br /&gt;
4. Need capability to receive events &lt;br /&gt;
&lt;br /&gt;
Receiving events requires a dynamic subscription or a fixed Ip address.  Dynamic subscriptions in WS-Eventing are a bit clumsy . Note EDAM has a &lt;a rel="" href="http://74.55.152.210/blog/WCF" title="WCF"&gt;Windows Communication Foundation&lt;/a&gt; interface to make this easy.  .Net services ESB also helps get through firewalls to receive events.&lt;img src="http://www.shanghai-software.com/blog/aggbug/37.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/03/27/why-should-you-use-an-event-driven-architecture-eda.aspx</guid>
            <pubDate>Fri, 27 Mar 2009 02:14:01 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/37.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/03/27/why-should-you-use-an-event-driven-architecture-eda.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/37.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/37.aspx</trackback:ping>
        </item>
        <item>
            <title>EDA vs Cloud storage</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/03/27/eda-vs-cloud-storage.aspx</link>
            <description>Cloud storage promises a lot of the things that EDA does namely almost unlimited scaling however EDA implemented in the Cloud has significant advantages.&lt;br /&gt;
&lt;br /&gt;
Firstly while Cloud storage Data may scale extremely well , it does so by using masses amounts of caching or disk spindles. In itself this is not an issue but if you have say 1,000,000 users querying/polling a 10 Gig Table While the performance is likely to be good the CPU usage will be massive and this is where cloud computing bites you - in the pocket. And the situations will get worse as data increases.&lt;br /&gt;
&lt;br /&gt;
However EDA implemented in the Cloud immediately gives you a massive reach and can be combined with a Bus like the .Net Services bus to control access and get through firewalls.&lt;img src="http://www.shanghai-software.com/blog/aggbug/36.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/03/27/eda-vs-cloud-storage.aspx</guid>
            <pubDate>Fri, 27 Mar 2009 00:55:33 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/36.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/03/27/eda-vs-cloud-storage.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/36.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/36.aspx</trackback:ping>
        </item>
        <item>
            <title>Eventing with and without Topics</title>
            <link>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx</link>
            <description>While WS-Eventing has no support for Topics ( see last post) it is almost essential for efficient  processing of messages if you have a large amount of subscriptions. &lt;br /&gt;
&lt;br /&gt;
Consider the case of 10,000 Subscriptions for 10,000 Notification you are looking at 10^8 expensive xPath comparisons which will bring many servers down to its knees. &lt;br /&gt;
&lt;br /&gt;
With EDA we can easily solve this problem ( compare to an overloaded DB) .&lt;br /&gt;
&lt;br /&gt;
Lets say we have a Topicless share pricing feed  something like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;Trades&amp;gt;&lt;br /&gt;
&amp;lt;Trade&amp;gt;&lt;br /&gt;
&amp;lt;Symbol&amp;gt;BHP&amp;lt;/Symbol&amp;gt;&lt;br /&gt;
&amp;lt;Price&amp;gt;38.12&amp;lt;/Price&amp;gt;&lt;br /&gt;
&amp;lt;Volume&amp;gt;10000&amp;lt;/Volume&amp;gt; &lt;br /&gt;
&amp;lt;Exchange&amp;gt;ASX&amp;lt;/Exchange&amp;gt;&lt;br /&gt;
&amp;lt;/Trade&amp;gt;&lt;br /&gt;
&amp;lt;/Trades&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now WS-Eventing has a really nice feature in that subscriptions can force notifications to contain a header this header can be a Topic. Even better the EndTo can be another WS-Eventing server.  With EDAm this is even easier as this subscription can be loaded in the configuration of the Notification server. &lt;br /&gt;
So we create subscriptions and organise the data  eg  by exchange then by group. &lt;br /&gt;
&lt;br /&gt;
What we want is &lt;br /&gt;
&lt;br /&gt;
ShareData&lt;br /&gt;
ShareData.Exchange.Group. Symbol. &lt;br /&gt;
&lt;br /&gt;
That way actual clients can subscribe to the specific information they need ( most likely Symbol or Group )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main Server (where the original feed enters)  &lt;br /&gt;
Topicless (Default mode) &lt;br /&gt;
&lt;br /&gt;
2nd Server ( Runs in Must have topic and server always loads all subs from Topic) &lt;br /&gt;
Subscriptions in the config file ( or Data ) break the data down&lt;br /&gt;
&lt;br /&gt;
Subscription for Exchange add topic&lt;br /&gt;
&lt;br /&gt;
eg Xpath filter =  /Trades/Trade/Exchange="ASX"   Header in subscription&lt;br /&gt;
 &amp;lt;Topics&amp;gt; ShareData.ASX&amp;lt;/Topics&amp;gt; &lt;br /&gt;
&lt;br /&gt;
we add one subscription for each exchange &lt;br /&gt;
We add subscription for each  group and each code. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
eg Xpath filter =  /Trades/Trade/Exchange/Symbol="BHP"   Header in subscription&lt;br /&gt;
 &amp;lt;Topics&amp;gt; ShareData.ASX.MetalsAndMining&amp;lt;/Topics&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We now have 2 services ( the 2nd one can become many services if the load justifies it  ( not needed for a cloud) )  and people can make a subscription based on the Topic and get just the data they require  Better yet they can make subscription based on a cheap topic filter which would be orders of magnitude faster than xPath ( and is easier for the engine to index) . . &lt;br /&gt;
&lt;br /&gt;
Lets have a look at the data , lets asume all these subscriptions are group subscriptions  ( 20  groups * 500 subscriptions)   , now each Group will have 500 Notifications . The engine now only has to process  each of those notifications for 500 subscriptions  so we have 20 * 500 * 500  = 5,000.000 operations ( a 20 fold reduction) . O ( n* m) vs  O( n * m/log(n) )  . Taking into account the difference in performance between a simple topic filter and Xpath you would be looking at 2-3 orders of magnitude improvement. which could correspond to 1 server instead of 200. &lt;br /&gt;
&lt;br /&gt;
This translates into a simpler , more responsive and more cost effective system. With EDA ( and especially EDAM ) this reconfiguration could be done with no changes in code.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://www.shanghai-software.com/blog/aggbug/34.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ben Kloosterman</dc:creator>
            <guid>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx</guid>
            <pubDate>Sat, 21 Feb 2009 12:17:16 GMT</pubDate>
            <wfw:comment>http://www.shanghai-software.com/blog/comments/34.aspx</wfw:comment>
            <comments>http://www.shanghai-software.com/blog/archive/2009/02/21/eventing-with-and-without-topics.aspx#feedback</comments>
            <wfw:commentRss>http://www.shanghai-software.com/blog/comments/commentRss/34.aspx</wfw:commentRss>
            <trackback:ping>http://www.shanghai-software.com/blog/services/trackbacks/34.aspx</trackback:ping>
        </item>
    </channel>
</rss>