<?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>morty@home - Architecture</title>
    <link>http://blog.morty.info/</link>
    <description>The Future is a Mix of Violet and Blue</description>
    <language>en-us</language>
    <copyright>morty</copyright>
    <lastBuildDate>Sat, 11 Oct 2008 10:19:31 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>spam@morty.info</managingEditor>
    <webMaster>spam@morty.info</webMaster>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Reading around the PDC site for some scoops into the future, I’m pleased to see one
session covering how the CLR vNext will support side-by-side versioning of CLRs within
the same process.
</p>
        <p>
This may seem like a rather obscure requirement at first, but keep in mind we now
have CLR v1.0, CLR v1.1, CLR v2.0 and the new CLR v2.0 shipped with .Net Framework
3.5 SP1. Luckily these CLRs and their libraries are largely compatible. However, over
the years of .Net  the industry has written countless of components that they
probably expect to be able to use for some time to come, even in-process. As our development
tools and new frameworks keep pushing us up the stack to the next version of .Net,
we will probably see some issues soon. 
</p>
        <p>
Hopefully, this feature goes beyond providing support for multiple Silverlight version
within the same browser process, and enables us to use CLR 2.0 components from CLR
vFuture. If this is the case, I'm looking forward to see how they will be providing
interoperability, or if we’ll have to use an in-proc WCF channel for this purpose.
</p>
        <p>
Maybe this may even be a hint that Microsoft is not expecting backwards compatibility
between the current and future CLRs, and their libraries.
</p>
      </body>
      <title>CLR vNext with side-by-side support</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</link>
      <pubDate>Sat, 11 Oct 2008 10:19:31 GMT</pubDate>
      <description>&lt;p&gt;
Reading around the PDC site for some scoops into the future, I’m pleased to see one
session covering how the CLR vNext will support side-by-side versioning of CLRs within
the same process.
&lt;/p&gt;
&lt;p&gt;
This may seem like a rather obscure requirement at first, but keep in mind we now
have CLR v1.0, CLR v1.1, CLR v2.0 and the new CLR v2.0 shipped with .Net Framework
3.5 SP1. Luckily these CLRs and their libraries are largely compatible. However, over
the years of .Net&amp;nbsp; the industry has written countless of components that they
probably expect to be able to use for some time to come, even in-process. As our development
tools and new frameworks keep pushing us up the stack to the next version of .Net,
we will probably see some issues soon. 
&lt;/p&gt;
&lt;p&gt;
Hopefully, this feature goes beyond providing support for multiple Silverlight version
within the same browser process, and enables us to use CLR 2.0 components from CLR
vFuture. If this is the case, I'm looking forward to see how they will be providing
interoperability, or if we’ll have to use an in-proc WCF channel for this purpose.
&lt;/p&gt;
&lt;p&gt;
Maybe this may even be a hint that Microsoft is not expecting backwards compatibility
between the current and future CLRs, and their libraries.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=8db3563d-8881-4f36-a93f-a16ac1bf54c3</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
PDC is approaching rapidly and Microsoft is opening up its communication around the
next wave of technologies; one thing I believe to be particularly interesting is <a href="http://download.microsoft.com/download/5/9/B/59B74A2A-245D-4304-802E-E0A0800FACD3/Dublin__NET_4_overview.docx">Codename
Dublin</a>.
</p>
        <p>
This technology supplements Windows with much needed application platform components
to enhance the WCF and WF design experience.  Among other things it includes
infrastructure services for message correlation and forwarding, content-based routing
and transaction compensation.
</p>
        <p>
I guess you can look at WCF and WF as frameworks and Dublin as infrastructure services
around those frameworks.
</p>
        <p>
The Dublin release will follow the release of .Net Framework v4.0 and Visual Studio
2010.
</p>
      </body>
      <title>Windows Server “Dublin” technologies</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</link>
      <pubDate>Mon, 06 Oct 2008 16:31:02 GMT</pubDate>
      <description>&lt;p&gt;
