<?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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
  <channel>
    <title>Rockford Lhotka - Windows Forms</title>
    <link>http://www.lhotka.net/weblog/</link>
    <description>Creator of the CSLA .NET framework</description>
    <language>en-us</language>
    <copyright>Marimer LLC</copyright>
    <lastBuildDate>Fri, 07 Dec 2012 17:23:33 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>rocky@lhotka.net</managingEditor>
    <webMaster>rocky@lhotka.net</webMaster>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=899d1465-56d6-4cc6-9de5-6eb98d97722c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,899d1465-56d6-4cc6-9de5-6eb98d97722c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,899d1465-56d6-4cc6-9de5-6eb98d97722c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=899d1465-56d6-4cc6-9de5-6eb98d97722c</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Silverlight.net web site is apparently now gone, merged into the broader msdn.com
ecosystem (where it belonged in the first place imo):
</p>
        <p>
          <a title="http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/" href="http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/">http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/</a>
        </p>
        <p>
As we’ve known now for a long time, Silverlight is “dead”. It is in support mode and
will be for a decade.
</p>
        <p>
Just like Windows Forms has been since 2005, and WPF is now as well (do you really
think Microsoft is going to divert money from WinRT to do <em>anything</em> with WPF
at this point??? If so I’ve got this beachfront property for sale…).
</p>
        <blockquote>
          <p>
            <em>As an aside, ASP.NET Web Forms also “died” in 2005, but recently got a major infusion
of money in .NET 4.5 – showing that even a “dead” technology can receive a big cash
investment sometimes – though it still isn’t clear that this will be enough to breath
any new life into Web Forms for most organizations. I suspect it is more likely that
this recent investment will just allow organizations with massive Web Forms sites
to keep them limping along for another 5-10 years.</em>
          </p>
        </blockquote>
        <p>
If a technology is defined as “dead” when its vendor stops enhancing it and starts
maintaining it while they put most of their money into the future, then I must say
that I’ve spent pretty much my entire ~25 year career working on dead technologies.
And it has been fun! <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Silverlight-is-dead_9AEB/wlEmoticon-smile_2.png" /></p>
        <p>
Although some of us tech geeks like to jump to the next <em>potential</em> upcoming
thing, the people who actually fund software projects rarely want to accept that kind
of risk. They generally <em>prefer</em> to build applications on stable technology.
Most stable technology is “dead” or “dying” based on this idea of “live” technology
being rapidly changing and evolving.
</p>
        <p>
Obviously there’s a fine line here. 
</p>
        <p>
Target stable technology that is too old and you really are in trouble. Windows Forms
is an example of this, because its underlying technology has no migration path to
a WinRT future. Although a <em>lot</em> of organizations have massive investments
in Windows Forms, I would hope that they’d shy away from starting new development
on this extremely stable, but now too old, technology.
</p>
        <p>
Target stable technology that is new, but old enough to be stable and life is generally
pretty good. WPF and Silverlight (for smart clients, not for cross-platform RIA) are
examples of this. The reason is that these technologies (especially Silverlight) have
a good migration story to a WinRT future. A lot of organizations are investing in
WPF, and that’s good. But I’d be shocked if Microsoft invests anything in WPF going
forward – its future is the one Windows Forms has enjoyed since 2005 – stable maintenance
of the technology. <em>Perfect</em> for building critical business apps. Organizations
also have large investments in Silverlight, and as long as the intent was smart client
development (not cross-platform RIA) it seems to me that they are in the exact same
place as everyone using WPF. Arguably better, because Silverlight is much closer to
WinRT than WPF.
</p>
        <p>
          <a title="http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx" href="http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx">http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx</a>
        </p>
        <p>
If you are using Silverlight for cross-platform rich web development, then I do agree
that the news is not good. The current alternative appears to be HTML 5, though it
is also clear that this is an expensive alternative with an unsure future. Just like
every other silver bullet to write once and run anywhere, I think you have to go into
such a venture expecting a lot of cost and pain. There’s no widely successful example
in the history of computing that indicates otherwise…
</p>
        <p>
