<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/"><channel><title>dotNet</title><link>http://www.styledesign.biz/weblogs/macinnesm/category/4.aspx</link><description>dotNet</description><managingEditor>Marcus Mac Innes</managingEditor><dc:language>en-IE</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Marcus Mac Innes</dc:creator><title>WARNING: Serious ASP.NET issue with Windows Server 2003 and SP1</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/08/04/993.aspx</link><pubDate>Thu, 04 Aug 2005 17:20:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/08/04/993.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/993.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/08/04/993.aspx#Feedback</comments><slash:comments>59</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/993.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/993.aspx</trackback:ping><description>&lt;P&gt;We have been trying to track down a problem with our blog aggregator software &lt;A href="http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx"&gt;B.AG&lt;/A&gt; which is currently powering &lt;A href="http://www.developers.ie"&gt;INDA&lt;/A&gt;'s blog aggregator at &lt;A href="http://www.developers.ie/blogs"&gt;www.developers.ie/blogs&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;We recently upgraded the server to Windows Server 2003 SP1 and for some reason, threads were simply disappearing from our custom threadpool and the application logging which uses &lt;A href="http://logging.apache.org/log4net/"&gt;log4net&lt;/A&gt; would simply stop without warning. We have just tracked the problem down to the System.Threading.Timer class which according to &lt;A href="http://arje.net/halcyon_days_of_system.threading.timer"&gt;this&lt;/A&gt; has major issues when running on &lt;A href="http://www.microsoft.com/windowsserver2003/default.mspx"&gt;Windows Server 2003&lt;/A&gt; with &lt;A href="http://www.microsoft.com/windowsserver2003/downloads/servicepacks/sp1/default.mspx"&gt;SP1&lt;/A&gt;. It seems the Timer class stops firing at some random&amp;nbsp;point and never fires again...&lt;/P&gt;
&lt;P&gt;I know of a number of major ASP.NET sites around the world that have applications that depend on functionality provided by the Timer class and I'm very surprised that this issue has not seen more publicity. So this is just a warning to ensure that you don't fall victim to this issue!&lt;/P&gt;
&lt;P&gt;As far am I am aware there is no hotfix available&amp;nbsp;for this problem yet.&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/993.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>TechEd 2005 - Presentations Available Online</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/28/991.aspx</link><pubDate>Thu, 28 Jul 2005 11:56:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/28/991.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/991.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/28/991.aspx#Feedback</comments><slash:comments>41</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/991.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/991.aspx</trackback:ping><description>&lt;!--StartFragment --&gt;Following on from &lt;A href="http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/10/950.aspx"&gt;my recent post&lt;/A&gt; about this year's TechEd Europe.&amp;nbsp;You can now watch some of Kimberly and Rafal's presentations online at &lt;A href="http://www.microsoft.com/uk/technet/itsshowtime/" target=_new&gt;http://www.microsoft.com/uk/technet/itsshowtime/&lt;/A&gt;.&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/991.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>TechEd 2005 – What’s The Message This Year?</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/10/950.aspx</link><pubDate>Sun, 10 Jul 2005 19:02:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/10/950.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/950.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/07/10/950.aspx#Feedback</comments><slash:comments>118</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/950.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/950.aspx</trackback:ping><description>&lt;P&gt;Once again, Microsoft pulled off its annual &lt;A href="http://www.mseventseurope.com/teched/05/pre/content/default.aspx"&gt;TechEd&lt;/A&gt; conference without a hitch. If you&amp;#8217;ve never been to TechEd, then it would be difficult to imagine the sheer scale of the event. The conference centre becomes a mini city with 6000 commuters making their way from session room to session room. Between sessions, there is a great buzz of in depth conversations taking place about the previous session content&amp;#8217;s validity or relevance to a particular organisation. These conversations as it turns out are often of more benefit than the session content itself!&lt;/P&gt;
&lt;P&gt;It&amp;#8217;s been an interesting year in the technology community, a year in which Service Oriented Architecture (SOA) appears to have gone mainstream. Last year at the conference, when audiences were asked about how may of them were currently building SOA based applications, I recall a figure of about 15% raising their hands, this year that same question received a 60% vote. This increase is entirely in keeping with what I am seeing across the international communities that I am involved with. It seems that since last year, the majority of new projects are SOA based, which means that Microsoft&amp;#8217;s relentless marketing of the SOA strategy is working&amp;#8230; But is this right?&lt;/P&gt;
&lt;P&gt;There were an abundance of SOA tracks again at this years TechEd. These architecture and &amp;#8220;connected systems&amp;#8221; tracks had that familiar feel to them, a few words changed here and there but more or less the same slides as last year. Even &lt;A href="http://staff.newtelligence.net/clemensv/default.aspx"&gt;Clemens Vasters&lt;/A&gt; had little to add over the previous year and only got away with it because of his charismatic stage presence. So what&amp;#8217;s going on? Why are we hearing the same story over and over again? My guess is that with only 60% of the audience raised their hands&amp;#8230; there&amp;#8217;s still another 40% to be converted!&lt;/P&gt;
&lt;P&gt;Now this begs the big question which dominated most of the offline conversations, is SOA right for every project? There were no sessions on 3-tier, n-tier, client / server or stand alone application architectures. Are these architectures wrong? Should every application no matter how large or small be SOA?&lt;/P&gt;
&lt;P&gt;My response is a definite &amp;#8220;no&amp;#8221; (for the moment). As I&amp;#8217;ve said many times before, moving to SOA represents a mind shift much like the shift developers needed to make when they embraced Object Oriented (OO) programming back in the late 80s, early 90s. If we asked the same question in 1990, &amp;#8220;should every application be object oriented?&amp;#8221; I bet we would have exactly the same response as the question we are asking today about SOA, &amp;#8220;No&amp;#8221;. OO after all was viewed as too complex for small applications and posed a performance problem on the then slow computers. But if we asked this OO question today, everyone would agree that save a few exceptions, most applications should be built using object oriented methods.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.eaipatterns.com/ramblings.html"&gt;Gregor Hohpe&lt;/A&gt; of &lt;A href="http://www.thoughtworks.com"&gt;ThoughtWorks&lt;/A&gt;&amp;nbsp;and author of &lt;A href="http://www.eaipatterns.com/"&gt;Enterprise Integration Patterns&lt;/A&gt;, gave an interesting talk on &amp;#8220;Event Driven Architecture, ARC311&amp;#8221; in which he gave some practical example of appropriate patterns and their implementations for building and testing event driven architectures. These concepts and implementations are very relevant to building SOA applications and hopefully we shall see more of these advanced talks in the future.&lt;/P&gt;
&lt;P&gt;One of the reasons why SOA is not a one size fits all today is that there is a fundamental lack of knowledge, competence and agreement amongst technologists as to exactly how these applications should be built. There is a high barrier to entry in terms of upfront education, an engineering overhead in terms of a increase in design and implementation complexity and to top it all off, a definite runtime performance penalty. While the benefits of a successfully completed SOA project are clear, the investment and risks involved are greater and the business decision mandates caution and careful internal assessments before automatically jumping on board the SOA train.&lt;/P&gt;
&lt;P&gt;Regarding education, Microsoft is doing it&amp;#8217;s best to pump the message home, telling architects and developers that SOA is the future, teaching them to think about service boundaries, asynchronous programming, reliable versioned messaging&amp;#8230; this is the TechEd message. It was the same message last year and people went home filled with new ideas, backed up with memorised example diagrams on how systems could hang together in a new connected, interoperable, scalable and most importantly re-usable way.&lt;/P&gt;
&lt;P&gt;I&amp;#8217;ve lost count of the number of people I&amp;#8217;ve encountered who have run into big trouble trying to implement applications in SOA. The most recent conversation I had was with a US company who were looking for advice on how best to implement an atomic transaction across a service boundary. They explained how they had built an application comprising a number of services and were now having problems ensuring consistency across each of the service databases. If you are reading this thinking &amp;#8220;yes, I&amp;#8217;m having that problem too&amp;#8221;, then hopefully you are in the early stages of your agile development lifecycle!!! Because you are going to need to start again. Requiring an atomic transaction across a service boundary is a clear indication that your services are not divided correctly, your foundations are wrong. This is where SOA projects are running over budget, into difficulty or simply failing. It all boils down to SOA implementation as the classic expression goes &amp;#8220;the devil is in the detail&amp;#8221;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/rjacobs/"&gt;Ron Jacobs&lt;/A&gt; of Microsoft&amp;#8217;s &lt;A href="http://msdn.microsoft.com/practices/"&gt;Patterns and Practices&lt;/A&gt; group gave a great talk on &amp;#8220;Dealing with Data in Service-Oriented Architecture, ARC308&amp;#8221; which expands on where &lt;A href="http://www.pathelland.com/"&gt;Pat Helland&lt;/A&gt; &lt;A href="http://www.pathelland.com/presentations/2004/powerpoint/040317-EastCoastRAF-Helland-ThoughtsOnData-04b.ppt"&gt;left off before he moved&lt;/A&gt; to &lt;A href="http://www.amazon.com"&gt;Amazon&lt;/A&gt; earlier this year. (Pat if you are reading this&amp;#8230; you were missed this year!). This talk deals with the problem of understanding service boundaries from the perspective of segmenting the data within a given domain and deriving your boundaries accordingly. Service orientation is all about &amp;#8220;data ownership&amp;#8221; and if this message is not crystal clear, then don&amp;#8217;t even attempt anything in SOA until this penny drops. (Remember how you needed to understand objects before you could write anything in OO). I would have liked to see a bigger drive from Microsoft in this area, because at then end of the day not every organisation has the skills of a competent and experienced Enterprise Architect on board who fully understands these concepts. Smaller organisations are trying to build SOA applications too and need to understand this cornerstone of the design principal.&lt;/P&gt;
&lt;P&gt;The second stumbling block for building SOA or connected systems, is tool support. Those guys who after leaving Amsterdam last year and headed off to build new SOA applications quickly realised that in a non SOA world, they were living in the lap of luxury with respect to the quantity and quality of the tools that were available to help build applications. SOA is new and good tools are few and far between, meaning that you need to do a great deal of extra work (by hand) in order to make things work. Visual Studio 2003 doesn&amp;#8217;t provide a great deal of help because once again the devil is in the detail. &amp;#8220;[WebMethod]&amp;#8221; gave out the entirely wrong message, facilitating ease of construction while negating design. Thankfully, this is something Microsoft is willing to admit and as such had invited &lt;A href="http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx"&gt;my friend&lt;/A&gt; &lt;A href="http://weblogs.asp.net/cweyer/"&gt;Christian Weyer&lt;/A&gt; to speak and participate in a number of sessions at this year&amp;#8217;s event. &lt;A href="http://weblogs.asp.net/cweyer/"&gt;Christian&lt;/A&gt; who is part of the &lt;A href="http://www.thinktecture.com"&gt;ThinkTecture&lt;/A&gt; team was one of the first to fill the tool support gap with his product &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html"&gt;WS-ContractFirst&lt;/A&gt; which provides a quick and easy way to generate &amp;#8220;correct&amp;#8221; service interfaces and WSDL code. I believe that &lt;A href="http://weblogs.asp.net/cweyer/"&gt;Christian&lt;/A&gt; also mentioned that the &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html"&gt;next version of his tool&lt;/A&gt; would support &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7591DFD2-E1B7-4624-9D5B-29C211D149FE&amp;amp;displaylang=en"&gt;WSE 3.0&lt;/A&gt;, which will be a great addition.&lt;/P&gt;
&lt;P&gt;Furthering the need for better tool support, we are now on the verge of the release of &lt;A href="http://lab.msdn.microsoft.com/teamsystem/"&gt;Visual Studio Team System&lt;/A&gt;. The more I look at this new suite, the more I realise why it has been so long in the making. The product is simply massive and will present a significant jump in tool support for all .NET technologists from each discipline. I&amp;#8217;m not going to go on about this, other than to say that I sincerely believe this release will mark the beginning of a new era of development, the &lt;A href="http://www.softwarefactories.com/"&gt;Software Factory&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Thirdly, SOA is currently lacking infrastructure support. Projects soon run into trouble when they realise the complexity of working in a connected (sometimes disconnected) world. Gone are the atomic COM+ transactions and in come the reliably delivered messages&amp;#8230; But where is the reliable delivery infrastructure? &lt;A href="http://msdn.microsoft.com/Longhorn/understanding/pillars/Indigo/default.aspx"&gt;Indigo&lt;/A&gt; will obviously address a number of the infrastructure issues and I would hazard a guess that in the mean time 80% of SOA applications as build using MSMQ as a reliable transport. It seems odd therefore that Microsoft have never released an official MSMQ transport for their &lt;A href="http://msdn.microsoft.com/webservices/building/wse/default.aspx"&gt;Web Services Extension framework (WSE)&lt;/A&gt;&amp;#8230; You&amp;#8217;ve have to rely on third party open source code, mmm.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://benjaminm.net/"&gt;Benjamin Mitchell&lt;/A&gt;, jumps to the rescue and presents a session (CTS350) on &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7591DFD2-E1B7-4624-9D5B-29C211D149FE&amp;amp;displaylang=en"&gt;WSE 3.0&lt;/A&gt; for which Microsoft have just released a CTP of &lt;A href="http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwse/html/wseandws-rm.asp"&gt;WS-ReliableMessaging&lt;/A&gt;. I&amp;#8217;m not sure about the support on this release; I assume it carries a &amp;#8220;use at your own risk&amp;#8221; label.&lt;/P&gt;
&lt;P&gt;In all, TechEd this year could have concentrated a bit more on expanding on last year&amp;#8217;s theory with more talk on implementation. Fabriq, EDRA, Proseware, in fact all the implementation references were noticeably missing this year from session titles. Have Microsoft had the same challenges concerning the correct implementation of SOA as the rest of the .NET community? It seems so.&lt;/P&gt;
&lt;P&gt;So when I asked earlier about whether SOA was right for every project, I gave a &amp;#8220;no&amp;#8221; (for the moment) answer. In time, I believe with the right tools, agreement on standards, supporting infrastructure, more groundswell in developer education and experience regarding implementation, I can&amp;#8217;t see why it wouldn&amp;#8217;t be just as easy to build applications based on SOA architectures. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/sql/2005/"&gt;SQL Server 2005&lt;/A&gt; was also big on the hit list this year. The &lt;A href="http://www.microsoft.com/sql/2005/productinfo/ctp.mspx"&gt;June CTP&lt;/A&gt; is out and appears with improved UI and tools. &lt;A href="http://www.sqlskills.com/blogs/kimberly/"&gt;Kimberly L Tripp&lt;/A&gt; is to SQL Server as &lt;A href="http://staff.newtelligence.net/clemensv/default.aspx"&gt;Clemens Vasters&lt;/A&gt; is to Connected Systems. This no nonsense girl has been there and done that, she travels the world fixing problems and as a result just knows what issues we are facing and are likely to face. Her presentation skills are unbeatable and I enjoyed every single moment of each of her talks. Apart from now having the CLR in the database (which I personally believe is of marginal benefit) the new 2005 version seems to have addressed a number of operational issues which enable greatly increased availability. &lt;A href="http://www.sqlskills.com/blogs/kimberly/"&gt;Kim&lt;/A&gt;&amp;#8217;s demo of online recovery was ingenious created using a tiny 4 port USB hub connected to her laptop. Inserted into the hub were four 128MB USB keys onto which she had partitioned a 1.4 million row database table. While pulling one of the keys out of the hub clearly simulated the complete failure of the drive containing the online data, it didn&amp;#8217;t compare to Andy Lees keynote demonstration of clustering in action as he took an actual sledge hammer to a live server on stage in order to simulate a server failure&amp;#8230; &lt;A href="http://www.sqlskills.com/blogs/kimberly/"&gt;Kim&lt;/A&gt;&amp;#8217;s demo however was a little more close to home as she brought the audience through the entire process of a full manual recovery without taking the database or indeed the failed table offline. This is the kind of demo you will be glad to have seen one day&amp;#8230;&lt;/P&gt;
&lt;P&gt;Testing is also something Microsoft has woken up to and this year&amp;#8217;s TechEd saw a number of core personalities, including &lt;A href="http://weblogs.asp.net/rosherove/"&gt;Roy Osherove&lt;/A&gt; of &lt;A href="http://www.teamagile.com/"&gt;TeamAgile&lt;/A&gt; fame making appearances at panel discussions and giving talks on Test strategies. Visual Studio 2005 obviously addresses the need for increased tool support for testing with its introduction of unit testing and load testing capabilities and these were shown off in a number of interesting talks.&lt;/P&gt;
&lt;P&gt;Rafal Lukawiecki of &lt;A href="http://www.projectbotticelli.com/"&gt;Project Botticelli&lt;/A&gt; is always a must see with his inspiring security talks. This guy will probably win the &lt;A href="http://staff.newtelligence.net/clemensv/PermaLink,guid,214.aspx"&gt;best speaker prize again this year&lt;/A&gt;&amp;#8230;&lt;/P&gt;
&lt;P&gt;So to round up TechEd 2005, non-Microsoft people were by far the best speakers in terms of content and presentation skills. If &lt;A href="http://www.sqlskills.com/blogs/kimberly/"&gt;Kimberly L Tripp&lt;/A&gt;, &lt;A href="http://www.projectbotticelli.co.uk/"&gt;Rafal Lukawiecki&lt;/A&gt; or &lt;A href="http://staff.newtelligence.net/clemensv/default.aspx"&gt;Clemens Vasters&lt;/A&gt; are around over the coming year and you have an opportunity to attend one of their talks, you&amp;#8217;re guaranteed to be inspired.&lt;/P&gt;
&lt;P&gt;Also, for the Irish amongst us&amp;#8230; be careful (very careful) of &lt;A href="http://blogs.msdn.com/clare_dillon/"&gt;Clare&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/robburke/"&gt;Rob&lt;/A&gt;&amp;#8217;s generous hospitality, Microsoft style, which ensures that the TechEd experience continues well into the night! These guys really know how to put on the best show!&lt;/P&gt;
&lt;P&gt;&amp;#8230;and thanks Microsoft for &lt;A href="http://direct.motorola.com/ENS/web_producthome.asp?Country=USA&amp;amp;language=ENS&amp;amp;productid=29303"&gt;my new phone&lt;/A&gt;!&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/950.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>ASP.Net 2.0 Roadshow in Dublin</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/03/07/312.aspx</link><pubDate>Mon, 07 Mar 2005 10:14:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/03/07/312.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/312.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2005/03/07/312.aspx#Feedback</comments><slash:comments>33</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/312.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/312.aspx</trackback:ping><description>&lt;P&gt;Following my talk on Securing ASP.Net Applications at last Friday&amp;#8217;s Dublin leg of Microsoft&amp;#8217;s &lt;A href="http://www.microsoft.com/emea/msdn/aspontour/default.aspx"&gt;ASP.Net 2.0 European Roadshow&lt;/A&gt;, there were a couple of requests for the slides and code samples. They can be downloaded from &lt;A href="http://styledesign.biz/downloads/2005/03/Securing ASP.Net Applications.zip"&gt;here&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Talking with developers afterwards in the bar, it was really interesting to see how many of them had heard of SQL Injection and XSS attacks but had not actually realised how vulnerable an application and the other applications which share the same database can be. Most had never actually seen how an attack would be carried out.&lt;/P&gt;
&lt;P&gt;I demonstrated how security on a web site can be compromised by taking advantage of holes within the application code. These holes can be discovered by using a series of probes which disclose whether or not vulnerability exists. &lt;/P&gt;
&lt;P&gt;The demonstration attacked the site&amp;#8217;s Login page to discover vulnerabilities. These were then exploited to bypass the application security altogether. We were then able to take control of the database for this and other applications which share the database, create our own login accounts with administrative privileges and access the site&amp;#8217;s customer&amp;#8217;s credit card information.&lt;/P&gt;
&lt;P&gt;I also demonstrated using a Cross Site Scripting attack how the Forms Authentication cookie could be stolen and silently sent to an attacker&amp;#8217;s website to be stored for later use. Once the attacker is in position of this cookie, they would be able to login to the original web site using someone else&amp;#8217;s authentication token. &lt;/P&gt;
&lt;P&gt;The key message of the talk was to ensure that all user input is validated before any other processing is done. This together with strict use of secure coding standards would have disabled any attacker&amp;#8217;s opportunities. &lt;/P&gt;
&lt;P&gt;For more information on writing secure code, please feel free to contact me. &lt;/P&gt;
&lt;P&gt;And many thanks to Microsoft for asking me to speak at this great event with the &lt;A href="http://www.microsoft.com/emea/msdn/aspontour/speakers.aspx"&gt;ASP.NET team&lt;/A&gt;!&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/312.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>Contract First, Guinness Second</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx</link><pubDate>Fri, 17 Dec 2004 12:22:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/284.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/12/17/284.aspx#Feedback</comments><slash:comments>332</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/284.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/284.aspx</trackback:ping><description>&lt;P&gt;Yesterday evening, night and the early hours of this morning &amp;#8230; (very sore head now) I had the pleasure of meeting &lt;A href="http://weblogs.asp.net/cweyer/"&gt;Christian Weyer&lt;/A&gt; who via &lt;A href="http://www.ineta.org/"&gt;INETA&lt;/A&gt; was speaking &lt;A href="http://www.irishdev.com/"&gt;IrishDev.ie&lt;/A&gt;&amp;#8217;s Christmas Cinema Party.&lt;/P&gt;
&lt;P&gt;Christian started off the evening with an excellent talk on the realities we are faced with when building web services. Unlike most talks on this topic, Christian actually provided some of the answers and one pretty good answer in particular.&lt;/P&gt;
&lt;P&gt;The biggest problem that plagues the .NET community to date when build Service Orientated Architecture (SOA) applications is the lack of defined process. While SOA is not a new concept, it certainly is a new term and for most, a whole new way of thinking. In the same way that patterns provide standard ways of implementing the same old problems, SOA provides a standard way of architecting applications in order to minimise coupling and maximise interoperability.&lt;/P&gt;
&lt;P&gt;Everyone loves the ideas and design paradigms proposed by SOA and everyone can visualise without too much hesitation the advantages and benefits of the final result. Not everyone knows exactly where to start however&amp;#8230;&lt;/P&gt;
&lt;P&gt;Right at the beginning of Christian&amp;#8217;s talk yesterday evening, immediately following his introduction, he alt-tabbed to an eagerly awaiting Visual Studio perched in the background. As he clicked Add Solution, Add New Web Project, my hopes for a serious talk on Web Services were fading fast into the distance. I really thought we were now in for a &amp;#8220;here&amp;#8217;s how you build your web services using Visual Studio&amp;#8221; when all of a sudden my fears were firmly put to rest&amp;#8230; &amp;#8220;This is not how you should build Web Services&amp;#8221;, Christian exclaimed, and now, like the beginning of a good movie, it was time to site back and listen to a man that knows.&lt;/P&gt;
&lt;P&gt;When Visual Studio first arrived back in 2001, everyone as Christian points out was amazed by the new productivity features and of course as &amp;#8220;Web Services&amp;#8221; was fast becoming the next big thing, VS.NET did them too!&lt;/P&gt;
&lt;P&gt;I must admit, I was among the impressed&amp;nbsp;when I realised how easy it was going to be to build Web Services using this new tool which gave developers the power to simply adorn their methods with the attribute &amp;#8220;[WebMethod]&amp;#8221; and have Visual Studio create all the necessary code, Schema and WSDL for you. Within minutes, literally, you could build an application that could communicate using XML and SOAP over HTTP.&lt;/P&gt;
&lt;P&gt;It was only when you start to look at a little deeper that you realise that like most things in Visual Studio, this was a &amp;#8220;play&amp;#8221; implementation of an architecture, great for demos, useless in reality.&lt;/P&gt;
&lt;P&gt;The first problem with [WebMethod] is that you are restricted to the RequestResponse pattern. Get something in, process and send something back out the way it came. HTTP is a perfect transport for such an architecture as it is after all a RequestResponse transport.&lt;/P&gt;
&lt;P&gt;At this point Christian asked a question of the audience which I shall file away for later use and one which reminded me of Eric Rudder&amp;#8217;s recent talk in Dublin when asked about open source software. Eric pointed to a table at the back of the room filled with bottles of water. &amp;#8220;Why do we buy bottles of water, when there is perfectly good drinking water available free from the tap downstairs?&amp;#8221; Christian asked &amp;#8220;When you send a letter in the post, do you wait by the postbox for a reply?&amp;#8221;&lt;/P&gt;
&lt;P&gt;How could you architect your applications using the RequestResponse pattern having heard this analogy? Problem with Visual Studio number one&amp;#8230;&lt;/P&gt;
&lt;P&gt;Next we should look at another important aspect of application design, maintainability. The value of software is proportional to the business benefit it provides and is inversely proportional to effort required to make modifications.&lt;/P&gt;
&lt;P&gt;As most experienced Visual Studio developers will tell you, Visual Studio is all about productivity. It provides an unparalleled ability to efficiently produce software which provides the business benefit and hence the value I spoke about. What most experienced Visual Studio developers will also tell you is that it provides absolutely no assistance in minimising the impact of later change. This in my opinion negates all the productivity benefits and hence renders most of the toolset useless or as I like to put it, the tools are for &amp;#8220;play&amp;#8221; only.&lt;/P&gt;
&lt;P&gt;The problem here is routed in the fact that Visual Studio is generating code for you. This quickstart is absolutely fantastic and works perfectly until you realise that something is missing or the design isn&amp;#8217;t exactly what you require. The code generation templates are fixed and you have a take or leave it scenario.&lt;/P&gt;
&lt;P&gt;Building WebServices using the Visual Studio approach falls victim to this problem and everything that is done for you under the covers is going to come back and bite you as your requirements move from those of the demo world to those of the production or real world.&lt;/P&gt;
&lt;P&gt;Let&amp;#8217;s examine what happens when you add [WebMethod] to a C# or VB.NET method:&lt;/P&gt;
&lt;P&gt;Without even thinking about it, you are automatically now using the RequestResponse pattern. Maybe you didn&amp;#8217;t even notice, but you are now effectively building a Remote Procedure Call (RPC) web service. Is that what you wanted? Is your design being guided by the implementation tool?&lt;/P&gt;
&lt;P&gt;Next the XML Schema and the WSDL are generated for you. But have you had an opportunity to specify whether types are to be shared between methods? Will your Customer class in one method be generated on the client side into a difference namespace from that same Customer class in another method? What will your client proxies look like and will they use clumsy arrays or useful collections for lists? Do you have any opportunity to control what is produced? Not really&amp;#8230;&lt;/P&gt;
&lt;P&gt;What about Schema validation on received messages or do we just let the deserializer throw exceptions? And aren&amp;#8217;t exceptions expensive? Wouldn&amp;#8217;t this be a prime target for a denial of service attack? Can we even examine the XML that was received? Not really&amp;#8230;&lt;/P&gt;
&lt;P&gt;And when version 2 comes along, what are we going to do about backward compatibility?&lt;/P&gt;
&lt;P&gt;The list goes on&amp;#8230;&lt;/P&gt;
&lt;P&gt;If we now look at what has been produced for us by VS.NET, it doesn&amp;#8217;t take a genius to realise that we have simply created a XML based interface to an existing Domain Model. This is not Service Orientation or even close.&lt;/P&gt;
&lt;P&gt;Service Orientation is about shifting your thinking from an Object Orientated Domain Model to a new architecture which is quite different. This shift is analogous to the shift in mindset from procedural to OO programming and design.&lt;/P&gt;
&lt;P&gt;The question comes back then, is Visual Studio assisting us with this process and mind shift or is it actually hampering the process and reducing our options?&lt;/P&gt;
&lt;P&gt;Christian obviously felt, as I do, that the latter is the case and has been thinking along with his colleagues at &lt;A href="http://www.thinktecture.com/"&gt;ThinkTecture&lt;/A&gt; about ways to help developers overcome these early stumbling blocks. All this thinking has resulted in one of the most important tools available today for the building of real world web service applications. Christian presented &amp;#8220;&lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;Contract First&lt;/A&gt;&amp;#8221; a tool and a methodology for the design and flexible generation of the some of the components required to build real world web services.&lt;/P&gt;
&lt;P&gt;I&amp;#8217;m not going to go into the details of &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;Contract First&lt;/A&gt; here, as you can &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/WSCF04Walkthrough1.html"&gt;read all about it&lt;/A&gt; and even &lt;A href="http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html"&gt;download&lt;/A&gt; the tool for free from the &lt;A href="http://www.thinktecture.com/"&gt;ThinkTecture&lt;/A&gt; website.&lt;/P&gt;
&lt;P&gt;Contract first, &lt;A href="http://weblogs.asp.net/cweyer/archive/2004/12/14/288148.aspx"&gt;Christian&lt;/A&gt; wanted Guinness second and believe me Christian has plenty to say about that also&amp;#8230;&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/284.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>TestDriven.NET 1.0 Released</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx</link><pubDate>Tue, 30 Nov 2004 12:42:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/276.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/30/276.aspx#Feedback</comments><slash:comments>168</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/276.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/276.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://www.testdriven.net/"&gt;TestDriven.NET,&lt;/A&gt; a handy addin for Visual Studio which allows you to run unit tests from pretty much anywhere from&amp;nbsp;within VS.NET was released as version 1.0 yesterday...&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/276.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>B.AG Blog Aggregator Goes Live</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx</link><pubDate>Mon, 29 Nov 2004 17:51:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/273.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/29/273.aspx#Feedback</comments><slash:comments>73</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/273.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/273.aspx</trackback:ping><description>&lt;P&gt;When we launched &lt;A href="http://www.developers.ie/"&gt;INDA&lt;/A&gt; at &lt;A href="http://www.developers.ie/"&gt;www.developers.ie&lt;/A&gt; a couple of weeks ago, we integrated the &lt;A href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=e99fccb3-1a8c-42b5-90ee-348f6b77c407"&gt;.Text&lt;/A&gt; blog engine so that our members (most of whom were new to blogging)&amp;nbsp;could have their own blogs on the site. I also created a blog there, but soon I was getting frustrated by having to cross post blog entries both on my own blog here at &lt;A HREF=" "&gt;www.styledesign.biz &lt;/A&gt;and on &lt;A href="http://www.developers.ie/"&gt;www.developers.ie&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;I wanted a simple blog aggregagtor, so that I could automatically pull my most recent posts onto the site without having to cross post. It was during my search for a suitable piece of software that I came across &lt;A href="http://www.enderminh.com/blog/"&gt;Minh T. Nguyen&lt;/A&gt;'s &lt;A href="http://www.enderminh.com/netdev/"&gt;.NET Blog Aggregator&lt;/A&gt; (&lt;A href="http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/10/219.aspx"&gt;which I blogged about previously&lt;/A&gt;) and decided that if there was nothing available for download, I would write my own...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;&lt;STRONG&gt;B&lt;/STRONG&gt;log &lt;STRONG&gt;AG&lt;/STRONG&gt;gregator&lt;/A&gt; &lt;IMG src="http://www.styledesign.biz/images/portfolio/bag/baglogo96x70.gif" align=absMiddle&gt; was born!&lt;/P&gt;
&lt;P&gt;Running stand-alone or on top of &lt;A href="http://www.gotdotnet.com/Community/Workspaces/workspace.aspx?id=e99fccb3-1a8c-42b5-90ee-348f6b77c407"&gt;.Text&lt;/A&gt; &lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;B.AG&lt;/A&gt; pulls content from subscribed RSS feeds and presents the combined content in a&amp;nbsp;sorted, categorised format. I will more than likely blog about the internal design at some point, but for now, you can see &lt;A href="http://www.styledesign.biz/portfolio_bag.aspx"&gt;B.AG&lt;/A&gt; (Beta 1) in action at &lt;A href="http://www.developers.ie/blogs/"&gt;http://www.developers.ie/blogs/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you would like to incorporate &lt;IMG src="http://www.styledesign.biz/images/portfolio/bag/bag88x31.gif" align=absMiddle&gt; into your site... just let me know. Marcus&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/273.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>MSN Search Gets My Vote</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/13/230.aspx</link><pubDate>Sat, 13 Nov 2004 01:24:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/13/230.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/230.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/13/230.aspx#Feedback</comments><slash:comments>113</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/230.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/230.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://www.irishdev.com/blogs/jbrennan/"&gt;John&lt;/A&gt; &lt;A href="http://www.irishdev.com/blogs/jbrennan/archive/2004/11/12/270.aspx"&gt;blogs&lt;/A&gt; about the availability of &lt;A href="http://beta.search.msn.com/"&gt;MSN search&lt;/A&gt; and&amp;nbsp;mentions that it will take something&amp;nbsp;special before he'll move away from &lt;A href="http://www.google.com"&gt;Google&lt;/A&gt;. I've been watching MSN Search spider my web sites over the last couple of months and yesterday when I saw the beta announcement, I was thinking exactly the same thing as John. MS are wasting their time, why would anyone use anything other than &lt;A href="http://www.google.com/"&gt;Google&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;24 hours later I'm completely sold.&lt;/P&gt;
&lt;P&gt;MSN Search knows what I mean when I &lt;A href="http://beta.search.msn.com/results.aspx?q=.NET&amp;amp;FORM=QBHP"&gt;type ".NET"&lt;/A&gt; (including the dot). &lt;A href="http://www.ineta.org/"&gt;INETA&lt;/A&gt; is listed in 1st position, Information about Microsoft .NET in 2nd... Now I don't have to limit searches for .NET code examples by language like C# or VB.NET. Sure, with &lt;A href="http://www.google.com/"&gt;Google&lt;/A&gt; you could type ".Net" including the quotes and &lt;A href="http://www.google.com/"&gt;Google&lt;/A&gt; would make sure ".Net" appeared on the result page... but how many web sites are there that include the top-level domain .net? Answer: Too many...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://beta.search.msn.com/results.aspx?q=Marcus+Mac+Innes&amp;amp;FORM=QBRE"&gt;Type "Marcus Mac Innes"&lt;/A&gt; (me) and my blog is listed in 1st position. &lt;A href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;q=Marcus+Mac+Innes&amp;amp;btnG=Search"&gt;Type that into Google&lt;/A&gt; and my aggregated blog on Artima.net is listed first, my blog is actually listed&amp;nbsp;in 5th position. 2nd, 3rd and 4th positions are taken by several of my past posts&amp;nbsp;which appeared on sites&amp;nbsp;like TechEdBloggers.net. Clearly MSN have got the algorithm right!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://beta.search.msn.com/results.aspx?q=flight+from+dublin+to+london&amp;amp;FORM=QBRE"&gt;Type "flight from dublin to london&lt;/A&gt;"&amp;nbsp;and as you would expect the national Irish airline &lt;A href="http://www.aerlingus.com/"&gt;AerLingus.com&lt;/A&gt; is listed 1st. &lt;A href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;q=flight+from+dublin+to+london&amp;amp;btnG=Search"&gt;Type that into Google&lt;/A&gt; and I get a host of generic CheapFlights.com equivalents none of which are actually useful for booking a proper flight from dublin to london.&lt;/P&gt;
&lt;P&gt;No matter what I enter, I am getting relevant results sets which are more appropriate than Google's results.&lt;/P&gt;
&lt;P&gt;As I said above, I'm completely sold and I bet you will be too. Give it a try and let me know what you think...&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/230.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>WSE and Setting up WS-Policy</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/11/221.aspx</link><pubDate>Thu, 11 Nov 2004 08:51:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/11/221.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/221.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/11/221.aspx#Feedback</comments><slash:comments>46</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/221.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/221.aspx</trackback:ping><description>If you have ever looked at setting up WS-Policy, then you will understand that it can be quite tricky to put all the parts together. Thankfully &lt;A href="http://dotnet.org.za/stuartg/"&gt;Stuart Gunter&lt;/A&gt;&amp;nbsp;has put together a &lt;A href="http://dotnet.org.za/stuartg/articles/6277.aspx"&gt;very nice article&lt;/A&gt; on introducing, setting up and testing WS-Policy. A great article by any standard, well done Stuart!&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/221.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Marcus Mac Innes</dc:creator><title>.NET Blog Aggregator</title><link>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/10/219.aspx</link><pubDate>Wed, 10 Nov 2004 09:44:00 GMT</pubDate><guid>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/10/219.aspx</guid><wfw:comment>http://www.styledesign.biz/weblogs/macinnesm/comments/219.aspx</wfw:comment><comments>http://www.styledesign.biz/weblogs/macinnesm/archive/2004/11/10/219.aspx#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://www.styledesign.biz/weblogs/macinnesm/comments/commentRss/219.aspx</wfw:commentRss><trackback:ping>http://www.styledesign.biz/weblogs/macinnesm/services/trackbacks/219.aspx</trackback:ping><description>&lt;P&gt;Just came across this great&amp;nbsp;&lt;A href="http://www.enderminh.com/netdev/default.aspx"&gt;.NET blog aggregator&lt;/A&gt;. If you've got a .NET blog, you can add yours &lt;A href="http://www.enderminh.com/netdev/addblog.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src ="http://www.styledesign.biz/weblogs/macinnesm/aggbug/219.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>