PDC is approaching rapidly and Microsoft is opening up its communication around the
next wave of technologies; one thing I believe to be particularly interesting is &lt;a href="http://download.microsoft.com/download/5/9/B/59B74A2A-245D-4304-802E-E0A0800FACD3/Dublin__NET_4_overview.docx"&gt;Codename
Dublin&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This technology supplements Windows with much needed application platform components
to enhance the WCF and WF design experience.&amp;nbsp; Among other things it includes
infrastructure services for message correlation and forwarding, content-based routing
and transaction compensation.
&lt;/p&gt;
&lt;p&gt;
I guess you can look at WCF and WF as frameworks and Dublin as infrastructure services
around those frameworks.
&lt;/p&gt;
&lt;p&gt;
The Dublin release will follow the release of .Net Framework v4.0 and Visual Studio
2010.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=1d01d5e8-9351-4322-97e2-99ea7a75bafb</comments>
      <category>Architecture</category>
      <category>Dublin</category>
      <category>Indigo</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s a great day for cross platform .Net as <a href="http://www.mono-project.com">Mono
v2.0</a> is released. Now fully stocked with <a href="http://www.mono-project.com/ADO.NET">ADO.NET
2.0</a> / <a href="http://www.mono-project.com/ASP.NET">ASP.NET 2.0</a> / <a href="http://www.mono-project.com/WinForms">Windows
Forms 2.0</a> as well as a C# 3.0 compiler and LINQ support. In other words, there
are also some .Net 3.5 bits in there.
</p>
        <p>
It also ships with a nice collection of ADO.NET providers that are not available in
the Microsoft distribution, as well as the usual non-Windows native goodies.
</p>
        <p>
Interesting to see that they are also bundling the <a href="http://www.itu.dk/research/c5/">C5
Generic Collection</a> library, indicating that this is probably an area where the
base class libraries need more work, features and standardization.
</p>
      </body>
      <title>Mono v2.0 is out</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</link>
      <pubDate>Mon, 06 Oct 2008 14:12:05 GMT</pubDate>
      <description>&lt;p&gt;
It’s a great day for cross platform .Net as &lt;a href="http://www.mono-project.com"&gt;Mono
v2.0&lt;/a&gt; is released. Now fully stocked with &lt;a href="http://www.mono-project.com/ADO.NET"&gt;ADO.NET
2.0&lt;/a&gt; / &lt;a href="http://www.mono-project.com/ASP.NET"&gt;ASP.NET 2.0&lt;/a&gt; / &lt;a href="http://www.mono-project.com/WinForms"&gt;Windows
Forms 2.0&lt;/a&gt; as well as a C# 3.0 compiler and LINQ support. In other words, there
are also some .Net 3.5 bits in there.
&lt;/p&gt;
&lt;p&gt;
It also ships with a nice collection of ADO.NET providers that are not available in
the Microsoft distribution, as well as the usual non-Windows native goodies.
&lt;/p&gt;
&lt;p&gt;
Interesting to see that they are also bundling the &lt;a href="http://www.itu.dk/research/c5/"&gt;C5
Generic Collection&lt;/a&gt; library, indicating that this is probably an area where the
base class libraries need more work, features and standardization.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=33c100eb-26c4-4cb6-9f01-bcefd8538bca</comments>
      <category>Architecture</category>
      <category>Mono</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve just noticed a nice little article about the importance of Mono (.Net on other
platforms). Mono is one of my favorite open source projects, not to mention the significance
I feel it has in the .Net domain. Have a <a href="http://www.kudzuworld.com/blogs/tech/Mono.no.aspx">look<a>. 
</a></a></p>
      </body>
      <title>The Importance of Mono</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</link>
      <pubDate>Tue, 10 Apr 2007 20:23:53 GMT</pubDate>
      <description>&lt;p&gt;
I’ve just noticed a nice little article about the importance of Mono (.Net on other
platforms). Mono is one of my favorite open source projects, not to mention the significance
I feel it has in the .Net domain. Have a &lt;a href="http://www.kudzuworld.com/blogs/tech/Mono.no.aspx"&gt;look&lt;a&gt;. 
&lt;/p&gt;
&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=e582fa7f-cc39-4794-a0cd-40c9a7c6b3e6</comments>
      <category>Architecture</category>
      <category>Mono</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s time for TechEd Europe again!
</p>
        <p>
I’m doing a session on BizTalk Server 2004 and Indigo where I will go through some
of the scenarios where these technologies can work together to offer some very interesting
solutions. There will be several demos showing off the latest bits of the prototype
adapter as well as a little low-level section on how the adapter was developed at
the end. 
</p>
        <p>