The final option is to target “live” technologies. You know, the ones where vendors <em>are</em> dumping
huge amounts of money, and where the technology and platform are changing rapidly.
Things like HTML 5 and WinRT are examples of this. As a tech geek I <em>love</em> it
when organizations want to do this sort of thing, because the challenge is high and
we all get to learn a lot of new stuff. Of course the development costs are also quite
high because we’re getting paid to learn this new stuff. And the overall costs for
the software are high because the technology/platform isn’t stable and the app probably
needs to be rewritten (in whole or part) every few months to deal with platform changes.
</p>
        <p>
Some organizations are willing to accept the costs and inconvenience associated with
using “live” technologies. But most organizations don’t have the time or money or
risk tolerance, and are far better off targeting “dead” technologies like WPF and
Silverlight. They just need to be careful to have strategic migration plans so they
can get off those technologies before they reach the point of where Windows Forms
is today.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=899d1465-56d6-4cc6-9de5-6eb98d97722c" />
      </body>
      <title>Silverlight is &amp;ldquo;dead&amp;rdquo;</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,899d1465-56d6-4cc6-9de5-6eb98d97722c.aspx</guid>
      <link>http://www.lhotka.net/weblog/SilverlightIsLdquodeadrdquo.aspx</link>
      <pubDate>Fri, 07 Dec 2012 17:23:33 GMT</pubDate>
      <description>&lt;p&gt;
