<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>trace of thought (Scott Colestock) - Architecture</title>
    <link>http://www.traceofthought.net/</link>
    <description>a trace of thought on...BizTalk Server, Team Foundation Server, AppFabric, etc.</description>
    <language>en-us</language>
    <copyright>Scott Colestock</copyright>
    <lastBuildDate>Tue, 06 Jan 2009 16:19:16 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>scolestock@marcatopartners.net</managingEditor>
    <webMaster>scolestock@marcatopartners.net</webMaster>
    <item>
      <trackback:ping>http://www.traceofthought.net/Trackback.aspx?guid=56ab2c78-c093-49f4-84b1-1c44667d3c31</trackback:ping>
      <pingback:server>http://www.traceofthought.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.traceofthought.net/PermaLink,guid,56ab2c78-c093-49f4-84b1-1c44667d3c31.aspx</pingback:target>
      <dc:creator>Scott Colestock</dc:creator>
      <wfw:comment>http://www.traceofthought.net/CommentView,guid,56ab2c78-c093-49f4-84b1-1c44667d3c31.aspx</wfw:comment>
      <wfw:commentRss>http://www.traceofthought.net/SyndicationService.asmx/GetEntryCommentsRss?guid=56ab2c78-c093-49f4-84b1-1c44667d3c31</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I had a chance to record another podcast
with Jeff Brand, Jason Bock, Rocky Lhotka, and Kirstin Juhl a couple weeks back -
you can find it <a href="http://www.slickthought.net/post/2008/12/New-Spaghetti-Code-Podcast---Developer-Roundtable-December-2008.aspx">here</a>.<br /><p></p><img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=56ab2c78-c093-49f4-84b1-1c44667d3c31" /></body>
      <title>Podcast with Jeff Brand and company is up...</title>
      <guid isPermaLink="false">http://www.traceofthought.net/PermaLink,guid,56ab2c78-c093-49f4-84b1-1c44667d3c31.aspx</guid>
      <link>http://www.traceofthought.net/2009/01/06/PodcastWithJeffBrandAndCompanyIsUp.aspx</link>
      <pubDate>Tue, 06 Jan 2009 16:19:16 GMT</pubDate>
      <description>I had a chance to record another podcast with Jeff Brand, Jason Bock, Rocky Lhotka, and Kirstin Juhl a couple weeks back - you can find it &lt;a href="http://www.slickthought.net/post/2008/12/New-Spaghetti-Code-Podcast---Developer-Roundtable-December-2008.aspx"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=56ab2c78-c093-49f4-84b1-1c44667d3c31" /&gt;</description>
      <comments>http://www.traceofthought.net/CommentView,guid,56ab2c78-c093-49f4-84b1-1c44667d3c31.aspx</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.traceofthought.net/Trackback.aspx?guid=ff8d54fc-d1ba-4b98-b165-4479d1c4857f</trackback:ping>
      <pingback:server>http://www.traceofthought.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.traceofthought.net/PermaLink,guid,ff8d54fc-d1ba-4b98-b165-4479d1c4857f.aspx</pingback:target>
      <dc:creator>Scott Colestock</dc:creator>
      <wfw:comment>http://www.traceofthought.net/CommentView,guid,ff8d54fc-d1ba-4b98-b165-4479d1c4857f.aspx</wfw:comment>
      <wfw:commentRss>http://www.traceofthought.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ff8d54fc-d1ba-4b98-b165-4479d1c4857f</wfw:commentRss>
      <title>The why of REST...</title>
      <guid isPermaLink="false">http://www.traceofthought.net/PermaLink,guid,ff8d54fc-d1ba-4b98-b165-4479d1c4857f.aspx</guid>
      <link>http://www.traceofthought.net/2008/03/17/TheWhyOfREST.aspx</link>
      <pubDate>Mon, 17 Mar 2008 15:12:29 GMT</pubDate>
      <description>&lt;p&gt;