If you find this topic interesting then drop by Room 3A on Thursday 7th at 18.15! 
</p>
      </body>
      <title>TechEd 2005 Europe</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</link>
      <pubDate>Mon, 04 Jul 2005 06:54:22 GMT</pubDate>
      <description>&lt;p&gt;
It’s time for TechEd Europe again!
&lt;/p&gt;
&lt;p&gt;
I’m doing a session on BizTalk Server 2004 and Indigo where I will go through some
of the scenarios where these technologies can work together to offer some very interesting
solutions. There will be several demos showing off the latest bits of the prototype
adapter as well as a little low-level section on how the adapter was developed at
the end. 
&lt;/p&gt;
&lt;p&gt;
If you find this topic interesting then drop by Room 3A on Thursday 7th at 18.15! 
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=815d9dfa-1480-479a-bf4e-2a35e090d410</comments>
      <category>Architecture</category>
      <category>BizTalk Server</category>
      <category>Indigo</category>
      <category>Talks</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=6465a916-c80c-48b6-88b8-3cb29db46131</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810/">WS-Addressing</a>,
a vital piece of XML Web Services infrastructure, has just been submitted to the <a href="http://www.w3.org/">W3C</a>.
</p>
        <p>
With <a href="http://www.oasis-open.org/committees/wss">WS-Security</a> being an official <a href="http://www.oasis-open.org">OASIS</a> standard,
and WS-Addressing entering the <a href="http://www.w3.org/Consortium/Process">W3C
standardization process</a>, we may soon be looking at the first stable set of advanced
web services infrastructure. 
</p>
        <p>
These two specifications form the foundation of the <a href="http://msdn.microsoft.com/webservices/building/wse/">Microsoft
Web Services Enhancements</a> toolkit's functionality. Perhaps we will soon say goodbye
to backwards incompatibility and short support lifecycles in this particular area.
</p>
        <p>
As always, it is great fun to follow the advances.
</p>
      </body>
      <title>WS-Addressing makes its way to W3C</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</link>
      <pubDate>Tue, 10 Aug 2004 20:23:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810/"&gt;WS-Addressing&lt;/a&gt;,
a vital piece of XML Web Services infrastructure, has just been submitted to the &lt;a href="http://www.w3.org/"&gt;W3C&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
With &lt;a href="http://www.oasis-open.org/committees/wss"&gt;WS-Security&lt;/a&gt; being an official &lt;a href="http://www.oasis-open.org"&gt;OASIS&lt;/a&gt; standard,
and WS-Addressing entering the &lt;a href="http://www.w3.org/Consortium/Process"&gt;W3C
standardization process&lt;/a&gt;, we may soon be looking at the first stable set of advanced
web services infrastructure. 
&lt;/p&gt;
&lt;p&gt;
These two specifications form the foundation of the &lt;a href="http://msdn.microsoft.com/webservices/building/wse/"&gt;Microsoft
Web Services Enhancements&lt;/a&gt; toolkit's functionality. Perhaps we will soon say goodbye
to backwards incompatibility and short support lifecycles in this particular area.
&lt;/p&gt;
&lt;p&gt;
As always, it is great fun to follow the advances.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=6465a916-c80c-48b6-88b8-3cb29db46131</comments>
      <category>Architecture</category>
      <category>Indigo</category>
      <category>Security</category>
      <category>WSE</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</pingback:target>
      <dc:creator>Morten Abrahamsen</dc:creator>
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=440fb513-9a72-4e70-b44f-ecdb46811313</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve seen a lot of posts about the CLR Hosting support in SQL Server 2005, and
quite a few of them discuss the possibility of moving business code into the SQL Server
engine. I think it is time to establish some balance here, and I’m going to
throw in my 2 cents.
</p>
        <p>
CLR Hosting has a few obvious use cases, but it is in no way a replacement for T-SQL.
If you are writing extended stored procedures then this is definitely the only logical
way to go. It has a much better and safer programming model than the native one. If
you are writing complex algorithms that can severely limit your result set then it
is probably a good idea to put that into the server as well. T-SQL stored procedures
that have massive amounts a non-dataset related code like encryption, conversions
and extensive string manipulations could probably benefit from being completely or
partially turned into managed CLR functions.
</p>
        <p>