The Silverlight.net web site is apparently now gone, merged into the broader msdn.com
ecosystem (where it belonged in the first place imo):
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/" href="http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/"&gt;http://www.zdnet.com/microsoft-pulls-the-plug-on-its-silverlight-net-site-7000008494/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
As we’ve known now for a long time, Silverlight is “dead”. It is in support mode and
will be for a decade.
&lt;/p&gt;
&lt;p&gt;
Just like Windows Forms has been since 2005, and WPF is now as well (do you really
think Microsoft is going to divert money from WinRT to do &lt;em&gt;anything&lt;/em&gt; with WPF
at this point??? If so I’ve got this beachfront property for sale…).
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;As an aside, ASP.NET Web Forms also “died” in 2005, but recently got a major infusion
of money in .NET 4.5 – showing that even a “dead” technology can receive a big cash
investment sometimes – though it still isn’t clear that this will be enough to breath
any new life into Web Forms for most organizations. I suspect it is more likely that
this recent investment will just allow organizations with massive Web Forms sites
to keep them limping along for another 5-10 years.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If a technology is defined as “dead” when its vendor stops enhancing it and starts
maintaining it while they put most of their money into the future, then I must say
that I’ve spent pretty much my entire ~25 year career working on dead technologies.
And it has been fun! &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Silverlight-is-dead_9AEB/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
Although some of us tech geeks like to jump to the next &lt;em&gt;potential&lt;/em&gt; upcoming
thing, the people who actually fund software projects rarely want to accept that kind
of risk. They generally &lt;em&gt;prefer&lt;/em&gt; to build applications on stable technology.
Most stable technology is “dead” or “dying” based on this idea of “live” technology
being rapidly changing and evolving.
&lt;/p&gt;
&lt;p&gt;
Obviously there’s a fine line here. 
&lt;/p&gt;
&lt;p&gt;
Target stable technology that is too old and you really are in trouble. Windows Forms
is an example of this, because its underlying technology has no migration path to
a WinRT future. Although a &lt;em&gt;lot&lt;/em&gt; of organizations have massive investments
in Windows Forms, I would hope that they’d shy away from starting new development
on this extremely stable, but now too old, technology.
&lt;/p&gt;
&lt;p&gt;
Target stable technology that is new, but old enough to be stable and life is generally
pretty good. WPF and Silverlight (for smart clients, not for cross-platform RIA) are
examples of this. The reason is that these technologies (especially Silverlight) have
a good migration story to a WinRT future. A lot of organizations are investing in
WPF, and that’s good. But I’d be shocked if Microsoft invests anything in WPF going
forward – its future is the one Windows Forms has enjoyed since 2005 – stable maintenance
of the technology. &lt;em&gt;Perfect&lt;/em&gt; for building critical business apps. Organizations
also have large investments in Silverlight, and as long as the intent was smart client
development (not cross-platform RIA) it seems to me that they are in the exact same
place as everyone using WPF. Arguably better, because Silverlight is much closer to
WinRT than WPF.
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx" href="http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx"&gt;http://magenic.com/Portfolio/WhitePaperWindows8DevelopmentPlatform.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you are using Silverlight for cross-platform rich web development, then I do agree
that the news is not good. The current alternative appears to be HTML 5, though it
is also clear that this is an expensive alternative with an unsure future. Just like
every other silver bullet to write once and run anywhere, I think you have to go into
such a venture expecting a lot of cost and pain. There’s no widely successful example
in the history of computing that indicates otherwise…
&lt;/p&gt;
&lt;p&gt;
The final option is to target “live” technologies. You know, the ones where vendors &lt;em&gt;are&lt;/em&gt; dumping
huge amounts of money, and where the technology and platform are changing rapidly.
Things like HTML 5 and WinRT are examples of this. As a tech geek I &lt;em&gt;love&lt;/em&gt; it
when organizations want to do this sort of thing, because the challenge is high and
we all get to learn a lot of new stuff. Of course the development costs are also quite
high because we’re getting paid to learn this new stuff. And the overall costs for
the software are high because the technology/platform isn’t stable and the app probably
needs to be rewritten (in whole or part) every few months to deal with platform changes.
&lt;/p&gt;
&lt;p&gt;
Some organizations are willing to accept the costs and inconvenience associated with
using “live” technologies. But most organizations don’t have the time or money or
risk tolerance, and are far better off targeting “dead” technologies like WPF and
Silverlight. They just need to be careful to have strategic migration plans so they
can get off those technologies before they reach the point of where Windows Forms
is today.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=899d1465-56d6-4cc6-9de5-6eb98d97722c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,899d1465-56d6-4cc6-9de5-6eb98d97722c.aspx</comments>
      <category>Silverlight</category>
      <category>Windows Forms</category>
      <category>WinRT</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=ab0b2564-5286-4deb-a98f-98124c3598ac</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,ab0b2564-5286-4deb-a98f-98124c3598ac.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,ab0b2564-5286-4deb-a98f-98124c3598ac.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=ab0b2564-5286-4deb-a98f-98124c3598ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here are the slides for my <a href="http://www.lhotka.net/files/devcon/WinForms2WinRT.pdf">Windows
Forms to Windows Runtime</a> talk today at Dev Connections.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ab0b2564-5286-4deb-a98f-98124c3598ac" />
      </body>
      <title>Windows Forms to Windows Runtime</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,ab0b2564-5286-4deb-a98f-98124c3598ac.aspx</guid>
      <link>http://www.lhotka.net/weblog/WindowsFormsToWindowsRuntime.aspx</link>
      <pubDate>Thu, 29 Mar 2012 16:39:13 GMT</pubDate>
      <description>&lt;p&gt;
Here are the slides for my &lt;a href="http://www.lhotka.net/files/devcon/WinForms2WinRT.pdf"&gt;Windows
Forms to Windows Runtime&lt;/a&gt; talk today at Dev Connections.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ab0b2564-5286-4deb-a98f-98124c3598ac" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,ab0b2564-5286-4deb-a98f-98124c3598ac.aspx</comments>
      <category>Windows Forms</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=53472720-e2f0-40f2-847b-0ef4736ee6d6</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,53472720-e2f0-40f2-847b-0ef4736ee6d6.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,53472720-e2f0-40f2-847b-0ef4736ee6d6.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=53472720-e2f0-40f2-847b-0ef4736ee6d6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In Visual Studio 2010 and .NET 4.0 Microsoft is amping up the visibility of the “client