I still can&amp;rsquo;t quite believe we dared to wade into this topic &amp;ndash; but &lt;a href="http://www.slickthought.net/"&gt;Jeff
Brand &lt;/a&gt;(Microsoft) hosted myself, &lt;a href="http://www.lhotka.net/"&gt;Rocky Lhotka&lt;/a&gt;, &lt;a href="http://pluralsight.com/blogs/matt/"&gt;Matt
Milner&lt;/a&gt;, and &lt;a href="http://www.jasonbock.net/"&gt;Jason Bock&lt;/a&gt; for a podcast that
hit on REST, web services, tooling, and&amp;nbsp;a few other loosely connected topics.&amp;nbsp;
It was fun to do.&amp;nbsp; I must have been sitting closer to the microphone &amp;ndash;
I&amp;rsquo;m the loud voice, for better or for worse. 
&lt;/p&gt;
&lt;p&gt;
Find it &lt;a href="http://www.slickthought.net/post/Minneapolis-Developer-Roundtable-Podcast---Talking-REST.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=ff8d54fc-d1ba-4b98-b165-4479d1c4857f" /&gt;</description>
      <comments>http://www.traceofthought.net/CommentView,guid,ff8d54fc-d1ba-4b98-b165-4479d1c4857f.aspx</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.traceofthought.net/Trackback.aspx?guid=d9d67cc0-2692-4b9d-a0c2-7f1e0e124986</trackback:ping>
      <pingback:server>http://www.traceofthought.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.traceofthought.net/PermaLink,guid,d9d67cc0-2692-4b9d-a0c2-7f1e0e124986.aspx</pingback:target>
      <dc:creator>Scott Colestock</dc:creator>
      <wfw:comment>http://www.traceofthought.net/CommentView,guid,d9d67cc0-2692-4b9d-a0c2-7f1e0e124986.aspx</wfw:comment>
      <wfw:commentRss>http://www.traceofthought.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d9d67cc0-2692-4b9d-a0c2-7f1e0e124986</wfw:commentRss>
      <title>BizTalk Hotrod Issue 3...</title>
      <guid isPermaLink="false">http://www.traceofthought.net/PermaLink,guid,d9d67cc0-2692-4b9d-a0c2-7f1e0e124986.aspx</guid>
      <link>http://www.traceofthought.net/2007/12/28/BizTalkHotrodIssue3.aspx</link>
      <pubDate>Fri, 28 Dec 2007 19:24:20 GMT</pubDate>
      <description>My article on a custom method for orchestration-based throttling appeared in BizTalk Hotrod Issue 3.&amp;nbsp; Wow &amp;ndash; this issue was a long time in coming, but it looks well worth the wait.&amp;nbsp; Looks like a &lt;em&gt;ton&lt;/em&gt; of
great content once again.&amp;nbsp; If you have any comments on the article, please leave
them with this post &amp;ndash; I&amp;rsquo;d love to discuss it with you.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;a href="http://www.mnbiztalk.com/biztalkhotrod/Hotrod1q42007.pdf"&gt;&lt;img alt="BizTalkHotRod3" src="http://www.traceofthought.net/content/binary/BizTalkHotRod3.png" border="0" /&gt;&gt;
&lt;/div&gt;
&gt;&lt;img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=d9d67cc0-2692-4b9d-a0c2-7f1e0e124986" /&gt;</description>
      <comments>http://www.traceofthought.net/CommentView,guid,d9d67cc0-2692-4b9d-a0c2-7f1e0e124986.aspx</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.traceofthought.net/Trackback.aspx?guid=4f0a01be-6013-4055-95b7-0976a36ddbc5</trackback:ping>
      <pingback:server>http://www.traceofthought.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.traceofthought.net/PermaLink,guid,4f0a01be-6013-4055-95b7-0976a36ddbc5.aspx</pingback:target>
      <dc:creator>Scott Colestock</dc:creator>
      <wfw:comment>http://www.traceofthought.net/CommentView,guid,4f0a01be-6013-4055-95b7-0976a36ddbc5.aspx</wfw:comment>
      <wfw:commentRss>http://www.traceofthought.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4f0a01be-6013-4055-95b7-0976a36ddbc5</wfw:commentRss>
      <title>Collapsing physical tiers...</title>
      <guid isPermaLink="false">http://www.traceofthought.net/PermaLink,guid,4f0a01be-6013-4055-95b7-0976a36ddbc5.aspx</guid>
      <link>http://www.traceofthought.net/2004/02/26/CollapsingPhysicalTiers.aspx</link>
      <pubDate>Thu, 26 Feb 2004 23:38:41 GMT</pubDate>
      <description>
   &lt;div&gt;