If you on the other hand are writing classical dataset manipulation and selection
procedures, then T-SQL is a language that is highly optimized and specifically designed
for just that purpose. You should keep in mind that managed stored procedures still
use T-SQL to interact with the relational database engine; look at some code samples!
</p>
        <p>
If you take a step back, you will see that you are making a decision about when it
makes sense to utilize the database server processor over the application server processor.
Clearly, application servers are a lot cheaper and usually a lot easier to scale out.
At the end of the day, in any well designed distributed architecture, the database
server is going to be your bottleneck. It would probably make sense to keep whatever
processing you can away from that precious resource.
</p>
        <p>
However, if you are using an algorithm to determine what records to return to the
client, and you expect that it may severely limit the amount of records returned to
the client, then it probably makes sense to put it on the database server. Returning
2GB of data to the application server, and then filtering away 98% before returning
it to the client may be a massive waste of resources. You’ll have to make an
informed tradeoff decision.
</p>
        <p>
There are no absolute rules, but you will need to evaluate every single case for yourself.
My advice is to stick with the way you’ve been writing applications with SQL
Server 2000 and keep the T-SQL stored procedures the way they are. At least then you
will know that whenever you utilize managed code in the SQL Server, you’ve made
a conscious tradeoff rather then blindly following the ever popular anti T-SQL movement.
Regarding business logic, keep it on your application tier where it has been living
so happily over the last few years. Once again, if you do decide to move it to the
SQL Server make sure it you’ve made a well informed decision that works with
both your application and your business requirements.
</p>
        <p>
Leave your defaults the way they are; it’s an evolution not a revolution.
</p>
      </body>
      <title>SQL Server 2005: CLR Hosting – Establishing Balance</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</link>
      <pubDate>Wed, 14 Jul 2004 14:30:06 GMT</pubDate>
      <description>&lt;p&gt;
I&amp;#8217;ve seen a lot of posts about the CLR Hosting support in SQL Server 2005, and
quite a few of them discuss the possibility of moving business code into the SQL Server
engine. I think it is time to establish some balance here, and I&amp;#8217;m going to
throw in my 2 cents.
&lt;/p&gt;
&lt;p&gt;
CLR Hosting has a few obvious use cases, but it is in no way a replacement for T-SQL.
If you are writing extended stored procedures then this is definitely the only logical
way to go. It has a much better and safer programming model than the native one. If
you are writing complex algorithms that can severely limit your result set then it
is probably a good idea to put that into the server as well. T-SQL stored procedures
that have massive amounts a non-dataset related code like encryption, conversions
and extensive string manipulations could probably benefit from being completely or
partially turned into managed CLR functions.
&lt;/p&gt;
&lt;p&gt;
If you on the other hand are writing classical dataset manipulation and selection
procedures, then T-SQL is a language that is highly optimized and specifically designed
for just that purpose. You should keep in mind that managed stored procedures still
use T-SQL to interact with the relational database engine; look at some code samples!
&lt;/p&gt;
&lt;p&gt;
If you take a step back, you will see that you are making a decision about when it
makes sense to utilize the database server processor over the application server processor.
Clearly, application servers are a lot cheaper and usually a lot easier to scale out.
At the end of the day, in any well designed distributed architecture, the database
server is going to be your bottleneck. It would probably make sense to keep whatever
processing you can away from that precious resource.
&lt;/p&gt;
&lt;p&gt;
However, if you are using an algorithm to determine what records to return to the
client, and you expect that it may severely limit the amount of records returned to
the client, then it probably makes sense to put it on the database server. Returning
2GB of data to the application server, and then filtering away 98% before returning
it to the client may be a massive waste of resources. You&amp;#8217;ll have to make an
informed tradeoff decision.
&lt;/p&gt;
&lt;p&gt;
There are no absolute rules, but you will need to evaluate every single case for yourself.
My advice is to stick with the way you&amp;#8217;ve been writing applications with SQL
Server 2000 and keep the T-SQL stored procedures the way they are. At least then you
will know that whenever you utilize managed code in the SQL Server, you&amp;#8217;ve made
a conscious tradeoff rather then blindly following the ever popular anti T-SQL movement.
Regarding business logic, keep it on your application tier where it has been living
so happily over the last few years. Once again, if you do decide to move it to the
SQL Server make sure it you&amp;#8217;ve made a well informed decision that works with
both your application and your business requirements.
&lt;/p&gt;
&lt;p&gt;
Leave your defaults the way they are; it&amp;#8217;s an evolution not a revolution.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=440fb513-9a72-4e70-b44f-ecdb46811313</comments>
      <category>Architecture</category>
      <category>SQL Server 2005</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p xmlns="http://www.w3.org/1999/xhtml">