profile” concept. In fact, when you install the 4.0 client profile on a machine, it
doesn’t drag the rest of the framework to that client later – they just get the client
profile. And when you create a WPF or Windows Forms project in VS10 you default to
targeting the client profile.
</p>
        <p>
That’s all good – great in fact!!
</p>
        <p>
But I’ve fallen in love with the validation attribute concepts in System.ComponentModel.DataAnnotations.dll.
These attributes are designed specifically to enable a UI framework author (or a business
layer framework author – like me with CSLA .NET) to automatically create a rich user
experience based on the attributes decorating business objects.
</p>
        <p>
This concept was first fully realized in Silverlight 3 – a client technology – and
is now fully supported in .NET 4.0 <em>full profile</em>. But it is a <em>client side
technology</em>, and so should be in the client profile.
</p>
        <p>
I’ve logged this issue on connect, and recommend you vote for this to be resolved:
</p>
        <p>
          <a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502807">https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502807</a>
        </p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=53472720-e2f0-40f2-847b-0ef4736ee6d6" />
      </body>
      <title>DataAnnotations not in the client profile</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,53472720-e2f0-40f2-847b-0ef4736ee6d6.aspx</guid>
      <link>http://www.lhotka.net/weblog/DataAnnotationsNotInTheClientProfile.aspx</link>
      <pubDate>Fri, 06 Nov 2009 21:41:13 GMT</pubDate>
      <description>&lt;p&gt;
In Visual Studio 2010 and .NET 4.0 Microsoft is amping up the visibility of the “client
profile” concept. In fact, when you install the 4.0 client profile on a machine, it
doesn’t drag the rest of the framework to that client later – they just get the client
profile. And when you create a WPF or Windows Forms project in VS10 you default to
targeting the client profile.
&lt;/p&gt;
&lt;p&gt;
That’s all good – great in fact!!
&lt;/p&gt;
&lt;p&gt;
But I’ve fallen in love with the validation attribute concepts in System.ComponentModel.DataAnnotations.dll.
These attributes are designed specifically to enable a UI framework author (or a business
layer framework author – like me with CSLA .NET) to automatically create a rich user
experience based on the attributes decorating business objects.
&lt;/p&gt;
&lt;p&gt;
This concept was first fully realized in Silverlight 3 – a client technology – and
is now fully supported in .NET 4.0 &lt;em&gt;full profile&lt;/em&gt;. But it is a &lt;em&gt;client side
technology&lt;/em&gt;, and so should be in the client profile.
&lt;/p&gt;
&lt;p&gt;
I’ve logged this issue on connect, and recommend you vote for this to be resolved:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502807"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=502807&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=53472720-e2f0-40f2-847b-0ef4736ee6d6" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,53472720-e2f0-40f2-847b-0ef4736ee6d6.aspx</comments>
      <category>Microsoft .NET</category>
      <category>Windows Forms</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=89d338dc-9021-45b3-9c53-839762ea0b5d</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,89d338dc-9021-45b3-9c53-839762ea0b5d.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,89d338dc-9021-45b3-9c53-839762ea0b5d.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=89d338dc-9021-45b3-9c53-839762ea0b5d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Of course I’m referring to Windows Forms, which is about 8 years old. Even in dog
years that’s not old. But in <em>software years</em> it is pretty old I’m afraid…
</p>
        <p>
I’m writing this post because here and in other venues I’ve recently referred to Windows
Forms as “legacy”, along with asmx and even possibly Web Forms. This has caused a
certain amount of alarm, but I’m not here to apologize or mollify.
</p>
        <p>
Technologies come and go. That’s just life in our industry. I was a DEC VAX guy for
many years (I hear Ted Neward laughing now, he loves these stories), but I could see
the end coming years before it faded away, so I switched to the woefully immature
Windows platform (Windows 3.0 – what a step backward from the VAX!). I know many FoxPro
people who transitioned, albeit painfully, to VB or other tools/languages. The same
with Clipper/dBase/etc. Most PowerBuilder people transitioned to Java or .NET (though
much to my surprise I recently learned that PowerBuilder still actually exists – like
you can still buy it!!).
</p>
        <p>