&lt;p&gt;
I agree wholeheartedly with &lt;a href="http://www.interact-sw.co.uk/iangblog/2004/02/25/appserversecurity"&gt; Ian
Griffith's &lt;/a&gt;response to Sam Gentile's recent &lt;a href="http://samgentile.com/blog/archive/2004/02/24/11355.aspx"&gt; post&lt;/a&gt;&amp;hellip;
&lt;/p&gt;
&lt;p&gt;
I went throught this exercise with a client last summer - it was fairly long and drawn
out.&amp;nbsp; The organization had always had a physically distinct middle tier that
was responsible for data access - based on the belief that scalability and security
would both be improved.
&lt;/p&gt;
&lt;p&gt;
For the application in question at the time, DataSets were being returned from middle-tier
objects - marshaled via .NET Remoting (binary/tcp).&amp;nbsp; Now, DataSets don't have
a very compact representation when serialized, as has been described &lt;a href="http://msdn.microsoft.com/msdnmag/issues/02/12/cuttingedge/"&gt;here&lt;/a&gt;.&amp;nbsp;
Whether due to the serialization format or other aspects of the serialization process,
our performance tests indicated that the time spent serializing/deserializing DataSets
imposed a tremendous CPU tax on both the web server and the application server - even
after implementing &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;829740"&gt; techniques&lt;/a&gt;&amp;nbsp;to
address it.&amp;nbsp; The throughput (requests per second) on the web servers &amp;amp; request
latency also suffered dramatically.
&lt;/p&gt;
&lt;p&gt;
We conducted extensive tests using ACT (Application Center Test) to drive 40 virtual
users with no dwell time (i.e. each driver thread executed another request as soon
as the last returned.)&amp;nbsp; Two web servers were used, and in the remoted middle-tier
case, we had a single middle-tier server.&amp;nbsp; A single Sql Server was used.&amp;nbsp;
All servers were "slightly aged" four-processor machines.&amp;nbsp; The read operations
brought back large DataSets, whereas the write operations were fairly simple by comparison
- the workload was intended to simulate real user profiles.
&lt;/p&gt;
&lt;p&gt;
&lt;table cellspacing="0" cellpadding="3" border="1" id="Table1" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
&lt;b&gt;Configuration&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
&lt;b&gt;Operation&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
&lt;b&gt;Requests Per Second (RPS)&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
&lt;b&gt;Latency&lt;/b&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
Remoted middle tier
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
Read
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
28
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
1400 msec
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
Local middle tier
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
Read
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
115
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
322 msec
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
Remoted middle tier
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
Write
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
14
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
2791 msec
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
Local middle tier
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
Write
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p align="center"&gt;
200
&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;
193 msec
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
Notice that not only was the local middle tier (non-remoted case) able to sustain
a much higher throughput, but it had far less latency as well.&amp;nbsp; CPU utilization
indicated we would need one physical middle tier server for every web server.&amp;nbsp;
(Of course, when comparing raw performance of "physical middle tier vs. not", you
always need to ask "what would happen if I deployed these middle tier servers as front-end
web servers instead?&amp;nbsp; In practice, you don't even need to go that far - just
getting rid of the middle tier servers altogther will often improve performance&amp;hellip;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;So&lt;/strong&gt;, after evaluating performance, we decided we wanted to push for
a local middle tier, and allow (gasp) access to the database from the DMZ.&amp;nbsp; This
led us to a long and serious discussion of the security implications, and our reasoning
followed Ian's quite closely.&amp;nbsp; The &lt;a href="http://msdn.microsoft.com/library/default.asp?url="&gt; Threats
and Countermeasures&lt;/a&gt; text was a very valuable resource.&amp;nbsp; We certainly avoided
the use of all dynamic Sql (in favor of using stored procedures), used a low privilege
(Windows) account to access Sql Server (that only had access to stored procedures),
used strongly-typed (SqlParameter) parameters for all database calls (that are type/length
checked), avoided storing connection strings in the clear via the .NET config encryption
mechanism, used non-standard ports for Sql Server, etc.&amp;nbsp; The quantity of advice
to digest is large indeed - but necessary regardless of whether you are deployed with
a physical middle tier or not...
&lt;/p&gt;
&lt;p&gt;
Two closing thoughts on this topic&amp;hellip;.First, Martin Fowler sums up this whole
topic well in his book Patterns of Enterprise Application Architecture (Chapter 7)
on the topic of &amp;ldquo;Errant Architectures&amp;rdquo; - excerpted in a &lt;a href="http://www.sdmagazine.com/documents/s="&gt; SD
magazine article&lt;/a&gt;.&amp;nbsp; After introducing the topic, he says:
&lt;/p&gt;
&lt;blockquote&gt;"&amp;hellip;Hence, we get to my First Law of Distributed Object Design: Don&amp;rsquo;t
distribute your objects! How, then, do you effectively use multiple processors [servers]?
In most cases, the way to go is clustering [of more front-end web servers]. Put all
the classes into a single process and then run multiple copies of that process on
the various nodes. That way, each process uses local calls to get the job done and
thus does things faster. You can also use fine-grained interfaces for all the classes
within the process and thus get better maintainability with a simpler programming
model. &amp;hellip;All things being equal, it&amp;rsquo;s best to run the Web and application
servers in a single process&amp;mdash;but all things aren&amp;rsquo;t always equal. "&lt;/blockquote&gt; 
&lt;p&gt;
Second, does anyone remember the nile.com &lt;a href="http://www.microsoft.com/windows2000/docs/doculabs.doc"&gt; benchmarks&lt;/a&gt;&amp;nbsp;that
DocuLabs conducted?&amp;nbsp;&amp;nbsp; I can't find the exact iteration of the benchmark
I'm looking for, but they found that ISAPI components calling local COM+ components
on a single Compaq 8500 (8-way) could achieve 3000 requests per second, vs. just 500
once the COM+ components were placed on a separate Compaq 8500.&amp;nbsp; Unreal.&amp;nbsp;
(And by the way, with those numbers, what the heck was wrong the ASP.NET code above?&amp;nbsp;
Oh well, nile.com WAS a benchmark after all&amp;hellip;)
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=4f0a01be-6013-4055-95b7-0976a36ddbc5" /&gt;</description>
      <comments>http://www.traceofthought.net/CommentView,guid,4f0a01be-6013-4055-95b7-0976a36ddbc5.aspx</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://www.traceofthought.net/Trackback.aspx?guid=c05aeef1-9d00-4f68-9fe8-05eff51a6288</trackback:ping>
      <pingback:server>http://www.traceofthought.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.traceofthought.net/PermaLink,guid,c05aeef1-9d00-4f68-9fe8-05eff51a6288.aspx</pingback:target>
      <dc:creator>Scott Colestock</dc:creator>
      <wfw:comment>http://www.traceofthought.net/CommentView,guid,c05aeef1-9d00-4f68-9fe8-05eff51a6288.aspx</wfw:comment>
      <wfw:commentRss>http://www.traceofthought.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c05aeef1-9d00-4f68-9fe8-05eff51a6288</wfw:commentRss>
      <title>Duality of service interfaces...</title>
      <guid isPermaLink="false">http://www.traceofthought.net/PermaLink,guid,c05aeef1-9d00-4f68-9fe8-05eff51a6288.aspx</guid>
      <link>http://www.traceofthought.net/2004/02/20/DualityOfServiceInterfaces.aspx</link>
      <pubDate>Fri, 20 Feb 2004 13:22:44 GMT</pubDate>
      <description>&lt;div&gt;
&lt;p&gt;
&lt;a href="http://hyperthink.net/blog/PermaLink,guid,a845c8f4-803a-440b-95e6-ee997d609b44.aspx"&gt;Steve
Maine's post&lt;/a&gt; on "single-parameter service interfaces" - and the assertion that
such interfaces are more in keeping with the SOA theme - got me thinking just a bit
about the real relationship between [WebMethod] methods and the associated WSDL.
&lt;/p&gt;
&lt;p&gt;
Recall that &lt;a href="http://www.w3.org/TR/wsdl#_porttypes"&gt;WSDL port types&lt;/a&gt; consist
of operations that define (at most) an input message and an output message.&amp;nbsp;
WSDL messages consist of "parts" - and for literal&amp;nbsp;formatting&amp;nbsp;with &amp;ldquo;wrapped&amp;ldquo;
parameter style (the default for ASMX), you will&amp;nbsp;have a single "part".&amp;nbsp;
The part in turn refers to an XML schema-defined element.&amp;nbsp; (Here is a &lt;a href="/misc/samplewsdl.xml"&gt;concrete
example &lt;/a&gt;to look at.)
&lt;/p&gt;
&lt;p&gt;
Notice that at this point, we haven't said anything about whether a) we have multiple
parameters to our service interface, with a mapping between those parameters and child
elements in the WSDL-referenced schema or b) we have a single (xml document) parameter
to our service interface that is expected to conform to the WSDL-referenced schema
(or for that matter, a single parameter consisting of a serializable class.)
&lt;/p&gt;
&lt;p&gt;
But the WSDL operation definition is quite clear - there is only &lt;strong&gt;one&lt;/strong&gt; message
associated with each of the potential directions (input, output, and fault.)&amp;nbsp;
The operation definition doesn't care whether the underlying code that supplies implementation
shreds the associated schema types to and from method parameters!
&lt;/p&gt;
&lt;p&gt;
And in an important way, it doesn&amp;rsquo;t matter.&amp;nbsp; From the client's perspective,
I can submit an xml document (or serialized object) to an operation defined on a port
type, as long as that xml document conforms to the associated schema.&amp;nbsp; The client
isn't forced to take a parameter-oriented view of a web service interface &lt;em&gt;regardless
of whether or not the server implementation is "parameterized".&lt;/em&gt;&amp;nbsp; Likewise,
from the server's perspective, a web service interface could be implemented with consumption
of (compliant) xml documents - without forcing that view on the client (who might
very well prefer a parameter-style proxy to be generated from WSDL.)
&lt;/p&gt;
&lt;p&gt;
This point remains true&amp;nbsp;even if I was using &amp;ldquo;bare&amp;ldquo; parameter style
(i.e. if I had multiple message parts) or if I was using RPC formatting (i.e. if I
had a parent element for my parameters named after the web service method.)
&lt;/p&gt;
&lt;p&gt;
Of course, your philosophical bent will lead you to either the &lt;a href="http://blogs.msdn.com/tewald/"&gt; WSDL-first&amp;nbsp;path &lt;/a&gt;(for
the document view) or the ASMX path-of-least-resistance (for the parameter view.)
&lt;/p&gt;
&lt;p&gt;
And, handling the open content case&amp;nbsp;that &lt;a href="http://hyperthink.net/blog/PermaLink,guid,a845c8f4-803a-440b-95e6-ee997d609b44.aspx"&gt; Steve
discussed&lt;/a&gt; is only possible with a document-oriented approach.&amp;nbsp; (&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlserializationxmlanyelementattributeclasstopic.asp"&gt;XmlAnyElementAttribute&lt;/a&gt; could
assist with the case where you want to rely on serialized/deserialized objects to
stand in for raw xml documents.)
&lt;/p&gt;
&lt;p&gt;
Note that the parameterized view exhibits some aspects of being a &lt;a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html"&gt; leaky
abstraction&lt;/a&gt;.&amp;nbsp; SOAP 1.1 allows for missing values ("Applications MAY process
requests with missing parameters but also MAY return a fault.")&amp;nbsp;- and so does
the XmlSerializer.&amp;nbsp; This means that you can wind up with malformed requests,
and not know it.&amp;nbsp; (Is your service really going to be ok with treating missing
parameters the same as freshly initialized data types?)&amp;nbsp; Since ASMX offers no
schema validation by default, you really need to rely on a &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/07/XMLSchemaValidation/default.aspx"&gt; schema-validation&amp;nbsp;SoapExtension&lt;/a&gt; to
solve this problem.
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.traceofthought.net/aggbug.ashx?id=c05aeef1-9d00-4f68-9fe8-05eff51a6288" /&gt;</description>
      <comments>http://www.traceofthought.net/CommentView,guid,c05aeef1-9d00-4f68-9fe8-05eff51a6288.aspx</comments>
      <category>Architecture</category>
    </item>
  </channel>
</rss>