I talked about Message Oriented Architectures at the <a href="http://www.nnug.no">Norwegian
.Net User Group</a> (NNUG) on the 27th of May in Oslo. This was my second speaker
appearance at NNUG, and this session was a very different experience from my last
one. I found it a lot more challenging to talk about architecture than talking about
dynamic SQL vs. stored procedures. It’s really hard to decide on what slides
and bullet points to include when delivering an introduction to such a wide and exiting
topic.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
It was fun to share my thoughts on XML and modern messaging, loosely coupled designs
and asynchronous messaging. I ended the talk with some slides on GXA and the XML message
bus. After the presentation we had a very interesting discussion about some issues
with asynchronous designs.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
I’ve made the slide deck available <a href="http://home.online.no/~mabraha/media/morty-moa.zip">here</a> if
anyone is interested.
</p>
      </body>
      <title>Back at The Norwegian .Net User Group</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</link>
      <pubDate>Fri, 30 May 2003 18:21:46 GMT</pubDate>
      <description>&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
I talked about Message Oriented Architectures at the &lt;a href="http://www.nnug.no"&gt;Norwegian
.Net User Group&lt;/a&gt; (NNUG) on the 27th of May in Oslo. This was my second speaker
appearance at NNUG, and this session was a very different experience from my last
one. I found it a lot more challenging to talk about architecture than talking about
dynamic SQL vs. stored procedures. It&amp;#8217;s really hard to decide on what slides
and bullet points to include when delivering an introduction to such a wide and exiting
topic.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
It was fun to share my thoughts on XML and modern messaging, loosely coupled designs
and asynchronous messaging. I ended the talk with some slides on GXA and the XML message
bus. After the presentation we had a very interesting discussion about some issues
with asynchronous designs.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
I&amp;#8217;ve made the slide deck available &lt;a href="http://home.online.no/~mabraha/media/morty-moa.zip"&gt;here&lt;/a&gt; if
anyone is interested.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=e8fd54d8-8427-4f61-81aa-cbe4118e9c59</comments>
      <category>Architecture</category>
      <category>Talks</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p xmlns="http://www.w3.org/1999/xhtml">
Messaging as an application design pattern has been around in enterprise applications
for decades, but recently it has been getting a lot of community press as web services
are starting to roll out and service oriented architectures are climbing the preferred
design ladder.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
One of the most interesting aspects of a message oriented programming is the inherent
ability to approach an asynchronous design. Yet, for some reason the transition from
synchronous operations seem to be very hard. I suspect that it is not necessarily
the added technical complexity, but rather the fear of loosing control that is the
primary obstacle. Now that we are moving towards factoring our systems into services
this is a situation we must learn to master.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
Looking at the way business transactions are done today, and the way they have been
done for ages, we can easily see that quite a few of them are asynchronous. Either
it is a matter of message exchange via regular mail, fax, e-mail or some messaging
product like Microsoft BizTalk Server. When for instance a user compiles a set of
requests into an order with a procurement system the transaction is committed long
before the order has reached the supplier, or even before the order has left the procurement
system. In this particular scenario we are used to an asynchronous interaction, and
it is indeed the only way.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
Keeping in mind the before mentioned example it is strange that we seem to be unable
to apply the same pattern within our own applications. I guess to some extent it is
because we feel that we are the masters of our own system and that we have the ability
and the right to perform synchronous operations, and that we should do so either to
uphold consistency or to provide accurate and immediate user responses. Just because
we can!
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
Even though a synchronous design may provide you with the comforting feeling of control,
as business processes become more complex and the amount of users increase this will
prove to be a troublesome preference. As we start refactoring our applications into
services and begin to enjoy the dynamic nature of GXA it will be unreasonable to except
a synchronous processing pattern for a variety of different reasons; some concerning
processing time, load balancing, transactional boundaries, internal system restrictions
and manual processing tasks just to name a few.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
I guess what I am saying is that we need to learn to let go, to be able to trust individual
part of our own systems as well as external systems and embrace the black box nature
of services. It’s important to note that asynchronous messaging is in no way synonymous
with unreliable messaging. If we are able to do this then at least the fear of loosing
control may fade away, and I guess the immediate user response is a user education
problem.
</p>
      </body>
      <title>Asynchronous Messaging is Dangerous</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</link>
      <pubDate>Fri, 28 Mar 2003 23:30:36 GMT</pubDate>
      <description>&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Messaging as an application design pattern has been around in enterprise applications