All through my career I’ve been lucky or observant enough to jump ship before any
technology came down on my head. I switched to Windows before the VAX collapsed, and
switched to .NET before VB6 collapsed, etc. And honestly I can’t think of a case where
I didn’t feel like I was stepping back in time to use the “new technology” because
it was so immature compared to the old stuff. But every single time it was worth the
effort, because I avoided being trapped on a slowly fading platform/technology with
my skills becoming less relevant every day.
</p>
        <p>
But what is “legacy”? I once heard a consultant say “legacy is anything you’ve put
in production”. Which might be good for a laugh, but isn’t terribly useful in any
practical sense.
</p>
        <p>
I think “legacy” refers to a technology or platform that is no longer an area of focus
or investment by the creator/maintainer. In our world that mostly means Microsoft,
and so the question is where is Microsoft focused, where are they spending their money
and what are they enhancing?
</p>
        <p>
The answers are pretty clear:
</p>
        <ul>
          <li>
Azure</li>
          <li>
Silverlight</li>
          <li>
ASP.NET MVC</li>
          <li>
WPF (to a lesser degree)</li>
          <li>
ADO.NET EF</li>
          <li>
WCF</li>
        </ul>
        <p>
These are the areas where the research, development, marketing and general energy
are all focused. Ask a Microsoft guy what’s cool or hot and you’ll hear about Azure
or Silverlight, maybe ADO.NET EF or ASP.NET MVC and possibly WPF or WCF. But you won’t
hear Windows Forms, Web Forms, asmx web services, Enterprise Services, Remoting, LINQ
to SQL, DataSet/TableAdapter/DataTable or numerous other technologies.
</p>
        <p>
Some of those other technologies aren’t legacy – they aren’t going away, they just
aren’t sexy. Raw ADO.NET, for example. Nobody talks about that, but ADO.NET EF can’t
exist without it, so it is safe. But in theory ADO.NET EF competes with the DataSet
(poorly, but still) and so the DataSet is a strong candidate for the “legacy” label.
</p>
        <p>
Silverlight and WPF both compete with Windows Forms. Poor Windows Forms is getting
no love, no meaningful enhancements or new features. It is just there. At the same
time, Silverlight gets a new release in less than 12 month cycles, and WPF gets all
sorts of amazingly cool new features for Windows 7. You tell me whether Windows Forms
is legacy. But whatever you decide, I’m surely spending zero cycles of my time on
it.
</p>
        <p>
asmx is obvious legacy too. Has been ever since WCF showed up, though WCF’s configuration
issues have been a plague on its existence. I rather suspect .NET 4.0 will address
those shortcomings though, making WCF as easy to use as asmx and driving the final
nail in the asmx coffin.
</p>
        <p>
Web Forms isn’t so clear to me. All the buzz is on ASP.NET MVC. That’s the technology
all the cool kids are using, and it really is some nice technology – I like it as
much as I’ll probably ever like a web technology. But if you look at .NET 4.0, Microsoft
has done some really nice things in Web Forms. So while it isn’t getting the hype
of MVC, it is still getting some very real love from the Microsoft development group
that owns the technology. So I don’t think Web Forms is legacy now or in .NET 4.0,
but beyond that it is hard to say. I strongly suspect the fate of Web Forms lies mostly
in its user base and whether they fight for it, whether they make Microsoft believe
it continues to be worth serious investment and improvement into the .NET 5.0 timeframe.
</p>
        <p>
For my part, I can tell you that it is amazingly (impossibly?) time-consuming to be
an expert on 7-9 different interface technologies (UI, service, workflow, etc). Sure
CSLA .NET supports <em>all of them</em>, but there are increasing tensions between
the stagnant technologies (most notably Windows Forms) and the vibrant technologies
like Silverlight and WPF. It is no longer possible, for example, to create a collection
object that works with all the interface technologies – you just can’t do it. And
the time needed to deeply understand the different binding models and subtle differences
grows with each release of .NET.
</p>
        <p>