for decades, but recently it has been getting a lot of community press as web services
are starting to roll out and service oriented architectures are climbing the preferred
design ladder.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
One of the most interesting aspects of a message oriented programming is the inherent
ability to approach an asynchronous design. Yet, for some reason the transition from
synchronous operations seem to be very hard. I suspect that it is not necessarily
the added technical complexity, but rather the fear of loosing control that is the
primary obstacle. Now that we are moving towards factoring our systems into services
this is a situation we must learn to master.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Looking at the way business transactions are done today, and the way they have been
done for ages, we can easily see that quite a few of them are asynchronous. Either
it is a matter of message exchange via regular mail, fax, e-mail or some messaging
product like Microsoft BizTalk Server. When for instance a user compiles a set of
requests into an order with a procurement system the transaction is committed long
before the order has reached the supplier, or even before the order has left the procurement
system. In this particular scenario we are used to an asynchronous interaction, and
it is indeed the only way.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Keeping in mind the before mentioned example it is strange that we seem to be unable
to apply the same pattern within our own applications. I guess to some extent it is
because we feel that we are the masters of our own system and that we have the ability
and the right to perform synchronous operations, and that we should do so either to
uphold consistency or to provide accurate and immediate user responses. Just because
we can!
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Even though a synchronous design may provide you with the comforting feeling of control,
as business processes become more complex and the amount of users increase this will
prove to be a troublesome preference. As we start refactoring our applications into
services and begin to enjoy the dynamic nature of GXA it will be unreasonable to except
a synchronous processing pattern for a variety of different reasons; some concerning
processing time, load balancing, transactional boundaries, internal system restrictions
and manual processing tasks just to name a few.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
I guess what I am saying is that we need to learn to let go, to be able to trust individual
part of our own systems as well as external systems and embrace the black box nature
of services. It’s important to note that asynchronous messaging is in no way synonymous
with unreliable messaging. If we are able to do this then at least the fear of loosing
control may fade away, and I guess the immediate user response is a user education
problem.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=56695844-ddd9-47af-aac0-4a4b59c3da2c</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p xmlns="http://www.w3.org/1999/xhtml">
The blog community is discussing message oriented programming, service oriented architectures,
and of course SOAP and RPC. It’s great to see so many <a href="http://dotnetweblogs.com/Cweyer/archive/03262003.aspx">smart</a> people <a href="http://www.gotdotnet.com/team/mgudgin/#nn2003-03-21T08:03:21Z">seeing</a> the
potential of these emerging architectural principles!
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
And for what it’s worth; I’m in the messaging camp!
</p>
      </body>
      <title>Messaging is hot</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</link>
      <pubDate>Wed, 26 Mar 2003 17:40:53 GMT</pubDate>
      <description>&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
The blog community is discussing message oriented programming, service oriented architectures,
and of course SOAP and RPC. It’s great to see so many &lt;a href="http://dotnetweblogs.com/Cweyer/archive/03262003.aspx"&gt;smart&lt;/a&gt; people &lt;a href="http://www.gotdotnet.com/team/mgudgin/#nn2003-03-21T08:03:21Z"&gt;seeing&lt;/a&gt; the
potential of these emerging architectural principles!
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
And for what it’s worth; I’m in the messaging camp!
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=99aa18da-226b-43c5-b3d4-a44da937bbc2</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p xmlns="http://www.w3.org/1999/xhtml">
When talking about service oriented architectures we basically talk about three fundamental
pieces. There is a service consumer that queries a service registry or a service broker
for a set of service providers that meet a set of supplied criteria. The service consumer
then selects the preferred service based on a set of preferences, and the required
operations are performed on the selected service.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
The interesting thing about this is the fact that the industry has launched the vision
of a global service registry where one could organize and resolve services using some
sort of global taxonomy. Even though this approach might work for the most rudimentary
of services what is increasingly interesting is the fact that their visionary samples
tend to touch the area of B2B commerce. As most procurement managers know, one of
the most important aspects of any supplier selection process is to establish a reliability
level. When you find a supplier that satisfies your requirements you set up a trade
agreement to ensure that the reliability level is agreed upon and maintained. You
establish a trust relationship. The thing is that I fail to see how this is going
to work with a global registry of supplier-like services. Where is the negotiation
phase that is designed to establish a working business relationship with an implied
two-way trust?
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
My point here is by no means to undermine the importance of a service broker or a
service registry when it in fact is a hugely important part of any service oriented
architecture. It will play an important role in making your application both pluggable
and highly interoperable while effectively enforcing a much needed level of abstraction.
But a successful registry has to be filled with a set of pre-approved services from
a set of suppliers that the customer has established a healthy business relationship
with. Providing such a private registry service makes perfect sense in any B2B architecture.
Trying to solve the complexity of a negotiation phase in a machine readable service
contract doesn’t. 
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
Even though the industry is starting to address this issue, and somewhat shifted the
focus towards local registries, I still see the oversimplified idea of a global registry
in both technical writings and vision documents. Hopefully we will all accept that
there is a reasonable complexity involved in streamlining current business processes.
</p>
      </body>
      <title>Trust and Global Service Registries</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</link>
      <pubDate>Mon, 30 Dec 2002 18:50:08 GMT</pubDate>
      <description>&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
When talking about service oriented architectures we basically talk about three fundamental
pieces. There is a service consumer that queries a service registry or a service broker
for a set of service providers that meet a set of supplied criteria. The service consumer
then selects the preferred service based on a set of preferences, and the required
operations are performed on the selected service.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
The interesting thing about this is the fact that the industry has launched the vision
of a global service registry where one could organize and resolve services using some
sort of global taxonomy. Even though this approach might work for the most rudimentary
of services what is increasingly interesting is the fact that their visionary samples
tend to touch the area of B2B commerce. As most procurement managers know, one of
the most important aspects of any supplier selection process is to establish a reliability
level. When you find a supplier that satisfies your requirements you set up a trade
agreement to ensure that the reliability level is agreed upon and maintained. You
establish a trust relationship. The thing is that I fail to see how this is going
to work with a global registry of supplier-like services. Where is the negotiation
phase that is designed to establish a working business relationship with an implied
two-way trust?
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
My point here is by no means to undermine the importance of a service broker or a
service registry when it in fact is a hugely important part of any service oriented
architecture. It will play an important role in making your application both pluggable
and highly interoperable while effectively enforcing a much needed level of abstraction.
But a successful registry has to be filled with a set of pre-approved services from
a set of suppliers that the customer has established a healthy business relationship
with. Providing such a private registry service makes perfect sense in any B2B architecture.
Trying to solve the complexity of a negotiation phase in a machine readable service
contract doesn’t. 
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Even though the industry is starting to address this issue, and somewhat shifted the
focus towards local registries, I still see the oversimplified idea of a global registry
in both technical writings and vision documents. Hopefully we will all accept that
there is a reasonable complexity involved in streamlining current business processes.
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=3e1c498f-1c6a-4206-a8f4-83a100d343cc</comments>
      <category>Architecture</category>
    </item>
    <item>
      <trackback:ping>http://blog.morty.info/Trackback.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</trackback:ping>
      <pingback:server>http://blog.morty.info/pingback.aspx</pingback:server>
      <pingback:target>http://blog.morty.info/PermaLink.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</pingback:target>
      <dc:creator />
      <wfw:comment>http://blog.morty.info/CommentView.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</wfw:comment>
      <wfw:commentRss>http://blog.morty.info/SyndicationService.asmx/GetEntryCommentsRss?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p xmlns="http://www.w3.org/1999/xhtml">