CSLA .NET 4.0 will absolutely still support all the interface technologies. But it
would be foolish to cut off the future to protect the past – that way lies doom. So
in CSLA .NET 4.0 you should expect to see support for Windows Forms still there, but
probably moved into another namespace (Csla.Windows or something), while the main
Csla namespace provides support for modern interface technologies like WPF, ASP.NET
MVC, Silverlight, etc.
</p>
        <p>
I am absolutely committed to providing a window of time where Windows Forms users
can migrate their apps to WPF or Silverlight while still enjoying the value of CSLA
.NET. And I really hope to make that reasonably smooth – ideally you’ll just have
to change your base class types for your business objects when you switch the UI for
the object from Windows Forms to XAML – though I suspect other minor tweaks may be
necessary as well in some edge cases.
</p>
        <p>
But let’s face it, at some point CSLA .NET does have to drop legacy technologies.
I’m just one guy, and even with Magenic being such a great patron it isn’t realistic
to support every technology ever invented for .NET :)  I don’t think the time
to drop Windows Forms is in 4.0, because there are way too many people who need to
migrate to WPF over the next 2-3 years.
</p>
        <p>
On the other hand, if you and your organization aren’t developing a strategy to move
off Windows Forms in the next few years I suspect you’ll eventually wake up one day
and realize you are in a bad spot. One of those spots where you can’t hire anyone
because no one else has done your technology for years, and nobody really remembers
how it works (or at least won’t admit they do unless you offer them huge sums of money).
</p>
        <p>
I don’t see this as bad. People who want stability shouldn’t be in computing. They
should be in something like accounts receivable or accounts payable – parts of business
that haven’t changed substantially for decades, or perhaps centuries.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=89d338dc-9021-45b3-9c53-839762ea0b5d" />
      </body>
      <title>It is only 8, how can it be legacy???</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,89d338dc-9021-45b3-9c53-839762ea0b5d.aspx</guid>
      <link>http://www.lhotka.net/weblog/ItIsOnly8HowCanItBeLegacy.aspx</link>
      <pubDate>Thu, 05 Nov 2009 03:20:16 GMT</pubDate>
      <description>&lt;p&gt;