Globalization has never been an easy aspect of any development project. Lately I’ve
been evaluating the requirements needed to serve users from different time zones,
and at first sight this appeared to be a fairly manageable task. After all it’s just
about storing all your dates in UTC time and then adding or subtracting the time difference
to get the users local time. Or so it seemed…
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
First of all, there is no nice way of retrieving the local time zone from the user’s
browser, short of using Passport and forcing the user to share his or hers time zone
information. So, the user will have to choose the time zone he or she wants to use,
and I guess the time zone support is worth the extra seconds spent during user registration.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
Then, I entered the domain of the DST (daylight savings time/ summer time) monster.
At first I thought it would be fairly easy to find a standard for this, or that Windows
or the .NET framework would be nice enough to provide me with the necessary functionality.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
The .NET framework does not, to my knowledge, support the ability to have different
time zones attached to different threads, like they have with CultureInfo. But Windows
2000 does have a function that allows me to convert a given UTC date to a specific
local time zone, just as long as I supply the time zone information; UTC offset and
DST information. And it’s even possible to extract this information for every registered
time zone from the Windows Registry. It’s not elegant, but it should work as long
as I inserted the time zone conversion in the user interface layer. And I could even
write my own .NET TimeZone implementation.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
This could have been the end of my problems, but of course it wasn’t. As it turns
out DST settings tend to vary between countries, and sometimes between regions within
the same country and time zone. And to top it off, it varies from year to year. I’m
not talking about fairly deterministic things like the last Sunday in March, but more
like the time when Sydney had special DST settings during the Sydney 2000 Olympic
Games and the fact that several countries, including Norway, decided to ignore DST
for several non-consecutive years. I guess that is why Microsoft decided to releases
a time zone editor for Windows. At least I can find comfort in the fact that the European
Union has created a DST standard, but it doesn’t help historic dates much though.
</p>
        <p xmlns="http://www.w3.org/1999/xhtml">
So, I guess the only way to handle this problem is to create a time zone for each
different combination of DST settings and UTC offsets, and collect all the relevant
time zone information in a large table. I was hoping it wouldn’t have to come to that
:(
</p>
      </body>
      <title>Time Zone Headaches</title>
      <guid isPermaLink="false">http://blog.morty.info/PermaLink.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</guid>
      <link>http://blog.morty.info/PermaLink.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</link>
      <pubDate>Wed, 18 Dec 2002 20:43:54 GMT</pubDate>
      <description>&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Globalization has never been an easy aspect of any development project. Lately I’ve
been evaluating the requirements needed to serve users from different time zones,
and at first sight this appeared to be a fairly manageable task. After all it’s just
about storing all your dates in UTC time and then adding or subtracting the time difference
to get the users local time. Or so it seemed…
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
First of all, there is no nice way of retrieving the local time zone from the user’s
browser, short of using Passport and forcing the user to share his or hers time zone
information. So, the user will have to choose the time zone he or she wants to use,
and I guess the time zone support is worth the extra seconds spent during user registration.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
Then, I entered the domain of the DST (daylight savings time/ summer time) monster.
At first I thought it would be fairly easy to find a standard for this, or that Windows
or the .NET framework would be nice enough to provide me with the necessary functionality.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
The .NET framework does not, to my knowledge, support the ability to have different
time zones attached to different threads, like they have with CultureInfo. But Windows
2000 does have a function that allows me to convert a given UTC date to a specific
local time zone, just as long as I supply the time zone information; UTC offset and
DST information. And it’s even possible to extract this information for every registered
time zone from the Windows Registry. It’s not elegant, but it should work as long
as I inserted the time zone conversion in the user interface layer. And I could even
write my own .NET TimeZone implementation.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
This could have been the end of my problems, but of course it wasn’t. As it turns
out DST settings tend to vary between countries, and sometimes between regions within
the same country and time zone. And to top it off, it varies from year to year. I’m
not talking about fairly deterministic things like the last Sunday in March, but more
like the time when Sydney had special DST settings during the Sydney 2000 Olympic
Games and the fact that several countries, including Norway, decided to ignore DST
for several non-consecutive years. I guess that is why Microsoft decided to releases
a time zone editor for Windows. At least I can find comfort in the fact that the European
Union has created a DST standard, but it doesn’t help historic dates much though.
&lt;/p&gt;
&lt;p xmlns="http://www.w3.org/1999/xhtml"&gt;
So, I guess the only way to handle this problem is to create a time zone for each
different combination of DST settings and UTC offsets, and collect all the relevant
time zone information in a large table. I was hoping it wouldn’t have to come to that
:(
&lt;/p&gt;</description>
      <comments>http://blog.morty.info/CommentView.aspx?guid=2ac8dd4a-5372-4bd8-8b5b-d284c9bfbc20</comments>
      <category>Architecture</category>
    </item>
  </channel>
</rss>