Of course I’m referring to Windows Forms, which is about 8 years old. Even in dog
years that’s not old. But in &lt;em&gt;software years&lt;/em&gt; it is pretty old I’m afraid…
&lt;/p&gt;
&lt;p&gt;
I’m writing this post because here and in other venues I’ve recently referred to Windows
Forms as “legacy”, along with asmx and even possibly Web Forms. This has caused a
certain amount of alarm, but I’m not here to apologize or mollify.
&lt;/p&gt;
&lt;p&gt;
Technologies come and go. That’s just life in our industry. I was a DEC VAX guy for
many years (I hear Ted Neward laughing now, he loves these stories), but I could see
the end coming years before it faded away, so I switched to the woefully immature
Windows platform (Windows 3.0 – what a step backward from the VAX!). I know many FoxPro
people who transitioned, albeit painfully, to VB or other tools/languages. The same
with Clipper/dBase/etc. Most PowerBuilder people transitioned to Java or .NET (though
much to my surprise I recently learned that PowerBuilder still actually exists – like
you can still buy it!!).
&lt;/p&gt;
&lt;p&gt;
All through my career I’ve been lucky or observant enough to jump ship before any
technology came down on my head. I switched to Windows before the VAX collapsed, and
switched to .NET before VB6 collapsed, etc. And honestly I can’t think of a case where
I didn’t feel like I was stepping back in time to use the “new technology” because
it was so immature compared to the old stuff. But every single time it was worth the
effort, because I avoided being trapped on a slowly fading platform/technology with
my skills becoming less relevant every day.
&lt;/p&gt;
&lt;p&gt;
But what is “legacy”? I once heard a consultant say “legacy is anything you’ve put
in production”. Which might be good for a laugh, but isn’t terribly useful in any
practical sense.
&lt;/p&gt;
&lt;p&gt;
I think “legacy” refers to a technology or platform that is no longer an area of focus
or investment by the creator/maintainer. In our world that mostly means Microsoft,
and so the question is where is Microsoft focused, where are they spending their money
and what are they enhancing?
&lt;/p&gt;
&lt;p&gt;
The answers are pretty clear:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Azure&lt;/li&gt;
&lt;li&gt;
Silverlight&lt;/li&gt;
&lt;li&gt;
ASP.NET MVC&lt;/li&gt;
&lt;li&gt;
WPF (to a lesser degree)&lt;/li&gt;
&lt;li&gt;
ADO.NET EF&lt;/li&gt;
&lt;li&gt;
WCF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
These are the areas where the research, development, marketing and general energy
are all focused. Ask a Microsoft guy what’s cool or hot and you’ll hear about Azure
or Silverlight, maybe ADO.NET EF or ASP.NET MVC and possibly WPF or WCF. But you won’t
hear Windows Forms, Web Forms, asmx web services, Enterprise Services, Remoting, LINQ
to SQL, DataSet/TableAdapter/DataTable or numerous other technologies.
&lt;/p&gt;
&lt;p&gt;
Some of those other technologies aren’t legacy – they aren’t going away, they just
aren’t sexy. Raw ADO.NET, for example. Nobody talks about that, but ADO.NET EF can’t
exist without it, so it is safe. But in theory ADO.NET EF competes with the DataSet
(poorly, but still) and so the DataSet is a strong candidate for the “legacy” label.
&lt;/p&gt;
&lt;p&gt;
Silverlight and WPF both compete with Windows Forms. Poor Windows Forms is getting
no love, no meaningful enhancements or new features. It is just there. At the same
time, Silverlight gets a new release in less than 12 month cycles, and WPF gets all
sorts of amazingly cool new features for Windows 7. You tell me whether Windows Forms
is legacy. But whatever you decide, I’m surely spending zero cycles of my time on
it.
&lt;/p&gt;
&lt;p&gt;
asmx is obvious legacy too. Has been ever since WCF showed up, though WCF’s configuration
issues have been a plague on its existence. I rather suspect .NET 4.0 will address
those shortcomings though, making WCF as easy to use as asmx and driving the final
nail in the asmx coffin.
&lt;/p&gt;
&lt;p&gt;
Web Forms isn’t so clear to me. All the buzz is on ASP.NET MVC. That’s the technology
all the cool kids are using, and it really is some nice technology – I like it as
much as I’ll probably ever like a web technology. But if you look at .NET 4.0, Microsoft
has done some really nice things in Web Forms. So while it isn’t getting the hype
of MVC, it is still getting some very real love from the Microsoft development group
that owns the technology. So I don’t think Web Forms is legacy now or in .NET 4.0,
but beyond that it is hard to say. I strongly suspect the fate of Web Forms lies mostly
in its user base and whether they fight for it, whether they make Microsoft believe
it continues to be worth serious investment and improvement into the .NET 5.0 timeframe.
&lt;/p&gt;
&lt;p&gt;
For my part, I can tell you that it is amazingly (impossibly?) time-consuming to be
an expert on 7-9 different interface technologies (UI, service, workflow, etc). Sure
CSLA .NET supports &lt;em&gt;all of them&lt;/em&gt;, but there are increasing tensions between
the stagnant technologies (most notably Windows Forms) and the vibrant technologies
like Silverlight and WPF. It is no longer possible, for example, to create a collection
object that works with all the interface technologies – you just can’t do it. And
the time needed to deeply understand the different binding models and subtle differences
grows with each release of .NET.
&lt;/p&gt;
&lt;p&gt;
CSLA .NET 4.0 will absolutely still support all the interface technologies. But it
would be foolish to cut off the future to protect the past – that way lies doom. So
in CSLA .NET 4.0 you should expect to see support for Windows Forms still there, but
probably moved into another namespace (Csla.Windows or something), while the main
Csla namespace provides support for modern interface technologies like WPF, ASP.NET
MVC, Silverlight, etc.
&lt;/p&gt;
&lt;p&gt;
I am absolutely committed to providing a window of time where Windows Forms users
can migrate their apps to WPF or Silverlight while still enjoying the value of CSLA
.NET. And I really hope to make that reasonably smooth – ideally you’ll just have
to change your base class types for your business objects when you switch the UI for
the object from Windows Forms to XAML – though I suspect other minor tweaks may be
necessary as well in some edge cases.
&lt;/p&gt;
&lt;p&gt;
But let’s face it, at some point CSLA .NET does have to drop legacy technologies.
I’m just one guy, and even with Magenic being such a great patron it isn’t realistic
to support every technology ever invented for .NET :)&amp;#160; I don’t think the time
to drop Windows Forms is in 4.0, because there are way too many people who need to
migrate to WPF over the next 2-3 years.
&lt;/p&gt;
&lt;p&gt;
On the other hand, if you and your organization aren’t developing a strategy to move
off Windows Forms in the next few years I suspect you’ll eventually wake up one day
and realize you are in a bad spot. One of those spots where you can’t hire anyone
because no one else has done your technology for years, and nobody really remembers
how it works (or at least won’t admit they do unless you offer them huge sums of money).
&lt;/p&gt;
&lt;p&gt;
I don’t see this as bad. People who want stability shouldn’t be in computing. They
should be in something like accounts receivable or accounts payable – parts of business
that haven’t changed substantially for decades, or perhaps centuries.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=89d338dc-9021-45b3-9c53-839762ea0b5d" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,89d338dc-9021-45b3-9c53-839762ea0b5d.aspx</comments>
      <category>CSLA .NET</category>
      <category>Microsoft .NET</category>
      <category>Silverlight</category>
      <category>WCF</category>
      <category>Web</category>
      <category>Windows Forms</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=4b36b798-2476-4c63-b156-d72759dc8ae5</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,4b36b798-2476-4c63-b156-d72759dc8ae5.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,4b36b798-2476-4c63-b156-d72759dc8ae5.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=4b36b798-2476-4c63-b156-d72759dc8ae5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Every time I go to override the Text property in a Windows Forms UserControl
I have to go find this one little attribute that I can never remember...
</p>
        <p>
It is easy enough to remember to make the property Browsable(true), but it is
that <em>other</em> attribute that's hard to remember: DesignerSerializationVisibility(DesignerSerializationVisibility.Visible).
</p>
        <p>
          <a href="http://www.dotnet247.com/247reference/msgs/44/221227.aspx">This web page</a> not
only answers the question, but includes a nice summary of all the System.ComponentModel
attributes. 
</p>
        <p>
At least next time I know I can search my own blog to find the answer :)
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4b36b798-2476-4c63-b156-d72759dc8ae5" />
      </body>
      <title>Overriding the Text property in a Windows Forms UserControl</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,4b36b798-2476-4c63-b156-d72759dc8ae5.aspx</guid>
      <link>http://www.lhotka.net/weblog/OverridingTheTextPropertyInAWindowsFormsUserControl.aspx</link>
      <pubDate>Thu, 26 Jul 2007 14:47:34 GMT</pubDate>
      <description>&lt;p&gt;
Every time I go to override the Text property in a Windows Forms&amp;nbsp;UserControl
I have to go find this one&amp;nbsp;little attribute that I can never remember...
&lt;/p&gt;
&lt;p&gt;
It&amp;nbsp;is easy enough to remember to make the property Browsable(true), but it is
that &lt;em&gt;other&lt;/em&gt; attribute that's hard to remember: DesignerSerializationVisibility(DesignerSerializationVisibility.Visible).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dotnet247.com/247reference/msgs/44/221227.aspx"&gt;This web page&lt;/a&gt; not
only answers the question, but includes a nice summary of all the System.ComponentModel
attributes.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
At least next time I know I can search my own blog to find the answer :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4b36b798-2476-4c63-b156-d72759dc8ae5" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,4b36b798-2476-4c63-b156-d72759dc8ae5.aspx</comments>
      <category>Windows Forms</category>
    </item>
  </channel>
</rss>