<?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 - CSLA .NET</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>Wed, 20 Mar 2013 03:56:18 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=7243ebb2-0068-4f59-a35c-e0f54d6943b2</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=7243ebb2-0068-4f59-a35c-e0f54d6943b2</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final release of CSLA 4 version 4.5.20 is now available for download
</p>
        <p>
          <a href="http://www.cslanet.com/Download.html">http://www.cslanet.com/Download.html</a>
        </p>
        <p>
It is also available via NuGet.
</p>
        <p>
CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.
</p>
        <p>
This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.
</p>
        <p>
It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.
</p>
        <p>
One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7243ebb2-0068-4f59-a35c-e0f54d6943b2" />
      </body>
      <title>CSLA 4 version 4.5.20 release available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4520ReleaseAvailable.aspx</link>
      <pubDate>Wed, 20 Mar 2013 03:56:18 GMT</pubDate>
      <description>&lt;p&gt;
The final release of CSLA 4 version 4.5.20 is now available for download
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.cslanet.com/Download.html"&gt;http://www.cslanet.com/Download.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It is also available via NuGet.
&lt;/p&gt;
&lt;p&gt;
CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.
&lt;/p&gt;
&lt;p&gt;
This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.
&lt;/p&gt;
&lt;p&gt;
It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.
&lt;/p&gt;
&lt;p&gt;
One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7243ebb2-0068-4f59-a35c-e0f54d6943b2" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows Phone</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=fac037f9-7959-4a90-9315-634b8e9c037e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=fac037f9-7959-4a90-9315-634b8e9c037e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
First: CSLA .NET has moved to GitHub and has a new home page: <a href="http://www.cslanet.com">www.cslanet.com</a></p>
        <p>
Second, the most recent beta version 4.5.12, is now available for download and through
nuget. There are a couple bug fixes, and some server-side data portal enhancements
to better support the use of IoC containers for creating business objects when using
the encapsulated data portal model.
</p>
        <p>
In summary, you can create an implementation of Csla.Server.IDataPortalInterceptor
where you can implement code that runs at the very start and very end of <em>every
single data portal call</em>. Then you can create an implementation of Csla.Server.IDataPortalActivator
where you can assume responsibility for creating an instance of the requested business
type, and for initializing the object instance (thus supporting property injection).
</p>
        <p>
Along with this, the data portal now allows you to use interfaces instead of concrete
types (assuming you've supplied an IDataPortalActivator of course):
</p>
        <blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
          <p>
var obj = Csla.DataPortal.FetchAsync&lt;IPersonEdit&gt;();
</p>
        </blockquote>
        <p>
In this example, the 'obj' reference might be any type that implements IPersonEdit,
and the actual concrete type is determined by your IDataPortalActivator implementation.
The default implementation is to create an instance of the supplied type, so the supplied
type must be a concrete type. As a result, no existing code is affected by this change.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fac037f9-7959-4a90-9315-634b8e9c037e" />
      </body>
      <title>CSLA 4 version 4.5.12 beta released</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4512BetaReleased.aspx</link>
      <pubDate>Wed, 20 Feb 2013 23:30:19 GMT</pubDate>
      <description>&lt;p&gt;
First: CSLA .NET has moved to GitHub and has a new home page: &lt;a href="http://www.cslanet.com"&gt;www.cslanet.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Second, the most recent beta version 4.5.12, is now available for download and through
nuget. There are a couple bug fixes, and some server-side data portal enhancements
to better support the use of IoC containers for creating business objects when using
the encapsulated data portal model.
&lt;/p&gt;
&lt;p&gt;
In summary, you can create an implementation of Csla.Server.IDataPortalInterceptor
where you can implement code that runs at the very start and very end of &lt;em&gt;every
single data portal call&lt;/em&gt;. Then you can create an implementation of Csla.Server.IDataPortalActivator
where you can assume responsibility for creating an instance of the requested business
type, and for initializing the object instance (thus supporting property injection).
&lt;/p&gt;
&lt;p&gt;
Along with this, the data portal now allows you to use interfaces instead of concrete
types (assuming you've supplied an IDataPortalActivator of course):
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir=ltr&gt; 
&lt;p&gt;
var obj = Csla.DataPortal.FetchAsync&amp;lt;IPersonEdit&amp;gt;();
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In this example, the 'obj' reference might be any type that implements IPersonEdit,
and the actual concrete type is determined by your IDataPortalActivator implementation.
The default implementation is to create an instance of the supplied type, so the supplied
type must be a concrete type. As a result, no existing code is affected by this change.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fac037f9-7959-4a90-9315-634b8e9c037e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In a recent email thread I ended up writing a lengthy bit of content summarizing some
of my thoughts around the idea of automatically projecting js code into an HTML 5
(h5js) browser app.
</p>
        <p>
Another participant in the thread mentioned that he’s a strong proponent of separation
of concerns, and in particular keeping the “model” separate from data access. In his
context the “model” is basically a set of data container or DTO objects. My response:
</p>
        <p>
-----------------------------
</p>
        <p>
I agree about separation of concerns at the lower levels.
</p>
        <p>
I am a firm believer in domain focused business objects though. In the use of “real”
OOD, which largely eliminates the need for add-on hacks like a viewmodel.
</p>
        <p>
In other words, apps should have clearly defined logical layers. I use this model:
</p>
        <blockquote>
          <p>
Interface 
<br />
Interface control 
<br />
Business 
<br />
Data access 
<br />
Data storage
</p>
        </blockquote>
        <p>
This model works for pretty much everything: web apps, smart client apps, service
apps, workflow tasks (apps), etc.
</p>
        <p>
The key is that the business layer consists of honest-to-god real life business domain
objects. These are designed using OOD so they reflect the requirements of the user
scenario, not the database design.
</p>
        <p>
If you have data-centric objects, they’ll live in the Data access layer. And that’s
pretty common when using any ORM or something like EF, where the tools help you create
data-centric types. That’s very useful – then all you need to do is use object:object
mapping (OOM) to get the data from the data-centric objects into the more meaningful
business domain objects.
</p>
        <p>
At no point should any layer talk to the database other than the Data access layer.
And at no point should the Interface/Interface control layers interact with anything
except the Business layer.
</p>
        <p>
Given all that, the question with smart client web apps (as I’ve taken to calling
these weird h5js/.NET hybrids) is whether you are using a service-oriented architecture
or an n-tier architecture. This choice must be made _<i>first</i>_ because it impacts
every other decision.
</p>
        <p>
The service-oriented approach says you are creating a system composed of multiple
apps. In our discussion this would be the smart client h5js app and the server-side
service app. SOA mandates that these apps don’t trust each other, and that they communicate
through loosely coupled and clearly defined interface contracts. That allows the apps
to version independently. And the lack of trust means that data flowing from the consuming
app (h5js) to the service app isn’t trusted – which makes sense given how easy it
is to hack anything running in the browser. In this world each app should (imo) consist
of a series of layers such as those I mentioned earlier.
</p>
        <p>
The n-tier approach says you are creating one app with multiple layers, and those
layers might be deployed on different physical tiers. Because this is one app, the
layers can and should have reasonable levels of trust between them. As a result you
shouldn’t feel the need to re-run business logic just because the data flowed from
one layer/tier to another (completely different from SOA).
</p>
        <p>
N-tier can be challenging because you typically have to decide where to physically
put the business layer: on the client to give the user a rich and interactive experience,
or on the server for more control and easier maintenance. In the case of my CSLA .NET
framework I embraced the concept of _<i>mobile objects</i>_ where the business layer
literally runs on the client AND on the server, allowing you to easily run business
logic where most appropriate. Sadly this requires that the same code can actually
run on the client and server, which isn’t the case when the client and server are
disparate platforms (e.g. h5js and .NET).
</p>
        <p>
This idea of projecting server-side business domain objects into the client fits naturally
into the n-tier world. This has been an area of deep discussion for months within
the CSLA dev team – how to make it practical to translate the rich domain business
behaviors into js without imposing a major burden of writing js alongside C#.
</p>
        <p>
CSLA objects have a very rich set of rules and behaviors that ideally would be automatically
projected into a js business layer for use by the smart client h5js Interface and
Interface control layers. I love this idea – but the trick is to make it possible
such that there’s not a major new burden for developers.
</p>
        <p>
This idea of projecting server-side business domain objects into the client is a less
natural fit for a service-oriented system, because there’s a clear and obvious level
of coupling between the service app and the h5js app (given that parts of the h5js
app literally generate based on the service app). I’m not sure this is a total roadblock,
but you have to go into this recognizing that such an approach compromises the primary
purpose of SOA, which is loose coupling between the apps in the system…
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e" />
      </body>
      <title>Projecting js code from a .NET business layer</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</guid>
      <link>http://www.lhotka.net/weblog/ProjectingJsCodeFromANETBusinessLayer.aspx</link>
      <pubDate>Thu, 14 Feb 2013 16:39:23 GMT</pubDate>
      <description>&lt;p&gt;
In a recent email thread I ended up writing a lengthy bit of content summarizing some
of my thoughts around the idea of automatically projecting js code into an HTML 5
(h5js) browser app.
&lt;/p&gt;
&lt;p&gt;
Another participant in the thread mentioned that he’s a strong proponent of separation
of concerns, and in particular keeping the “model” separate from data access. In his
context the “model” is basically a set of data container or DTO objects. My response:
&lt;/p&gt;
&lt;p&gt;
-----------------------------
&lt;/p&gt;
&lt;p&gt;
I agree about separation of concerns at the lower levels.
&lt;/p&gt;
&lt;p&gt;
I am a firm believer in domain focused business objects though. In the use of “real”
OOD, which largely eliminates the need for add-on hacks like a viewmodel.
&lt;/p&gt;
&lt;p&gt;
In other words, apps should have clearly defined logical layers. I use this model:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Interface 
&lt;br /&gt;
Interface control 
&lt;br /&gt;
Business 
&lt;br /&gt;
Data access 
&lt;br /&gt;
Data storage
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This model works for pretty much everything: web apps, smart client apps, service
apps, workflow tasks (apps), etc.
&lt;/p&gt;
&lt;p&gt;
The key is that the business layer consists of honest-to-god real life business domain
objects. These are designed using OOD so they reflect the requirements of the user
scenario, not the database design.
&lt;/p&gt;
&lt;p&gt;
If you have data-centric objects, they’ll live in the Data access layer. And that’s
pretty common when using any ORM or something like EF, where the tools help you create
data-centric types. That’s very useful – then all you need to do is use object:object
mapping (OOM) to get the data from the data-centric objects into the more meaningful
business domain objects.
&lt;/p&gt;
&lt;p&gt;
At no point should any layer talk to the database other than the Data access layer.
And at no point should the Interface/Interface control layers interact with anything
except the Business layer.
&lt;/p&gt;
&lt;p&gt;
Given all that, the question with smart client web apps (as I’ve taken to calling
these weird h5js/.NET hybrids) is whether you are using a service-oriented architecture
or an n-tier architecture. This choice must be made _&lt;i&gt;first&lt;/i&gt;_ because it impacts
every other decision.
&lt;/p&gt;
&lt;p&gt;
The service-oriented approach says you are creating a system composed of multiple
apps. In our discussion this would be the smart client h5js app and the server-side
service app. SOA mandates that these apps don’t trust each other, and that they communicate
through loosely coupled and clearly defined interface contracts. That allows the apps
to version independently. And the lack of trust means that data flowing from the consuming
app (h5js) to the service app isn’t trusted – which makes sense given how easy it
is to hack anything running in the browser. In this world each app should (imo) consist
of a series of layers such as those I mentioned earlier.
&lt;/p&gt;
&lt;p&gt;
The n-tier approach says you are creating one app with multiple layers, and those
layers might be deployed on different physical tiers. Because this is one app, the
layers can and should have reasonable levels of trust between them. As a result you
shouldn’t feel the need to re-run business logic just because the data flowed from
one layer/tier to another (completely different from SOA).
&lt;/p&gt;
&lt;p&gt;
N-tier can be challenging because you typically have to decide where to physically
put the business layer: on the client to give the user a rich and interactive experience,
or on the server for more control and easier maintenance. In the case of my CSLA .NET
framework I embraced the concept of _&lt;i&gt;mobile objects&lt;/i&gt;_ where the business layer
literally runs on the client AND on the server, allowing you to easily run business
logic where most appropriate. Sadly this requires that the same code can actually
run on the client and server, which isn’t the case when the client and server are
disparate platforms (e.g. h5js and .NET).
&lt;/p&gt;
&lt;p&gt;
This idea of projecting server-side business domain objects into the client fits naturally
into the n-tier world. This has been an area of deep discussion for months within
the CSLA dev team – how to make it practical to translate the rich domain business
behaviors into js without imposing a major burden of writing js alongside C#.
&lt;/p&gt;
&lt;p&gt;
CSLA objects have a very rich set of rules and behaviors that ideally would be automatically
projected into a js business layer for use by the smart client h5js Interface and
Interface control layers. I love this idea – but the trick is to make it possible
such that there’s not a major new burden for developers.
&lt;/p&gt;
&lt;p&gt;
This idea of projecting server-side business domain objects into the client is a less
natural fit for a service-oriented system, because there’s a clear and obvious level
of coupling between the service app and the h5js app (given that parts of the h5js
app literally generate based on the service app). I’m not sure this is a total roadblock,
but you have to go into this recognizing that such an approach compromises the primary
purpose of SOA, which is loose coupling between the apps in the system…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</comments>
      <category>Architecture</category>
      <category>CSLA .NET</category>
      <category>h5js</category>
      <category>Microsoft .NET</category>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=8da1c6bb-d8cd-4325-aaff-533f660668f0</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=8da1c6bb-d8cd-4325-aaff-533f660668f0</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have released a beta of CSLA .NET: version 4.5.11, working toward a final release
in a few weeks.
</p>
        <p>
CSLA .NET is an open source software development framework that helps you build a
reusable, scalable, and maintainable object-oriented business layer for your applications.
</p>
        <p>
This update includes a few interesting features/changes.
</p>
        <ol>
          <li>
Adds support for Windows Phone 8 (WP8) development on the Windows Phone Runtime (WinPRT)
platform 
</li>
          <li>
Simplifies support for ASP.NET MVC 3 and ASP.NET MVC 4, as well as ADO.NET EF 4 and
5 by splitting functionality into separate assemblies and nuget packages 
</li>
          <li>
Changes the local data portal to have the same behavior as a remote data portal for
async calls; specifically this means that the local data portal automatically shifts
all async requests onto a background thread from the thread pool 
</li>
          <li>
Transactional attribute now allows you to set the isolation level 
</li>
          <li>
Various bug fixes 
</li>
        </ol>
        <p>
You can get this prerelease version from nuget in Visual Studio, or you can download
the new Wix-based installer from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8da1c6bb-d8cd-4325-aaff-533f660668f0" />
      </body>
      <title>CSLA 4.5 version 4.5.11 beta available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA45Version4511BetaAvailable.aspx</link>
      <pubDate>Wed, 06 Feb 2013 23:36:07 GMT</pubDate>
      <description>&lt;p&gt;
I have released a beta of CSLA .NET: version 4.5.11, working toward a final release
in a few weeks.
&lt;/p&gt;
&lt;p&gt;
CSLA .NET is an open source software development framework that helps you build a
reusable, scalable, and maintainable object-oriented business layer for your applications.
&lt;/p&gt;
&lt;p&gt;
This update includes a few interesting features/changes.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Adds support for Windows Phone 8 (WP8) development on the Windows Phone Runtime (WinPRT)
platform 
&lt;li&gt;
Simplifies support for ASP.NET MVC 3 and ASP.NET MVC 4, as well as ADO.NET EF 4 and
5 by splitting functionality into separate assemblies and nuget packages 
&lt;li&gt;
Changes the local data portal to have the same behavior as a remote data portal for
async calls; specifically this means that the local data portal automatically shifts
all async requests onto a background thread from the thread pool 
&lt;li&gt;
Transactional attribute now allows you to set the isolation level 
&lt;li&gt;
Various bug fixes 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
You can get this prerelease version from nuget in Visual Studio, or you can download
the new Wix-based installer from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8da1c6bb-d8cd-4325-aaff-533f660668f0" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows Phone</category>
      <category>WP8</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I am pleased to announce the final release of CSLA 4 version 4.5 with support
for the following platforms:
</p>
        <ul>
          <li>
.NET 4.5</li>
          <li>
Windows Runtime (WinRT)</li>
          <li>
.NET 4</li>
          <li>
Silverlight 5</li>
        </ul>
        <p>
The new release is available via <a href="http://nuget.org/packages?q=csla">nuget</a> and
the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA download page</a>.
</p>
        <p>
This release includes a number of important features and changes, including:
</p>
        <ul>
          <li>
Support for Windows Runtime (WinRT), so you can simply recompile your existing CSLA
.NET business classes for WinRT with little or no changes required to migrate to the
new platform</li>
          <li>
Support for the new async and await keywords in .NET 4.5 (and in .NET 4 and SL5 via
the async targeting pack)</li>
          <li>
Enhancements to the business rules engine</li>
          <li>
Enhancements to Windows Forms support via the Csla.Windows namespace</li>
        </ul>
        <p>
The entire CSLA .NET dev team has put a lot of work into this release, and we hope
you enjoy it and find it useful!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6" />
      </body>
      <title>CSLA 4 version 4.5 released with support for WinRT</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version45ReleasedWithSupportForWinRT.aspx</link>
      <pubDate>Wed, 24 Oct 2012 22:00:51 GMT</pubDate>
      <description>&lt;p&gt;
I am pleased to announce the final release of CSLA&amp;nbsp;4 version 4.5 with support
for the following platforms:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET 4.5&lt;/li&gt;
&lt;li&gt;
Windows Runtime (WinRT)&lt;/li&gt;
&lt;li&gt;
.NET 4&lt;/li&gt;
&lt;li&gt;
Silverlight 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The new release is available via &lt;a href="http://nuget.org/packages?q=csla"&gt;nuget&lt;/a&gt; and
the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This release includes a number of important features and changes, including:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Support for Windows Runtime (WinRT), so you can simply recompile your existing CSLA
.NET business classes for WinRT with little or no changes required to migrate to the
new platform&lt;/li&gt;
&lt;li&gt;
Support for the new async and await keywords in .NET 4.5 (and in .NET 4 and SL5 via
the async targeting pack)&lt;/li&gt;
&lt;li&gt;
Enhancements to the business rules engine&lt;/li&gt;
&lt;li&gt;
Enhancements to Windows Forms support via the Csla.Windows namespace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The entire CSLA .NET dev team has put a lot of work into this release, and we hope
you enjoy it and find it useful!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,0cbaffe9-9eae-4671-bf0e-f9f106a4b0b6.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows 8</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=fe128c46-4d8c-4170-aa2a-8664b546398b</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,fe128c46-4d8c-4170-aa2a-8664b546398b.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,fe128c46-4d8c-4170-aa2a-8664b546398b.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=fe128c46-4d8c-4170-aa2a-8664b546398b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 version 4.5 release candidate 1 is now online via <a href="http://www.lhotka.net/cslanet/Download.aspx">installer</a> and <a href="http://www.nuget.org/packages?q=csla">nuget</a>.
</p>
        <p>
This is a relatively minor update from the previous beta, with a small number of bug
fixes. The big thing is that Tiago and Jonny put a lot of work into making sure the
samples are all working with CSLA .NET 4.5.
</p>
        <p>
My plan is to release version 4.5 by the middle of next week.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fe128c46-4d8c-4170-aa2a-8664b546398b" />
      </body>
      <title>CSLA 4 version 4.5 release candidate</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,fe128c46-4d8c-4170-aa2a-8664b546398b.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version45ReleaseCandidate.aspx</link>
      <pubDate>Wed, 17 Oct 2012 22:53:46 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 version 4.5 release candidate 1 is now online via &lt;a href="http://www.lhotka.net/cslanet/Download.aspx"&gt;installer&lt;/a&gt; and &lt;a href="http://www.nuget.org/packages?q=csla"&gt;nuget&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This is a relatively minor update from the previous beta, with a small number of bug
fixes. The big thing is that Tiago and Jonny put a lot of work into making sure the
samples are all working with CSLA .NET 4.5.
&lt;/p&gt;
&lt;p&gt;
My plan is to release version 4.5 by the middle of next week.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fe128c46-4d8c-4170-aa2a-8664b546398b" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,fe128c46-4d8c-4170-aa2a-8664b546398b.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=0f6164fa-537a-49ed-8902-a4909ba52b6c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,0f6164fa-537a-49ed-8902-a4909ba52b6c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,0f6164fa-537a-49ed-8902-a4909ba52b6c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=0f6164fa-537a-49ed-8902-a4909ba52b6c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 version 4.5 supports the async and await keywords across all platforms (WinRT,
.NET 4.5, .NET 4, Silverlight 5).
</p>
        <p>
You can use these async features to implement async rules in the CSLA rules engine.
Here’s one such rule:
</p>
        <blockquote>
          <p>
public class CustomRule : Csla.Rules.BusinessRule 
<br />
{ 
<br />
  public CustomRule(Csla.Core.IPropertyInfo primaryProperty) 
<br />
    : base(primaryProperty) 
<br />
  { 
<br />
    InputProperties.Add(primaryProperty); 
<br />
    IsAsync = true; 
<br />
  }
</p>
          <p>
  protected async override void Execute(Csla.Rules.RuleContext context) 
<br />
  { 
<br />
    var cmd = new LongRunningCommand(); 
<br />
    cmd = await DataPortal.ExecuteAsync(cmd); 
<br />
    context.AddInformationResult("Rule complete: " + cmd.Output); 
<br />
    context.Complete(); 
<br />
  }
</p>
          <p>
  [Serializable] 
<br />
  public class LongRunningCommand : CommandBase&lt;LongRunningCommand&gt; 
<br />
  { 
<br />
    public static readonly PropertyInfo&lt;string&gt; OutputProperty
= RegisterProperty&lt;string&gt;(c =&gt; c.Output); 
<br />
    public string Output 
<br />
    { 
<br />
      get { return ReadProperty(OutputProperty); } 
<br />
      private set { LoadProperty(OutputProperty, value);
} 
<br />
    }
</p>
          <p>
    protected new async Task DataPortal_Execute() 
<br />
    { 
<br />
      Output = "Before delay"; 
<br />
      await Task.Delay(3000); 
<br />
      Output = "After delay"; 
<br />
    } 
<br />
  } 
<br />
} 
<br /></p>
        </blockquote>
        <p>
Notice that the rule’s constructor sets the rule’s IsAsync property to true. This
tells the CSLA rules engine that the rule will be async.
</p>
        <p>
Also notice that the rule’s Execute method is marked with the async keyword, allowing
the use of the await keyword within the method. In this example, the rule uses the
data portal to asynchronously execute a command object by awaiting the ExecuteAsync
method.
</p>
        <p>
Because the rule has IsAsync true, the Execute method <em>must</em> call context.Complete
to indicate that the rule has finished processing. If you don’t call context.Complete
the CSLA rule engine will never process the rule’s result, and you’ll have a bug in
your application.
</p>
        <p>
The command object itself also uses the async keyword to implement the DataPortal_Execute
method. Notice that this method returns a Task. The server-side data portal components
are smart enough to detect when a DataPortal_XYZ method returns type Task, so the
DataPortal_XYZ method is invoked correctly.
</p>
        <p>
Within the DataPortal_Execute method I just use Task.Delay to create an artificial
delay. This represents some long-running operation such as calling a slow web service,
invoking an intensive oData query, or something like that.
</p>
        <p>
The end result is that a business object can attach this CustomRule to a property,
and the rule will run asynchronously. This is done in the business class’s AddBusinessRules
method.
</p>
        <p>
In your UI you can use helper components such as Csla.Xaml.PropertyInfo to determine
that the property is running an async rule. For example, you might use XAML like this
in WinRT:
</p>
        <blockquote>
          <p>
&lt;StackPanel Orientation="Horizontal"&gt; 
<br />
  &lt;TextBox Text="{Binding Path=Name, Mode=TwoWay}"/&gt; 
<br />
  &lt;TextBlock Text="{Binding ElementName=NameInfo,Path=RuleDescription}"
Foreground="Yellow"/&gt; 
<br />
  &lt;ProgressRing IsActive="{Binding ElementName=NameInfo,Path=IsBusy}"/&gt; 
<br />
  &lt;csla:PropertyInfo Name="NameInfo" Source="{Binding}"
Property="Name"/&gt; 
<br />
&lt;/StackPanel&gt;
</p>
        </blockquote>
        <p>
The specific XAML syntax is a little different in WPF/Silverlight because the XAML
language is more mature there than in WinRT. But the basic concept of building a rich
user experience based on an async rule is the same across all smart client platforms.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=0f6164fa-537a-49ed-8902-a4909ba52b6c" />
      </body>
      <title>Implementing an async rule in CSLA 4 version 4.5</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,0f6164fa-537a-49ed-8902-a4909ba52b6c.aspx</guid>
      <link>http://www.lhotka.net/weblog/ImplementingAnAsyncRuleInCSLA4Version45.aspx</link>
      <pubDate>Tue, 09 Oct 2012 21:59:52 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 version 4.5 supports the async and await keywords across all platforms (WinRT,
.NET 4.5, .NET 4, Silverlight 5).
&lt;/p&gt;
&lt;p&gt;
You can use these async features to implement async rules in the CSLA rules engine.
Here’s one such rule:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
public class CustomRule : Csla.Rules.BusinessRule 
&lt;br /&gt;
{ 
&lt;br /&gt;
&amp;#160; public CustomRule(Csla.Core.IPropertyInfo primaryProperty) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; : base(primaryProperty) 
&lt;br /&gt;
&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; InputProperties.Add(primaryProperty); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; IsAsync = true; 
&lt;br /&gt;
&amp;#160; }
&lt;/p&gt;
&lt;p&gt;
&amp;#160; protected async override void Execute(Csla.Rules.RuleContext context) 
&lt;br /&gt;
&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; var cmd = new LongRunningCommand(); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; cmd = await DataPortal.ExecuteAsync(cmd); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; context.AddInformationResult(&amp;quot;Rule complete: &amp;quot; + cmd.Output); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; context.Complete(); 
&lt;br /&gt;
&amp;#160; }
&lt;/p&gt;
&lt;p&gt;
&amp;#160; [Serializable] 
&lt;br /&gt;
&amp;#160; public class LongRunningCommand : CommandBase&amp;lt;LongRunningCommand&amp;gt; 
&lt;br /&gt;
&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; public static readonly PropertyInfo&amp;lt;string&amp;gt; OutputProperty
= RegisterProperty&amp;lt;string&amp;gt;(c =&amp;gt; c.Output); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; public string Output 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return ReadProperty(OutputProperty); } 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private set { LoadProperty(OutputProperty, value);
} 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&amp;#160;&amp;#160; protected new async Task DataPortal_Execute() 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Output = &amp;quot;Before delay&amp;quot;; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; await Task.Delay(3000); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Output = &amp;quot;After delay&amp;quot;; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; } 
&lt;br /&gt;
&amp;#160; } 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Notice that the rule’s constructor sets the rule’s IsAsync property to true. This
tells the CSLA rules engine that the rule will be async.
&lt;/p&gt;
&lt;p&gt;
Also notice that the rule’s Execute method is marked with the async keyword, allowing
the use of the await keyword within the method. In this example, the rule uses the
data portal to asynchronously execute a command object by awaiting the ExecuteAsync
method.
&lt;/p&gt;
&lt;p&gt;
Because the rule has IsAsync true, the Execute method &lt;em&gt;must&lt;/em&gt; call context.Complete
to indicate that the rule has finished processing. If you don’t call context.Complete
the CSLA rule engine will never process the rule’s result, and you’ll have a bug in
your application.
&lt;/p&gt;
&lt;p&gt;
The command object itself also uses the async keyword to implement the DataPortal_Execute
method. Notice that this method returns a Task. The server-side data portal components
are smart enough to detect when a DataPortal_XYZ method returns type Task, so the
DataPortal_XYZ method is invoked correctly.
&lt;/p&gt;
&lt;p&gt;
Within the DataPortal_Execute method I just use Task.Delay to create an artificial
delay. This represents some long-running operation such as calling a slow web service,
invoking an intensive oData query, or something like that.
&lt;/p&gt;
&lt;p&gt;
The end result is that a business object can attach this CustomRule to a property,
and the rule will run asynchronously. This is done in the business class’s AddBusinessRules
method.
&lt;/p&gt;
&lt;p&gt;
In your UI you can use helper components such as Csla.Xaml.PropertyInfo to determine
that the property is running an async rule. For example, you might use XAML like this
in WinRT:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;TextBox Text=&amp;quot;{Binding Path=Name, Mode=TwoWay}&amp;quot;/&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=NameInfo,Path=RuleDescription}&amp;quot;
Foreground=&amp;quot;Yellow&amp;quot;/&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;ProgressRing IsActive=&amp;quot;{Binding ElementName=NameInfo,Path=IsBusy}&amp;quot;/&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;csla:PropertyInfo Name=&amp;quot;NameInfo&amp;quot; Source=&amp;quot;{Binding}&amp;quot;
Property=&amp;quot;Name&amp;quot;/&amp;gt; 
&lt;br /&gt;
&amp;lt;/StackPanel&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The specific XAML syntax is a little different in WPF/Silverlight because the XAML
language is more mature there than in WinRT. But the basic concept of building a rich
user experience based on an async rule is the same across all smart client platforms.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=0f6164fa-537a-49ed-8902-a4909ba52b6c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,0f6164fa-537a-49ed-8902-a4909ba52b6c.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
      <category>WinRT</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a07c0f7b-d154-4702-909c-8e3fcd223724</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a07c0f7b-d154-4702-909c-8e3fcd223724.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a07c0f7b-d154-4702-909c-8e3fcd223724.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a07c0f7b-d154-4702-909c-8e3fcd223724</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have put CSLA 4 version 4.5 beta 2 online as we continue toward the planned final
release of version 4.5 on or before Oct 26.
</p>
        <p>
Version 4.5.3 is available via nuget and from the <a href="http://www.lhotka.net/cslanet/Download.aspx">CSLA
download page</a>.
</p>
        <p>
The <a href="http://www.lhotka.net/Article.aspx?id=76e23c41-1f45-4c2e-9891-0f1e244dc679">change
log</a> contains a list of all changes. Highlights include:
</p>
        <ol>
          <li>
Substantial changes to CslaActionExtender for Windows Forms</li>
          <li>
Substantial (and some breaking) changes to pre- and post-processing methods around
the data portal</li>
          <li>
Added the ability to global implement pre- and post-processing handler to server-side
data portal to enable logging/tracing and IoC scenarios</li>
        </ol>
        <p>
At this point we are feature complete, so any releases between now and final release
will be bug fixes or stabilization.
</p>
        <p>
Version 4.5 supports the following platforms:
</p>
        <ul>
          <li>
.NET 4 (with async targeting pack)</li>
          <li>
Silverlight 5 (with async targeting pack)</li>
          <li>
.NET 4.5</li>
          <li>
WinRT</li>
        </ul>
        <p>
If you are using any of these platforms, please download and test this new release.
Here are some notes regarding <a href="http://forums.lhotka.net/forums/t/11624.aspx">upgrading
from version 4 to 4.5</a>.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a07c0f7b-d154-4702-909c-8e3fcd223724" />
      </body>
      <title>CSLA 4 version 4.5.3 Beta 2 online</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a07c0f7b-d154-4702-909c-8e3fcd223724.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version453Beta2Online.aspx</link>
      <pubDate>Fri, 05 Oct 2012 02:13:38 GMT</pubDate>
      <description>&lt;p&gt;
I have put CSLA 4 version 4.5 beta 2 online as we continue toward the planned final
release of version 4.5 on or before Oct 26.
&lt;/p&gt;
&lt;p&gt;
Version 4.5.3 is available via nuget and from the &lt;a href="http://www.lhotka.net/cslanet/Download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="http://www.lhotka.net/Article.aspx?id=76e23c41-1f45-4c2e-9891-0f1e244dc679"&gt;change
log&lt;/a&gt; contains a list of all changes. Highlights include:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Substantial changes to CslaActionExtender for Windows Forms&lt;/li&gt;
&lt;li&gt;
Substantial (and some breaking) changes to pre- and post-processing methods around
the data portal&lt;/li&gt;
&lt;li&gt;
Added the ability to global implement pre- and post-processing handler to server-side
data portal to enable logging/tracing and IoC scenarios&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
At this point we are feature complete, so any releases between now and final release
will be bug fixes or stabilization.
&lt;/p&gt;
&lt;p&gt;
Version 4.5 supports the following platforms:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET 4 (with async targeting pack)&lt;/li&gt;
&lt;li&gt;
Silverlight 5 (with async targeting pack)&lt;/li&gt;
&lt;li&gt;
.NET 4.5&lt;/li&gt;
&lt;li&gt;
WinRT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you are using any of these platforms, please download and test this new release.
Here are some notes regarding &lt;a href="http://forums.lhotka.net/forums/t/11624.aspx"&gt;upgrading
from version 4 to 4.5&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a07c0f7b-d154-4702-909c-8e3fcd223724" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a07c0f7b-d154-4702-909c-8e3fcd223724.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a15baac7-b16e-41ec-9c18-52426f91e159</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a15baac7-b16e-41ec-9c18-52426f91e159.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a15baac7-b16e-41ec-9c18-52426f91e159.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a15baac7-b16e-41ec-9c18-52426f91e159</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just checked in a series of data portal enhancements that have been on the wish
list for a while. Mostly focused on pre- and post-processing behaviors.
</p>
        <p>
The big one is that you can now provide an IInterceptDataPortal provider on the server
to get Initialize and Complete notifications for every data portal call, allowing
for logging/tracing and IoC scenarios. The logging/tracing is probably obvious, because
these methods get a lot of detail about each data portal server invocation and you
can do what you’d like with that data. The IoC scenario may be less obvious, but the
Initialize method should provide you with a consistent way to create or retrieve your
server-side IoC container so it is available for the duration of the server-side processing.
I suspect most people will put the container instance in Csla.Application.LocalContext
to ensure it is easily and consistently available to all code regardless of runtime
environment (ASP.NET, pure .NET, WinRT, Silverlight).
</p>
        <p>
The existing pre- and post-processing calls now all get a lot more data than they
did before, so they should be more useful by far. The primary focus was on the Invoke,
InvokeComplete, and InvokeException methods in factory objects, where the previous
implementation was poor. In that context I did make <font style="background-color: #ffff00">a
breaking change</font>, because those methods are now passed a Csla.DataPortalEventArgs
value as a parameter, instead of the more limited DataPortalContext they got before.
</p>
        <p>
While I was doing this change though, I also increased the amount of data provided
to the pre and post-processing DataPortal_XYZ and Child_XYZ style methods. So everyone
gets an upgrade <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/More-data-portal-enhancements-for-CSLA.5_D78F/wlEmoticon-smile_2.png" /></p>
        <p>
Finally, the data portal no longer returns the business object to the client when
an exception happens – at least by default. Up to this point the data portal has always
returned the business object from the server to the client via the DataPortalException,
but almost no one actually uses that value. By not returning it, we save a bunch of
network traffic and improve performance. If you <em>want</em> the value, you can configure
the data portal to use the older behavior. So this is <font style="background-color: #ffff00">a
breaking change</font>, but one with an easy workaround.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a15baac7-b16e-41ec-9c18-52426f91e159" />
      </body>
      <title>More data portal enhancements for CSLA 4.5</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a15baac7-b16e-41ec-9c18-52426f91e159.aspx</guid>
      <link>http://www.lhotka.net/weblog/MoreDataPortalEnhancementsForCSLA45.aspx</link>
      <pubDate>Mon, 01 Oct 2012 20:26:41 GMT</pubDate>
      <description>&lt;p&gt;
I just checked in a series of data portal enhancements that have been on the wish
list for a while. Mostly focused on pre- and post-processing behaviors.
&lt;/p&gt;
&lt;p&gt;
The big one is that you can now provide an IInterceptDataPortal provider on the server
to get Initialize and Complete notifications for every data portal call, allowing
for logging/tracing and IoC scenarios. The logging/tracing is probably obvious, because
these methods get a lot of detail about each data portal server invocation and you
can do what you’d like with that data. The IoC scenario may be less obvious, but the
Initialize method should provide you with a consistent way to create or retrieve your
server-side IoC container so it is available for the duration of the server-side processing.
I suspect most people will put the container instance in Csla.Application.LocalContext
to ensure it is easily and consistently available to all code regardless of runtime
environment (ASP.NET, pure .NET, WinRT, Silverlight).
&lt;/p&gt;
&lt;p&gt;
The existing pre- and post-processing calls now all get a lot more data than they
did before, so they should be more useful by far. The primary focus was on the Invoke,
InvokeComplete, and InvokeException methods in factory objects, where the previous
implementation was poor. In that context I did make &lt;font style="background-color: #ffff00"&gt;a
breaking change&lt;/font&gt;, because those methods are now passed a Csla.DataPortalEventArgs
value as a parameter, instead of the more limited DataPortalContext they got before.
&lt;/p&gt;
&lt;p&gt;
While I was doing this change though, I also increased the amount of data provided
to the pre and post-processing DataPortal_XYZ and Child_XYZ style methods. So everyone
gets an upgrade &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/More-data-portal-enhancements-for-CSLA.5_D78F/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
Finally, the data portal no longer returns the business object to the client when
an exception happens – at least by default. Up to this point the data portal has always
returned the business object from the server to the client via the DataPortalException,
but almost no one actually uses that value. By not returning it, we save a bunch of
network traffic and improve performance. If you &lt;em&gt;want&lt;/em&gt; the value, you can configure
the data portal to use the older behavior. So this is &lt;font style="background-color: #ffff00"&gt;a
breaking change&lt;/font&gt;, but one with an easy workaround.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a15baac7-b16e-41ec-9c18-52426f91e159" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a15baac7-b16e-41ec-9c18-52426f91e159.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a6b791e5-b7bb-40ec-bc99-cb6ea741c731</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a6b791e5-b7bb-40ec-bc99-cb6ea741c731.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a6b791e5-b7bb-40ec-bc99-cb6ea741c731.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a6b791e5-b7bb-40ec-bc99-cb6ea741c731</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 version 4.5.2 is now online. This is Beta 1 of the 4.5 release, and is the
start of the beta process. I expect to release a number of betas in relatively short
order between now and the end of October. My plan is to have a final release before
Windows 8 GA.
</p>
        <p>
You can get this beta release from nuget (show unreleased versions), or via the installer
from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA download page</a>.
</p>
        <p>
This release supports .NET 4, .NET 4.5, WinRT, and Silverlight 5.
</p>
        <p>
This beta release is a <em>major</em> change over the previous preview releases.
</p>
        <ol>
          <li>
CSLA now fully supports the new WinRT platform for Windows 8 development.</li>
          <li>
The data portal now supports async/await on the client and on the server. Additionally,
the .NET, WinRT, and Silverlight data portal implementations are now the same. There
is no longer a “Silverlight data portal”. To make this happen, the data portal pipeline
underwent major changes. <font style="background-color: #ffff00">This includes a number
of breaking changes.</font></li>
          <li>
The MobileFormatter is now available for use by .NET applications (not just Silverlight
and WinRT). This <em>might</em> allow .NET apps to run in partial trust, and certainly
allows .NET apps to use the same data portal channel/endpoint  as a WinRT or
Silverlight app.</li>
          <li>
Jonny has done a lot of work on the business rules engine. There shouldn’t be any
real breaking changes, but there are a lot of good new features.</li>
          <li>
BusinessBase metastate properties (such as IsDirty) are now bindable – they raise
PropertyChanged as you’d expect. This enables some XAML scenarios, but be careful
because WinRT XAML doesn’t notice when the DataContext has changed, so you can run
into some strange issues when saving an editable object in WinRT.</li>
          <li>
Johann put a lot of work into the nuget release process, allowing us to use nuget
for prereleases like this one, and to create a nuget package with code templates for
use in your projects.</li>
          <li>
We now support .NET 4.5 and 4.0 with CSLA 4.5, so you can use the same CSLA 4.5 on
existing .NET 4 machines, on Windows Azure, and also use it on .NET 4.5 machines.
A 4.5 client can talk to a .NET 4 server and visa versa.</li>
          <li>
WinRT now includes language resources.</li>
          <li>
A number of changes were made to the Windows Forms CslaActionExtender type.</li>
        </ol>
        <p>
Be aware that the .NET 4 and Silverlight 5 environments now <em>require</em> that
you use the Async Targeting Pack from Microsoft (typically via nuget) so that CSLA
and your code can use the async/await keywords and related functionality.
</p>
        <p>
Be aware that <a href="http://www.lhotka.net/weblog/CSLADataPortalChangesInVersion45.aspx">the
data portal has breaking changes</a>, especially for Silverlight users. Some highlights
of breaking changes:
</p>
        <ul>
          <li>
The Enterprise Services, Remoting, and asmx data portal channels have been removed.
If you need these wire transport technologies you can create your own proxy and host
types based on the version 3.8 code (perhaps they’ll end up in CslaContrib at some
point).</li>
          <li>
The namespaces for proxy and host types that included “Silverlight” in the namespace
now use the term “Mobile” instead. For example, Csla.Server.Hosts.IWcfPortal is now
Csla.Server.Hosts.Mobile.IWcfPortal.</li>
          <li>
The client-side ProxyMode concept is now eliminated entirely, and you should use the
same RunLocal attribute in Silverlight as you do in .NET.</li>
          <li>
All client-side DataPortal_XYZ methods in Silverlight are now different, and no longer
accept a callback handler parameter. Instead, code all client-side DataPortal_XYZ
methods for Silverlight just as you would for .NET.</li>
        </ul>
        <p>
Please direct any comments, suggestions, bug reports, or other feedback to the <a href="http://forums.lhotka.net/forums/5.aspx">CSLA
forums</a>.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a6b791e5-b7bb-40ec-bc99-cb6ea741c731" />
      </body>
      <title>CSLA 4 version 4.5 beta 1 released</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a6b791e5-b7bb-40ec-bc99-cb6ea741c731.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version45Beta1Released.aspx</link>
      <pubDate>Mon, 24 Sep 2012 20:16:59 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 version 4.5.2 is now online. This is Beta 1 of the 4.5 release, and is the
start of the beta process. I expect to release a number of betas in relatively short
order between now and the end of October. My plan is to have a final release before
Windows 8 GA.
&lt;/p&gt;
&lt;p&gt;
You can get this beta release from nuget (show unreleased versions), or via the installer
from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This release supports .NET 4, .NET 4.5, WinRT, and Silverlight 5.
&lt;/p&gt;
&lt;p&gt;
This beta release is a &lt;em&gt;major&lt;/em&gt; change over the previous preview releases.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
CSLA now fully supports the new WinRT platform for Windows 8 development.&lt;/li&gt;
&lt;li&gt;
The data portal now supports async/await on the client and on the server. Additionally,
the .NET, WinRT, and Silverlight data portal implementations are now the same. There
is no longer a “Silverlight data portal”. To make this happen, the data portal pipeline
underwent major changes. &lt;font style="background-color: #ffff00"&gt;This includes a number
of breaking changes.&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
The MobileFormatter is now available for use by .NET applications (not just Silverlight
and WinRT). This &lt;em&gt;might&lt;/em&gt; allow .NET apps to run in partial trust, and certainly
allows .NET apps to use the same data portal channel/endpoint&amp;#160; as a WinRT or
Silverlight app.&lt;/li&gt;
&lt;li&gt;
Jonny has done a lot of work on the business rules engine. There shouldn’t be any
real breaking changes, but there are a lot of good new features.&lt;/li&gt;
&lt;li&gt;
BusinessBase metastate properties (such as IsDirty) are now bindable – they raise
PropertyChanged as you’d expect. This enables some XAML scenarios, but be careful
because WinRT XAML doesn’t notice when the DataContext has changed, so you can run
into some strange issues when saving an editable object in WinRT.&lt;/li&gt;
&lt;li&gt;
Johann put a lot of work into the nuget release process, allowing us to use nuget
for prereleases like this one, and to create a nuget package with code templates for
use in your projects.&lt;/li&gt;
&lt;li&gt;
We now support .NET 4.5 and 4.0 with CSLA 4.5, so you can use the same CSLA 4.5 on
existing .NET 4 machines, on Windows Azure, and also use it on .NET 4.5 machines.
A 4.5 client can talk to a .NET 4 server and visa versa.&lt;/li&gt;
&lt;li&gt;
WinRT now includes language resources.&lt;/li&gt;
&lt;li&gt;
A number of changes were made to the Windows Forms CslaActionExtender type.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Be aware that the .NET 4 and Silverlight 5 environments now &lt;em&gt;require&lt;/em&gt; that
you use the Async Targeting Pack from Microsoft (typically via nuget) so that CSLA
and your code can use the async/await keywords and related functionality.
&lt;/p&gt;
&lt;p&gt;
Be aware that &lt;a href="http://www.lhotka.net/weblog/CSLADataPortalChangesInVersion45.aspx"&gt;the
data portal has breaking changes&lt;/a&gt;, especially for Silverlight users. Some highlights
of breaking changes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
The Enterprise Services, Remoting, and asmx data portal channels have been removed.
If you need these wire transport technologies you can create your own proxy and host
types based on the version 3.8 code (perhaps they’ll end up in CslaContrib at some
point).&lt;/li&gt;
&lt;li&gt;
The namespaces for proxy and host types that included “Silverlight” in the namespace
now use the term “Mobile” instead. For example, Csla.Server.Hosts.IWcfPortal is now
Csla.Server.Hosts.Mobile.IWcfPortal.&lt;/li&gt;
&lt;li&gt;
The client-side ProxyMode concept is now eliminated entirely, and you should use the
same RunLocal attribute in Silverlight as you do in .NET.&lt;/li&gt;
&lt;li&gt;
All client-side DataPortal_XYZ methods in Silverlight are now different, and no longer
accept a callback handler parameter. Instead, code all client-side DataPortal_XYZ
methods for Silverlight just as you would for .NET.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Please direct any comments, suggestions, bug reports, or other feedback to the &lt;a href="http://forums.lhotka.net/forums/5.aspx"&gt;CSLA
forums&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a6b791e5-b7bb-40ec-bc99-cb6ea741c731" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a6b791e5-b7bb-40ec-bc99-cb6ea741c731.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a32f60d0-37e3-415d-93cf-ea2c375974f8</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a32f60d0-37e3-415d-93cf-ea2c375974f8.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a32f60d0-37e3-415d-93cf-ea2c375974f8.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a32f60d0-37e3-415d-93cf-ea2c375974f8</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Check out the new logo graphics for CSLA 4 version 4.5!
</p>
        <p>
Thank you to Sandra Fougerousse for creating these updated Windows 8 style logo graphics!
</p>
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.5-gets-a-new-logo_A458/csla%20win8_2.png">
            <img title="csla win8" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="csla win8" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.5-gets-a-new-logo_A458/csla%20win8_thumb.png" width="183" height="376" />
          </a>
        </p>
        <p>
For those who are wondering, I expect to put a beta of version 4.5 online shortly
after August 15 (when Windows 8 and Visual Studio 2012 final bits are available).
That will start the beta cycle, with a planned release of version 4.5 around the end
of October (if not sooner). I’m very exited to get CSLA .NET for WinRT into the hands
of app developers!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a32f60d0-37e3-415d-93cf-ea2c375974f8" />
      </body>
      <title>CSLA 4 version 4.5 gets a new logo</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a32f60d0-37e3-415d-93cf-ea2c375974f8.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version45GetsANewLogo.aspx</link>
      <pubDate>Wed, 01 Aug 2012 16:45:32 GMT</pubDate>
      <description>&lt;p&gt;
Check out the new logo graphics for CSLA 4 version 4.5!
&lt;/p&gt;
&lt;p&gt;
Thank you to Sandra Fougerousse for creating these updated Windows 8 style logo graphics!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.5-gets-a-new-logo_A458/csla%20win8_2.png"&gt;&lt;img title="csla win8" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="csla win8" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.5-gets-a-new-logo_A458/csla%20win8_thumb.png" width="183" height="376" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For those who are wondering, I expect to put a beta of version 4.5 online shortly
after August 15 (when Windows 8 and Visual Studio 2012 final bits are available).
That will start the beta cycle, with a planned release of version 4.5 around the end
of October (if not sooner). I’m very exited to get CSLA .NET for WinRT into the hands
of app developers!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a32f60d0-37e3-415d-93cf-ea2c375974f8" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a32f60d0-37e3-415d-93cf-ea2c375974f8.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows 8</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=1cfed469-df70-4f07-918f-3270372dbf81</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,1cfed469-df70-4f07-918f-3270372dbf81.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,1cfed469-df70-4f07-918f-3270372dbf81.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=1cfed469-df70-4f07-918f-3270372dbf81</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I want to summarize some of the more major changes coming to the data portal in CSLA
4 version 4.5. Some of these are breaking changes.
</p>
        <p>
I’ve done four big things with the data portal:
</p>
        <ol>
          <li>
Added support for the new async/await keywords on the client and server</li>
          <li>
Merged the .NET and Silverlight data portal implementations into a single code base
that is now common across WinRT, .NET, and Silverlight</li>
          <li>
Removed the public virtual DataPortal_XYZ method definitions from Silverlight, because
it can now invoke non-public methods just like in .NET. Also, all local Silverlight
data portal methods no longer accept the async callback handler, because they now
support the async/await pattern</li>
          <li>
Remove the ProxyMode concept from the Silverlight data portal, because the RunLocal
attribute is now available on all platforms</li>
        </ol>
        <p>
All four have some level of breaking change.
</p>
        <p>
Adding comprehensive support for async/await changes the way .NET handles exceptions.
Although I’ve worked to keep the <em>top level</em> exceptions consistent, the actual
exception object graph (nested InnerExceptions) will almost certainly be different
now.
</p>
        <p>
Merging the .NET and Silverlight data portal implementations introduces a number of
relatively minor breaking changes for Silverlight users. Though if you’ve created
custom proxy/host pairs or other more advanced scenarios you might be more affected
than others. There may also be unintended side-effects to .NET users. Some might be
bugs, others might be necessary to achieve platform unification.
</p>
        <p>
Removing the public virtual DataPortal_XYZ methods from BusinessBase and BusinessListBase
will break anyone using the local Silverlight data portal. The fix is minor – just
change the public scopes to protected. This change shouldn’t affect anyone using .NET,
or using a remote data portal from Silverlight.
</p>
        <p>
Removing the async callback parameter from all Silverlight client-side DataPortal_XYZ
methods will break anyone using the local Silverlight data portal. The fix is to switch
to the new async/await pattern. The code changes are relatively minor, and generally
simplify your code, but if you’ve made extensive use of the client-side data portal
in Silverlight this will be a pretty big change I’m afraid.
</p>
        <p>
Similarly, removing the ProxyMode concept from the Silverlight data portal is a breaking
change for people using the local Silverlight data portal. Again, the fix is pretty
simple – just add the RunLocal attribute to the DataPortal_XYZ (or object factory)
methods as you have always done in .NET.
</p>
        <p>
On the upside, the coding patterns for writing code in .NET, WinRT, and Silverlight
are now the same.
</p>
        <p>
For example, a DataPortal_Fetch method <em>on any platform</em> looks like this:
</p>
        <blockquote>
          <p>
private void DataPortal_Fetch(int id)
</p>
        </blockquote>
        <p>
or like this
</p>
        <blockquote>
          <p>
private async Task DataPortal_Fetch(int id)
</p>
        </blockquote>
        <p>
The data portal will automatically detect if your method returns a Task and it will
await the method, allowing you to use the await keyword inside your DataPortal_XYZ
methods.
</p>
        <p>
Similarly, all platforms can now write this client-side code:
</p>
        <blockquote>
          <p>
var obj = await CustomerEdit.GetCustomerAsync(123);
</p>
        </blockquote>
        <p>
or the older event-style code:
</p>
        <blockquote>
          <p>
CustomerEdit.GetCustomer(123, (o, e) =&gt; 
<br />
  { 
<br />
      if (e.Error != null) 
<br />
          throw e.Error; 
<br />
     else 
<br />
          obj = e.Object; 
<br />
  });
</p>
        </blockquote>
        <p>
Only .NET code can use the synchronous approach:
</p>
        <blockquote>
          <p>
var obj = CustomerEdit.GetCustomer(123);
</p>
        </blockquote>
        <p>
This is one of the few platform-specific concepts left in the data portal.
</p>
        <p>
What is really cool is that the client and server sync/async concepts can be mixed
(as long as you know what to expect).
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="877">
          <tbody>
            <tr>
              <td valign="top" width="79">
Client method</td>
              <td valign="top" width="77">
Client platform</td>
              <td valign="top" width="141">
Server method</td>
              <td valign="top" width="10">
Server platform</td>
              <td valign="top" width="571">
Remarks</td>
            </tr>
            <tr>
              <td valign="top" width="83">
Fetch</td>
              <td valign="top" width="81">
.NET only</td>
              <td valign="top" width="141">
void DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is synchronous; server call is synchronous</td>
            </tr>
            <tr>
              <td valign="top" width="83">
Fetch</td>
              <td valign="top" width="81">
.NET only</td>
              <td valign="top" width="141">
Task DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is synchronous; server call is asynchronous; note that client will block
until the server’s work is complete</td>
            </tr>
            <tr>
              <td valign="top" width="83">
BeginFetch</td>
              <td valign="top" width="81">
any</td>
              <td valign="top" width="141">
void DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is asynchronous (event-based); server call is synchronous; client will
not block, and must handle the callback event to be notified when the server call
is complete</td>
            </tr>
            <tr>
              <td valign="top" width="83">
BeginFetch</td>
              <td valign="top" width="81">
any</td>
              <td valign="top" width="141">
Task DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is asynchronous (event-based); server call is asynchronous; client will
not block, and must handle the callback event to be notified when the server call
is complete</td>
            </tr>
            <tr>
              <td valign="top" width="83">
FetchAsync</td>
              <td valign="top" width="81">
any</td>
              <td valign="top" width="141">
void DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is asynchronous; server call is synchronous; client will block or not,
depending on how you invoke the client-side Task (using await or other techniques);
the client-side Task will complete when the server call is complete</td>
            </tr>
            <tr>
              <td valign="top" width="83">
FetchAsync</td>
              <td valign="top" width="81">
any</td>
              <td valign="top" width="141">
Task DataPortal_Fetch</td>
              <td valign="top" width="10">
any</td>
              <td valign="top" width="571">
Client call is asynchronous; server call is asynchronous; client will block or not,
depending on how you invoke the client-side Task (using await or other techniques);
the client-side Task will complete when the server call is complete</td>
            </tr>
          </tbody>
        </table>
        <p>
I expect all client-side data portal code to switch to the async/await versions of
the methods, and so I’ve made them the mainline path through the data portal. The
synchronous and event-based async methods use async/await techniques behind the scenes
to do implement the desired behaviors.
</p>
        <p>
There is a lot of variety in how you can invoke an awaitable method like FetchAsync.
The specific async behaviors you should expect will vary depending on how you invoke
the method. For example, there’s a big difference between using the await keyword
or the Result or RunSynchronously methods:
</p>
        <blockquote>
          <p>
var obj = await CustomerEdit.GetCustomerAsync(123);
</p>
          <p>
var obj = CustomerEdit.GetCustomerAsync(123).Result;
</p>
        </blockquote>
        <p>
The former is async, the latter is sync. The former will return a simple exception
(if one occurs), the latter will return an AggregateException containing the simple
exception. This has little to do with CSLA, and nearly everything to do with the way
the async/await and task parallel library (TPL) are implemented by .NET.
</p>
        <p>
Finally, I do need to state that the actual network transport (typically WCF) used
by .NET, Silverlight, and WinRT aren’t the same. This is because WCF in .NET is far
more flexible than in Silverlight or WinRT. And because the WCF client-side proxies
generated for Silverlight use event-driven async methods, and in WinRT the proxy is
task-based.
</p>
        <p>
The data portal hides these differences pretty effectively, but you should understand
that they exist, and as a result there may be subtle behavioral differences between
platforms, especially when it comes to exceptions and exception details. The success
paths for creating, fetching, updating, and deleting objects are identical, but there
may be edge cases where differences exist.
</p>
        <p>
All in all I am quite pleased with how this is turning out. I’ve put a massive amount
of work into the data portal for 4.5, especially around unifying the implementations
across platforms. I suspect there’ll be some issues to work through during the beta
testing phase, but the end result is a far more consistent, maintainable, and streamlined
codebase for all platforms. That will benefit all of us over time.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=1cfed469-df70-4f07-918f-3270372dbf81" />
      </body>
      <title>CSLA data portal changes in version 4.5</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,1cfed469-df70-4f07-918f-3270372dbf81.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLADataPortalChangesInVersion45.aspx</link>
      <pubDate>Tue, 31 Jul 2012 04:53:23 GMT</pubDate>
      <description>&lt;p&gt;
I want to summarize some of the more major changes coming to the data portal in CSLA
4 version 4.5. Some of these are breaking changes.
&lt;/p&gt;
&lt;p&gt;
I’ve done four big things with the data portal:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Added support for the new async/await keywords on the client and server&lt;/li&gt;
&lt;li&gt;
Merged the .NET and Silverlight data portal implementations into a single code base
that is now common across WinRT, .NET, and Silverlight&lt;/li&gt;
&lt;li&gt;
Removed the public virtual DataPortal_XYZ method definitions from Silverlight, because
it can now invoke non-public methods just like in .NET. Also, all local Silverlight
data portal methods no longer accept the async callback handler, because they now
support the async/await pattern&lt;/li&gt;
&lt;li&gt;
Remove the ProxyMode concept from the Silverlight data portal, because the RunLocal
attribute is now available on all platforms&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
All four have some level of breaking change.
&lt;/p&gt;
&lt;p&gt;
Adding comprehensive support for async/await changes the way .NET handles exceptions.
Although I’ve worked to keep the &lt;em&gt;top level&lt;/em&gt; exceptions consistent, the actual
exception object graph (nested InnerExceptions) will almost certainly be different
now.
&lt;/p&gt;
&lt;p&gt;
Merging the .NET and Silverlight data portal implementations introduces a number of
relatively minor breaking changes for Silverlight users. Though if you’ve created
custom proxy/host pairs or other more advanced scenarios you might be more affected
than others. There may also be unintended side-effects to .NET users. Some might be
bugs, others might be necessary to achieve platform unification.
&lt;/p&gt;
&lt;p&gt;
Removing the public virtual DataPortal_XYZ methods from BusinessBase and BusinessListBase
will break anyone using the local Silverlight data portal. The fix is minor – just
change the public scopes to protected. This change shouldn’t affect anyone using .NET,
or using a remote data portal from Silverlight.
&lt;/p&gt;
&lt;p&gt;
Removing the async callback parameter from all Silverlight client-side DataPortal_XYZ
methods will break anyone using the local Silverlight data portal. The fix is to switch
to the new async/await pattern. The code changes are relatively minor, and generally
simplify your code, but if you’ve made extensive use of the client-side data portal
in Silverlight this will be a pretty big change I’m afraid.
&lt;/p&gt;
&lt;p&gt;
Similarly, removing the ProxyMode concept from the Silverlight data portal is a breaking
change for people using the local Silverlight data portal. Again, the fix is pretty
simple – just add the RunLocal attribute to the DataPortal_XYZ (or object factory)
methods as you have always done in .NET.
&lt;/p&gt;
&lt;p&gt;
On the upside, the coding patterns for writing code in .NET, WinRT, and Silverlight
are now the same.
&lt;/p&gt;
&lt;p&gt;
For example, a DataPortal_Fetch method &lt;em&gt;on any platform&lt;/em&gt; looks like this:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
private void DataPortal_Fetch(int id)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
or like this
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
private async Task DataPortal_Fetch(int id)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The data portal will automatically detect if your method returns a Task and it will
await the method, allowing you to use the await keyword inside your DataPortal_XYZ
methods.
&lt;/p&gt;
&lt;p&gt;
Similarly, all platforms can now write this client-side code:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
var obj = await CustomerEdit.GetCustomerAsync(123);
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
or the older event-style code:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
CustomerEdit.GetCustomer(123, (o, e) =&amp;gt; 
&lt;br /&gt;
&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (e.Error != null) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; throw e.Error; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160; else 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; obj = e.Object; 
&lt;br /&gt;
&amp;#160; });
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Only .NET code can use the synchronous approach:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
var obj = CustomerEdit.GetCustomer(123);
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This is one of the few platform-specific concepts left in the data portal.
&lt;/p&gt;
&lt;p&gt;
What is really cool is that the client and server sync/async concepts can be mixed
(as long as you know what to expect).
&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="877"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="79"&gt;
Client method&lt;/td&gt;
&lt;td valign="top" width="77"&gt;
Client platform&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
Server method&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
Server platform&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Remarks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
Fetch&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
.NET only&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
void DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is synchronous; server call is synchronous&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
Fetch&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
.NET only&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
Task DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is synchronous; server call is asynchronous; note that client will block
until the server’s work is complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
BeginFetch&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
void DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is asynchronous (event-based); server call is synchronous; client will
not block, and must handle the callback event to be notified when the server call
is complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
BeginFetch&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
Task DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is asynchronous (event-based); server call is asynchronous; client will
not block, and must handle the callback event to be notified when the server call
is complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
FetchAsync&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
void DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is asynchronous; server call is synchronous; client will block or not,
depending on how you invoke the client-side Task (using await or other techniques);
the client-side Task will complete when the server call is complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="83"&gt;
FetchAsync&lt;/td&gt;
&lt;td valign="top" width="81"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="141"&gt;
Task DataPortal_Fetch&lt;/td&gt;
&lt;td valign="top" width="10"&gt;
any&lt;/td&gt;
&lt;td valign="top" width="571"&gt;
Client call is asynchronous; server call is asynchronous; client will block or not,
depending on how you invoke the client-side Task (using await or other techniques);
the client-side Task will complete when the server call is complete&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
I expect all client-side data portal code to switch to the async/await versions of
the methods, and so I’ve made them the mainline path through the data portal. The
synchronous and event-based async methods use async/await techniques behind the scenes
to do implement the desired behaviors.
&lt;/p&gt;
&lt;p&gt;
There is a lot of variety in how you can invoke an awaitable method like FetchAsync.
The specific async behaviors you should expect will vary depending on how you invoke
the method. For example, there’s a big difference between using the await keyword
or the Result or RunSynchronously methods:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
var obj = await CustomerEdit.GetCustomerAsync(123);
&lt;/p&gt;
&lt;p&gt;
var obj = CustomerEdit.GetCustomerAsync(123).Result;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The former is async, the latter is sync. The former will return a simple exception
(if one occurs), the latter will return an AggregateException containing the simple
exception. This has little to do with CSLA, and nearly everything to do with the way
the async/await and task parallel library (TPL) are implemented by .NET.
&lt;/p&gt;
&lt;p&gt;
Finally, I do need to state that the actual network transport (typically WCF) used
by .NET, Silverlight, and WinRT aren’t the same. This is because WCF in .NET is far
more flexible than in Silverlight or WinRT. And because the WCF client-side proxies
generated for Silverlight use event-driven async methods, and in WinRT the proxy is
task-based.
&lt;/p&gt;
&lt;p&gt;
The data portal hides these differences pretty effectively, but you should understand
that they exist, and as a result there may be subtle behavioral differences between
platforms, especially when it comes to exceptions and exception details. The success
paths for creating, fetching, updating, and deleting objects are identical, but there
may be edge cases where differences exist.
&lt;/p&gt;
&lt;p&gt;
All in all I am quite pleased with how this is turning out. I’ve put a massive amount
of work into the data portal for 4.5, especially around unifying the implementations
across platforms. I suspect there’ll be some issues to work through during the beta
testing phase, but the end result is a far more consistent, maintainable, and streamlined
codebase for all platforms. That will benefit all of us over time.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=1cfed469-df70-4f07-918f-3270372dbf81" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,1cfed469-df70-4f07-918f-3270372dbf81.aspx</comments>
      <category>CSLA .NET</category>
      <category>Microsoft .NET</category>
      <category>Silverlight</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d0a3e74e-3441-44da-8a8b-8eb22ac76b9e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d0a3e74e-3441-44da-8a8b-8eb22ac76b9e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d0a3e74e-3441-44da-8a8b-8eb22ac76b9e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d0a3e74e-3441-44da-8a8b-8eb22ac76b9e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have put an early version of CSLA 4 version 4.5 (version 4.5.1) online. This is
a stable alpha release that supports:
</p>
        <ul>
          <li>
Microsoft .NET 4.5</li>
          <li>
WinRT Metro style apps on Windows 8</li>
          <li>
Silverlight 5</li>
        </ul>
        <p>
You can get it from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
This version doesn’t currently support Windows Phone, mono, or Android because all
work is being done using Visual Studio 2012. We’ll reintroduce support for those platforms
as everything gets supported on VS12.
</p>
        <ul>
          <li>
This 4.5 release has the same functionality as version 4.3.12, plus some functionality
we’ve added only to 4.5. Most notably:</li>
          <li>
The .NET and WinRT data portal now supports the new async/await keywords through methods
like CreateAsync and SaveAsync 
<br />
    var obj = Csla.DataPortal.FetchAsync&lt;CustomerEdit&gt;(id);</li>
          <li>
The ViewModelBase class for WPF and WinRT now has an InitAsync method so you can await
initialization of the viewmodel object 
<br />
    var vm = await new MyViewModel().InitAsync();</li>
          <li>
Enhancements to business rule processing</li>
        </ul>
        <p>
See the <a href="http://www.lhotka.net/Article.aspx?id=76e23c41-1f45-4c2e-9891-0f1e244dc679">4.5
change log</a> for more detail.
</p>
        <p>
Because this is an alpha release, you should expect more changes as we improve support
for .NET 4.5 (most notably ASP.NET Web Forms, MVC, and Web API), and for WinRT/Metro.
</p>
        <p>
At the same time, this should be a reasonably stable release, especially on .NET where
the platform is also stable. It is also reasonably stable on WinRT/Metro, though there
are more changes involved there so there could be more bugs.
</p>
        <p>
Please direct feedback to the <a href="http://forums.lhotka.net/forums/5.aspx">CSLA
forums</a>.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d0a3e74e-3441-44da-8a8b-8eb22ac76b9e" />
      </body>
      <title>CSLA 4 version 4.5 alpha available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d0a3e74e-3441-44da-8a8b-8eb22ac76b9e.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version45AlphaAvailable.aspx</link>
      <pubDate>Fri, 08 Jun 2012 04:19:34 GMT</pubDate>
      <description>&lt;p&gt;
I have put an early version of CSLA 4 version 4.5 (version 4.5.1) online. This is
a stable alpha release that supports:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft .NET 4.5&lt;/li&gt;
&lt;li&gt;
WinRT Metro style apps on Windows 8&lt;/li&gt;
&lt;li&gt;
Silverlight 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can get it from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This version doesn’t currently support Windows Phone, mono, or Android because all
work is being done using Visual Studio 2012. We’ll reintroduce support for those platforms
as everything gets supported on VS12.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
This 4.5 release has the same functionality as version 4.3.12, plus some functionality
we’ve added only to 4.5. Most notably:&lt;/li&gt;
&lt;li&gt;
The .NET and WinRT data portal now supports the new async/await keywords through methods
like CreateAsync and SaveAsync 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; var obj = Csla.DataPortal.FetchAsync&amp;lt;CustomerEdit&amp;gt;(id);&lt;/li&gt;
&lt;li&gt;
The ViewModelBase class for WPF and WinRT now has an InitAsync method so you can await
initialization of the viewmodel object 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; var vm = await new MyViewModel().InitAsync();&lt;/li&gt;
&lt;li&gt;
Enhancements to business rule processing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
See the &lt;a href="http://www.lhotka.net/Article.aspx?id=76e23c41-1f45-4c2e-9891-0f1e244dc679"&gt;4.5
change log&lt;/a&gt; for more detail.
&lt;/p&gt;
&lt;p&gt;
Because this is an alpha release, you should expect more changes as we improve support
for .NET 4.5 (most notably ASP.NET Web Forms, MVC, and Web API), and for WinRT/Metro.
&lt;/p&gt;
&lt;p&gt;
At the same time, this should be a reasonably stable release, especially on .NET where
the platform is also stable. It is also reasonably stable on WinRT/Metro, though there
are more changes involved there so there could be more bugs.
&lt;/p&gt;
&lt;p&gt;
Please direct feedback to the &lt;a href="http://forums.lhotka.net/forums/5.aspx"&gt;CSLA
forums&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d0a3e74e-3441-44da-8a8b-8eb22ac76b9e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d0a3e74e-3441-44da-8a8b-8eb22ac76b9e.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=b8a5d81b-f06e-460a-8d84-8e0546d544eb</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,b8a5d81b-f06e-460a-8d84-8e0546d544eb.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,b8a5d81b-f06e-460a-8d84-8e0546d544eb.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=b8a5d81b-f06e-460a-8d84-8e0546d544eb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final release of a CSLA 4 update is now available (version 4.3.12) .
</p>
        <p>
You can get it from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a> or via nuget.
</p>
        <p>
One cool thing with nuget, is that (thanks to work by Johann Hough) the debug symbols
are now available on a symbol server. This means you can step through the CSLA code
while debugging if desired (and if you deployed CSLA to your project via nuget).
</p>
        <p>
This release is an update to the previous version 4.3 that includes several bug fixes
and a few new features. Most notably:
</p>
        <ul>
          <li>
Fixed a concurrency bug with the data portal 
</li>
          <li>
Fixed a XAML data binding bug with the PropertyInfo control 
</li>
          <li>
Substantial bug fixes and enhancements to the Windows Forms CslaActionExtender control 
</li>
          <li>
Better exception messages when methods/properties can’t be found 
</li>
        </ul>
        <p>
There are others as well – see the <a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775">change
log</a> for details.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=b8a5d81b-f06e-460a-8d84-8e0546d544eb" />
      </body>
      <title>CSLA 4 version 4.3.12 release</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,b8a5d81b-f06e-460a-8d84-8e0546d544eb.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4312Release.aspx</link>
      <pubDate>Thu, 07 Jun 2012 22:09:41 GMT</pubDate>
      <description>&lt;p&gt;
The final release of a CSLA 4 update is now available (version 4.3.12) .
&lt;/p&gt;
&lt;p&gt;
You can get it from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt; or via nuget.
&lt;/p&gt;
&lt;p&gt;
One cool thing with nuget, is that (thanks to work by Johann Hough) the debug symbols
are now available on a symbol server. This means you can step through the CSLA code
while debugging if desired (and if you deployed CSLA to your project via nuget).
&lt;/p&gt;
&lt;p&gt;
This release is an update to the previous version 4.3 that includes several bug fixes
and a few new features. Most notably:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Fixed a concurrency bug with the data portal 
&lt;/li&gt;
&lt;li&gt;
Fixed a XAML data binding bug with the PropertyInfo control 
&lt;/li&gt;
&lt;li&gt;
Substantial bug fixes and enhancements to the Windows Forms CslaActionExtender control 
&lt;/li&gt;
&lt;li&gt;
Better exception messages when methods/properties can’t be found 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There are others as well – see the &lt;a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775"&gt;change
log&lt;/a&gt; for details.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=b8a5d81b-f06e-460a-8d84-8e0546d544eb" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,b8a5d81b-f06e-460a-8d84-8e0546d544eb.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=e2fb8978-309a-4e47-8c96-600adfd8815d</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,e2fb8978-309a-4e47-8c96-600adfd8815d.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,e2fb8978-309a-4e47-8c96-600adfd8815d.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=e2fb8978-309a-4e47-8c96-600adfd8815d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A beta release of a CSLA 4 version 4.3 update is now available (version 4.3.11) .
</p>
        <p>
You can get it from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
This is an update to the existing version 4.3 code that includes several bug fixes
and a few new features. Most notably:
</p>
        <ul>
          <li>
Fixed a concurrency bug with the data portal</li>
          <li>
Fixed a XAML data binding bug with the PropertyInfo control</li>
          <li>
Substantial bug fixes and enhancements to the Windows Forms CslaActionExtender control</li>
          <li>
Better exception messages when methods/properties can’t be found</li>
        </ul>
        <p>
There are others as well – see the <a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775">change
log</a> for details.
</p>
        <p>
I expect the beta period to last about two weeks, followed by a final release of this
4.3 update.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e2fb8978-309a-4e47-8c96-600adfd8815d" />
      </body>
      <title>CSLA 4 version 4.3.11 beta available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,e2fb8978-309a-4e47-8c96-600adfd8815d.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4311BetaAvailable.aspx</link>
      <pubDate>Tue, 29 May 2012 15:59:40 GMT</pubDate>
      <description>&lt;p&gt;
A beta release of a CSLA 4 version 4.3 update is now available (version 4.3.11) .
&lt;/p&gt;
&lt;p&gt;
You can get it from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This is an update to the existing version 4.3 code that includes several bug fixes
and a few new features. Most notably:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Fixed a concurrency bug with the data portal&lt;/li&gt;
&lt;li&gt;
Fixed a XAML data binding bug with the PropertyInfo control&lt;/li&gt;
&lt;li&gt;
Substantial bug fixes and enhancements to the Windows Forms CslaActionExtender control&lt;/li&gt;
&lt;li&gt;
Better exception messages when methods/properties can’t be found&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There are others as well – see the &lt;a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775"&gt;change
log&lt;/a&gt; for details.
&lt;/p&gt;
&lt;p&gt;
I expect the beta period to last about two weeks, followed by a final release of this
4.3 update.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e2fb8978-309a-4e47-8c96-600adfd8815d" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,e2fb8978-309a-4e47-8c96-600adfd8815d.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=e9b66040-ee7a-4abb-977c-c1410e8ce18c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,e9b66040-ee7a-4abb-977c-c1410e8ce18c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,e9b66040-ee7a-4abb-977c-c1410e8ce18c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=e9b66040-ee7a-4abb-977c-c1410e8ce18c</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been spending quite a bit of time working with WinRT over the past couple weeks.
Specifically prepping for next week’s <a href="http://www.vslive.com/">Visual Studio
Live!</a> and <a href="http://www.devconnections.com/">VS Connections</a> conferences.
</p>
        <p>
As part of this process, I have a super early version of CSLA 4 version 4.5 that builds
and (mostly) runs on WinRT. I’d done a lot of the work months ago when the Windows
8 developer preview came out, so getting it to work on the consumer preview took only
a couple hours.
</p>
        <p>
The only new feature I’ve added so far is support for the new async and await keywords
for WinRT data portal code. I still need to add async/await support for the .NET data
portal. I might refine some of my implementation, but right now I can use async/await
to call the data portal in WinRT, and that’s cool!
</p>
        <p>
The primary observation I want to make right now though, is that business classes
created using CSLA 4 that target Silverlight will now recompile for WinRT with no
code changes required. I took the entire ProjectTracker business library project and
just recompiled it for WinRT and it works – unchanged.
</p>
        <blockquote>
          <p>
            <strong>
              <font style="background-color: #ffff00">If you want direct reuse of your business
logic from .NET/Silverlight to WinRT, you should consider using CSLA 4.</font>
            </strong>
          </p>
        </blockquote>
        <p>
Because I did add the async/await data portal support, I chose to add async factory
methods to my business classes, alongside the existing .NET and Silverlight factory
methods. From a porting/reuse perspective this is not necessary, but in terms of writing
new code for .NET 4.5 and/or WinRT I think we’ll all tend to write these async factory
methods.
</p>
        <p>
In short, I added code like this:
</p>
        <blockquote>
          <p>
            <font face="Courier New">#if WINRT 
<br />
    public async static System.Threading.Tasks.Task&lt;ProjectList&gt;
GetProjectListAsync() 
<br />
    { 
<br />
      return await Csla.DataPortal.FetchAsync&lt;ProjectTracker.Library.ProjectList&gt;(); 
<br />
    } 
<br />
#endif 
<br /></font>
          </p>
        </blockquote>
        <p>
This allows the viewmodel or other presentation layer code to retrieve business objects
like this:
</p>
        <blockquote>
          <p>
            <font face="Courier New">var obj = await ProjectList.GetProjectListAsync();</font>
          </p>
        </blockquote>
        <p>
No need for async callback handlers or the other messy goo from a typical WPF/Silverlight
application. Of course WPF 4.5 will be able to use the await keyword too, so only
SL/WP7 will still require the callback handler model when all is said and done.
</p>
        <p>
Although these are early days, and I am still working through all the features of
CSLA .NET to make sure they work on WinRT, it is nice to know that data binding, business/validation
rules, and the data portal are all functional already. I expect to still do some work
around authorization rules, and the local data portal implementation – but the vast
majority of CSLA 4 functionality is already working just fine on WinRT and that makes
me very happy!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e9b66040-ee7a-4abb-977c-c1410e8ce18c" />
      </body>
      <title>Early findings going from Silverlight to WinRT</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,e9b66040-ee7a-4abb-977c-c1410e8ce18c.aspx</guid>
      <link>http://www.lhotka.net/weblog/EarlyFindingsGoingFromSilverlightToWinRT.aspx</link>
      <pubDate>Wed, 21 Mar 2012 14:49:28 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been spending quite a bit of time working with WinRT over the past couple weeks.
Specifically prepping for next week’s &lt;a href="http://www.vslive.com/"&gt;Visual Studio
Live!&lt;/a&gt; and &lt;a href="http://www.devconnections.com/"&gt;VS Connections&lt;/a&gt; conferences.
&lt;/p&gt;
&lt;p&gt;
As part of this process, I have a super early version of CSLA 4 version 4.5 that builds
and (mostly) runs on WinRT. I’d done a lot of the work months ago when the Windows
8 developer preview came out, so getting it to work on the consumer preview took only
a couple hours.
&lt;/p&gt;
&lt;p&gt;
The only new feature I’ve added so far is support for the new async and await keywords
for WinRT data portal code. I still need to add async/await support for the .NET data
portal. I might refine some of my implementation, but right now I can use async/await
to call the data portal in WinRT, and that’s cool!
&lt;/p&gt;
&lt;p&gt;
The primary observation I want to make right now though, is that business classes
created using CSLA 4 that target Silverlight will now recompile for WinRT with no
code changes required. I took the entire ProjectTracker business library project and
just recompiled it for WinRT and it works – unchanged.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;If you want direct reuse of your business
logic from .NET/Silverlight to WinRT, you should consider using CSLA 4.&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Because I did add the async/await data portal support, I chose to add async factory
methods to my business classes, alongside the existing .NET and Silverlight factory
methods. From a porting/reuse perspective this is not necessary, but in terms of writing
new code for .NET 4.5 and/or WinRT I think we’ll all tend to write these async factory
methods.
&lt;/p&gt;
&lt;p&gt;
In short, I added code like this:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;#if WINRT 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; public async static System.Threading.Tasks.Task&amp;lt;ProjectList&amp;gt;
GetProjectListAsync() 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; { 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return await Csla.DataPortal.FetchAsync&amp;lt;ProjectTracker.Library.ProjectList&amp;gt;(); 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; } 
&lt;br /&gt;
#endif 
&lt;br /&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This allows the viewmodel or other presentation layer code to retrieve business objects
like this:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;var obj = await ProjectList.GetProjectListAsync();&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
No need for async callback handlers or the other messy goo from a typical WPF/Silverlight
application. Of course WPF 4.5 will be able to use the await keyword too, so only
SL/WP7 will still require the callback handler model when all is said and done.
&lt;/p&gt;
&lt;p&gt;
Although these are early days, and I am still working through all the features of
CSLA .NET to make sure they work on WinRT, it is nice to know that data binding, business/validation
rules, and the data portal are all functional already. I expect to still do some work
around authorization rules, and the local data portal implementation – but the vast
majority of CSLA 4 functionality is already working just fine on WinRT and that makes
me very happy!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e9b66040-ee7a-4abb-977c-c1410e8ce18c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,e9b66040-ee7a-4abb-977c-c1410e8ce18c.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=ff21aa43-f048-49d5-9d11-7518d2e2bae1</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,ff21aa43-f048-49d5-9d11-7518d2e2bae1.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,ff21aa43-f048-49d5-9d11-7518d2e2bae1.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=ff21aa43-f048-49d5-9d11-7518d2e2bae1</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
At a time when many organizations are moving from Windows XP or 2000 to Windows 7,
the last thing a lot of people want to think about is Windows 8. At the same time,
it is incredibly clear that the future of client computing is undergoing a major shift
thanks to the rapid growth of iPad and other tablet devices. Windows 8 is not only
the next desktop operating system from Microsoft, but it is also Microsoft’s answer
to this substantial shift toward low-power touch-based client devices.
</p>
        <p>
This change impacts not only the operating system, but the underlying application
development model. The new Windows Runtime (WinRT) development platform represents
an evolution for .NET developers, and a significant shift for non-.NET developers.
</p>
        <p>
Realistically, enterprises should expect two things. First, the enterprise desktop/laptop
platform will most likely continue its shift to Windows 7, and may remain on Windows
7 for many years. Second, the enterprise is already forced to deal with iPad and other
tablet devices, and they’ll need to deal with (or embrace) Windows 8 tablets in the
same way.
</p>
        <p>
To the first point, I think it unlikely that most organizations will roll out Windows
8 on a broad scale to desktops or laptops. Most organizations are just now moving
from XP/2000 to Windows 7, only because those ancient operating systems will soon
be entirely unsupported. It is not realistic to think that organizations will immediately
move from Windows 7 to Windows 8. It is more realistic to think that they’ll be on
Windows 7 for 5-10 years, and will then move to “Windows 11” or something along that
line.
</p>
        <p>
As a result, organizations will be building and maintaining applications using Microsoft
.NET (WPF, Silverlight, Windows Forms) for many years to come. There is no WinRT for
Windows 7, so that new development platform will be off limits for mainstream enterprise
application development targeting the desktop/laptop space in the foreseeable future.
</p>
        <p>
To the second point, the reality that end users in organizations will acquire and
use tablets on their own, if not supplied by the organization, is already happening.
The flood gates are open, and organizations are now left to deal with the results.
A chaotic landscape composed of iPads, random incompatible Android devices, and soon
Windows 8 devices.
</p>
        <p>
This is where things get interesting. Windows 8 on Intel devices can run the same
.NET applications as a desktop or laptop. They can also run WinRT applications, which
(when built using .NET) are extremely similar to Silverlight applications. Windows
8 on ARM devices will only run WinRT applications.
</p>
        <p>
iPad and Android devices require completely different application development using
tools unlike .NET. No code or functionality sharing between existing .NET desktop/laptop
applications and these platforms is possible. Truly embracing these platforms means
building up duplicate development staff for Objective C and Java, or switching entirely
away from traditional smart client development to a pure HTML5 model. Sadly, HTML5
isn’t compatible across all these devices either, so even that isn’t an obvious solution.
</p>
        <p>
In reality, it might be less expensive for organizations to buy employees Windows
8 tablets than to pay developers to re-implement applications across multiple platforms,
and to then support those multiple implementations over time. In fact, I suspect it
will almost always be cheaper to spring for a few Windows 8 tablets than to pay for
duplicate software development and maintenance forever.
</p>
        <p>
To achieve the broadest reach, Windows 8 apps should target WinRT. That allows the
apps to run on Intel and ARM devices. As I mentioned earlier, when using .NET to build
WinRT applications, the development model is very similar to Silverlight. This means
that existing WPF and Silverlight developers will have a relatively easy time shifting
to WinRT, and substantial amounts of Silverlight application code will often just
work on WinRT.
</p>
        <p>
Frameworks such as CSLA .NET provide even more cross-platform compatibility. For example,
the business logic code for applications written using CSLA 4 that target Silverlight
will just recompile for WinRT, usually with no changes required at all. The vast majority
of business logic from WPF or Windows Forms applications written using CSLA 4 will
also just recompile for WinRT.
</p>
        <p>
In summary, Windows 8 represents a major factor in enterprise application development
strategy. In the short term, it might offer a lower-cost way to get users onto tablets
without the high cost of duplicate software development, or dealing with the cross-platform
HTML5 issues. In the long term, WinRT appears to be Microsoft’s new strategic development
platform, so organizations need to be considering how to move to this platform over
a period of years.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ff21aa43-f048-49d5-9d11-7518d2e2bae1" />
      </body>
      <title>Windows 8 and enterprise app dev strategy</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,ff21aa43-f048-49d5-9d11-7518d2e2bae1.aspx</guid>
      <link>http://www.lhotka.net/weblog/Windows8AndEnterpriseAppDevStrategy.aspx</link>
      <pubDate>Wed, 07 Mar 2012 19:36:50 GMT</pubDate>
      <description>&lt;p&gt;
At a time when many organizations are moving from Windows XP or 2000 to Windows 7,
the last thing a lot of people want to think about is Windows 8. At the same time,
it is incredibly clear that the future of client computing is undergoing a major shift
thanks to the rapid growth of iPad and other tablet devices. Windows 8 is not only
the next desktop operating system from Microsoft, but it is also Microsoft’s answer
to this substantial shift toward low-power touch-based client devices.
&lt;/p&gt;
&lt;p&gt;
This change impacts not only the operating system, but the underlying application
development model. The new Windows Runtime (WinRT) development platform represents
an evolution for .NET developers, and a significant shift for non-.NET developers.
&lt;/p&gt;
&lt;p&gt;
Realistically, enterprises should expect two things. First, the enterprise desktop/laptop
platform will most likely continue its shift to Windows 7, and may remain on Windows
7 for many years. Second, the enterprise is already forced to deal with iPad and other
tablet devices, and they’ll need to deal with (or embrace) Windows 8 tablets in the
same way.
&lt;/p&gt;
&lt;p&gt;
To the first point, I think it unlikely that most organizations will roll out Windows
8 on a broad scale to desktops or laptops. Most organizations are just now moving
from XP/2000 to Windows 7, only because those ancient operating systems will soon
be entirely unsupported. It is not realistic to think that organizations will immediately
move from Windows 7 to Windows 8. It is more realistic to think that they’ll be on
Windows 7 for 5-10 years, and will then move to “Windows 11” or something along that
line.
&lt;/p&gt;
&lt;p&gt;
As a result, organizations will be building and maintaining applications using Microsoft
.NET (WPF, Silverlight, Windows Forms) for many years to come. There is no WinRT for
Windows 7, so that new development platform will be off limits for mainstream enterprise
application development targeting the desktop/laptop space in the foreseeable future.
&lt;/p&gt;
&lt;p&gt;
To the second point, the reality that end users in organizations will acquire and
use tablets on their own, if not supplied by the organization, is already happening.
The flood gates are open, and organizations are now left to deal with the results.
A chaotic landscape composed of iPads, random incompatible Android devices, and soon
Windows 8 devices.
&lt;/p&gt;
&lt;p&gt;
This is where things get interesting. Windows 8 on Intel devices can run the same
.NET applications as a desktop or laptop. They can also run WinRT applications, which
(when built using .NET) are extremely similar to Silverlight applications. Windows
8 on ARM devices will only run WinRT applications.
&lt;/p&gt;
&lt;p&gt;
iPad and Android devices require completely different application development using
tools unlike .NET. No code or functionality sharing between existing .NET desktop/laptop
applications and these platforms is possible. Truly embracing these platforms means
building up duplicate development staff for Objective C and Java, or switching entirely
away from traditional smart client development to a pure HTML5 model. Sadly, HTML5
isn’t compatible across all these devices either, so even that isn’t an obvious solution.
&lt;/p&gt;
&lt;p&gt;
In reality, it might be less expensive for organizations to buy employees Windows
8 tablets than to pay developers to re-implement applications across multiple platforms,
and to then support those multiple implementations over time. In fact, I suspect it
will almost always be cheaper to spring for a few Windows 8 tablets than to pay for
duplicate software development and maintenance forever.
&lt;/p&gt;
&lt;p&gt;
To achieve the broadest reach, Windows 8 apps should target WinRT. That allows the
apps to run on Intel and ARM devices. As I mentioned earlier, when using .NET to build
WinRT applications, the development model is very similar to Silverlight. This means
that existing WPF and Silverlight developers will have a relatively easy time shifting
to WinRT, and substantial amounts of Silverlight application code will often just
work on WinRT.
&lt;/p&gt;
&lt;p&gt;
Frameworks such as CSLA .NET provide even more cross-platform compatibility. For example,
the business logic code for applications written using CSLA 4 that target Silverlight
will just recompile for WinRT, usually with no changes required at all. The vast majority
of business logic from WPF or Windows Forms applications written using CSLA 4 will
also just recompile for WinRT.
&lt;/p&gt;
&lt;p&gt;
In summary, Windows 8 represents a major factor in enterprise application development
strategy. In the short term, it might offer a lower-cost way to get users onto tablets
without the high cost of duplicate software development, or dealing with the cross-platform
HTML5 issues. In the long term, WinRT appears to be Microsoft’s new strategic development
platform, so organizations need to be considering how to move to this platform over
a period of years.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ff21aa43-f048-49d5-9d11-7518d2e2bae1" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,ff21aa43-f048-49d5-9d11-7518d2e2bae1.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=dac499ac-5234-4b64-99d6-e8cf768013ec</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,dac499ac-5234-4b64-99d6-e8cf768013ec.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,dac499ac-5234-4b64-99d6-e8cf768013ec.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=dac499ac-5234-4b64-99d6-e8cf768013ec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I am pleased to announce the release of CSLA 4 version 4.3. It is available from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a> and from <a href="https://nuget.org/packages?q=CSLA">nuget</a>.
</p>
        <p>
This release adds support for Silverlight 5.
</p>
        <blockquote>
          <p>
            <em>Silverlight 4 is still supported. The assemblies are in a Silverlight4.zip file
in the bin folder created by the setup program in your Program Files folder or other
install location.</em>
          </p>
        </blockquote>
        <p>
Other major enhancements include:
</p>
        <ul>
          <li>
New binary serialization scheme for MobileFormatter resulting in <em>substantially</em> smaller
data flowing across the data portal from Silverlight and Windows Phone client applications.
The ProjectTracker sample application has been updated to use this new scheme – look
at the app server web.config and the SilverlightUI and WpUI app.xaml.cs files to see
how the client and server configuration is handled.</li>
          <li>
Numerous enhancements to the business rules subsystem. See the <a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775">change
log</a> for more information.</li>
          <li>
Bug fixes to address some specific data portal issues. See the <a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775">change
log</a> for more information.</li>
          <li>
CommandBase now supports managed properties.</li>
        </ul>
        <p>
With this version, CSLA 4 now supports the following platforms:
</p>
        <ul>
          <li>
Microsoft .NET 4</li>
          <ul>
            <li>
Windows Forms</li>
            <li>
ASP.NET Web Forms</li>
            <li>
ASP.NET asmx services</li>
            <li>
WPF</li>
            <li>
WCF services</li>
            <li>
ASP.NET MVC 3</li>
          </ul>
          <li>
Silverlight 5</li>
          <li>
Silverlight 4</li>
          <li>
Windows Phone 7.5</li>
          <li>
Mono</li>
          <ul>
            <li>
OS X</li>
            <li>
Linux</li>
          </ul>
          <li>
Mono for Android</li>
        </ul>
        <p>
The source code also includes a version of CSLA 4 that builds for WinRT (Windows 8)
Consumer Preview. This is largely untested, but does demonstrate that existing business
classes (especially those built for 3- and 4-tier deployments in Silverlight) can
be simply recompiled for use in WinRT applications. Consider this a preview of CSLA
4 version 4.5, coming later this year with support for .NET 4.5 and WinRT.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=dac499ac-5234-4b64-99d6-e8cf768013ec" />
      </body>
      <title>CSLA 4 version 4.3 release</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,dac499ac-5234-4b64-99d6-e8cf768013ec.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version43Release.aspx</link>
      <pubDate>Sun, 04 Mar 2012 21:29:03 GMT</pubDate>
      <description>&lt;p&gt;
I am pleased to announce the release of CSLA 4 version 4.3. It is available from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt; and from &lt;a href="https://nuget.org/packages?q=CSLA"&gt;nuget&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This release adds support for Silverlight 5.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Silverlight 4 is still supported. The assemblies are in a Silverlight4.zip file
in the bin folder created by the setup program in your Program Files folder or other
install location.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Other major enhancements include:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
New binary serialization scheme for MobileFormatter resulting in &lt;em&gt;substantially&lt;/em&gt; smaller
data flowing across the data portal from Silverlight and Windows Phone client applications.
The ProjectTracker sample application has been updated to use this new scheme – look
at the app server web.config and the SilverlightUI and WpUI app.xaml.cs files to see
how the client and server configuration is handled.&lt;/li&gt;
&lt;li&gt;
Numerous enhancements to the business rules subsystem. See the &lt;a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775"&gt;change
log&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;
Bug fixes to address some specific data portal issues. See the &lt;a href="http://www.lhotka.net/Article.aspx?id=1c287e08-d428-4c27-b538-d588e3c55775"&gt;change
log&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;
CommandBase now supports managed properties.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
With this version, CSLA 4 now supports the following platforms:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft .NET 4&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Windows Forms&lt;/li&gt;
&lt;li&gt;
ASP.NET Web Forms&lt;/li&gt;
&lt;li&gt;
ASP.NET asmx services&lt;/li&gt;
&lt;li&gt;
WPF&lt;/li&gt;
&lt;li&gt;
WCF services&lt;/li&gt;
&lt;li&gt;
ASP.NET MVC 3&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Silverlight 5&lt;/li&gt;
&lt;li&gt;
Silverlight 4&lt;/li&gt;
&lt;li&gt;
Windows Phone 7.5&lt;/li&gt;
&lt;li&gt;
Mono&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
OS X&lt;/li&gt;
&lt;li&gt;
Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Mono for Android&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The source code also includes a version of CSLA 4 that builds for WinRT (Windows 8)
Consumer Preview. This is largely untested, but does demonstrate that existing business
classes (especially those built for 3- and 4-tier deployments in Silverlight) can
be simply recompiled for use in WinRT applications. Consider this a preview of CSLA
4 version 4.5, coming later this year with support for .NET 4.5 and WinRT.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=dac499ac-5234-4b64-99d6-e8cf768013ec" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,dac499ac-5234-4b64-99d6-e8cf768013ec.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a6abb40d-e6b4-426c-affc-4d465f288545</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a6abb40d-e6b4-426c-affc-4d465f288545.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a6abb40d-e6b4-426c-affc-4d465f288545.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a6abb40d-e6b4-426c-affc-4d465f288545</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A beta release of CSLA 4 version 4.3 is now available from here:
</p>
        <p>
          <a href="http://www.lhotka.net/cslanet/download.aspx">www.lhotka.net/cslanet/download.aspx</a>
        </p>
        <p>
The big change in this beta release is that the Silverlight projects are now bound
to Silverlight 5.
</p>
        <p>
I plan to write a document describing how to undo the very few changes required to
support Silverlight 5, so if you want to back-port the code for Silverlight 4 you'll
be able to do so on your own. This document will be available within the next couple
weeks - before the 4.3 release.
</p>
        <p>
The <em>really</em> big change came in the previous alpha release: MobileFormatter
now allows much more efficient creation of the serialized byte stream, resulting in
much smaller amounts of data sent over the network between a Silverlight/Windows Phone
client and an app server. This same technology will be used in the WinRT codebase
as well.
</p>
        <p>
My plan is to release 4.3 on or before Feb 29. 
</p>
        <p>
That will allow us to branch 4.3 in svn so the primary codebase can focus on version
4.5 with support for .NET 4.5 and WinRT.
</p>
        <p>
The 4.3 release will go into maintenance mode - meaning we'll address bugs, but don't
plan any more feature changes.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a6abb40d-e6b4-426c-affc-4d465f288545" />
      </body>
      <title>CSLA 4 version 4.3 beta available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a6abb40d-e6b4-426c-affc-4d465f288545.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version43BetaAvailable.aspx</link>
      <pubDate>Mon, 13 Feb 2012 18:45:40 GMT</pubDate>
      <description>&lt;p&gt;
A beta release of CSLA 4 version 4.3 is now available from here:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;www.lhotka.net/cslanet/download.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The big change in this beta release is that the Silverlight projects are now bound
to Silverlight 5.
&lt;/p&gt;
&lt;p&gt;
I plan to write a document describing how to undo the very few changes required to
support Silverlight 5, so if you want to back-port the code for Silverlight 4 you'll
be able to do so on your own. This document will be available within the next couple
weeks - before the 4.3 release.
&lt;/p&gt;
&lt;p&gt;
The &lt;em&gt;really&lt;/em&gt; big change came in the previous alpha release: MobileFormatter
now allows much more efficient creation of the serialized byte stream, resulting in
much smaller amounts of data sent over the network between a Silverlight/Windows Phone
client and an app server. This same technology will be used in the WinRT codebase
as well.
&lt;/p&gt;
&lt;p&gt;
My plan is to release 4.3 on or before Feb 29. 
&lt;/p&gt;
&lt;p&gt;
That will allow us to branch 4.3 in svn so the primary codebase can focus on version
4.5 with support for .NET 4.5 and WinRT.
&lt;/p&gt;
&lt;p&gt;
The 4.3 release will go into maintenance mode - meaning we'll address bugs, but don't
plan any more feature changes.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a6abb40d-e6b4-426c-affc-4d465f288545" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a6abb40d-e6b4-426c-affc-4d465f288545.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=2209426d-e18d-42cb-af81-5ea1a8417284</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,2209426d-e18d-42cb-af81-5ea1a8417284.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,2209426d-e18d-42cb-af81-5ea1a8417284.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=2209426d-e18d-42cb-af81-5ea1a8417284</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have posted an alpha version of CSLA 4 version 4.3.0 for download from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
Although Jonny has been extremely busy with a number of bug fixes and some feature
changes, I think the biggest change in this alpha release is a major optimization
of the <a href="http://www.lhotka.net/weblog/CSLALightObjectSerialization.aspx">MobileFormatter</a>.
</p>
        <p>
MobileFormatter is used to serialize object graphs on Silverlight and Windows Phone.
It is used by the data portal, and n-level undo (if you use that feature).
</p>
        <p>
Until now, I have recommended that you use compression on the byte stream that flows
over the data portal, because the XML created by the MobileFormatter is often quite
large. It compresses efficiently, and we’re quite efficient about what we put into
the byte stream, but it is just plain big.
</p>
        <p>
Sergey did some really nice work for version 4.3, allowing the use of alternate reader/writer
objects so the data can be serialized into something other than XML. Specifically,
he created binary reader and writer objects that are around 70% more efficient in
terms of byte stream size. That’s about as much as you could expect to get with compression!
</p>
        <p>
The result is that you can probably avoid the CPU intensive overhead of compression
and still get a small byte stream to transfer over the network.
</p>
        <p>
The <a href="http://www.lhotka.net/Article.aspx?area=4&amp;id=1c287e08-d428-4c27-b538-d588e3c55775">CSLA
4 version 4.3.0 change log</a> includes a discussion of the configuration settings
you need to change to use the new reader/writer objects.
</p>
        <p>
This is a non-breaking change, because the default is the same behavior as in 4.2.
But this is a <em>big change</em> and we really appreciate your help in testing the
new reader/writer objects to ensure they work across a wide range of applications.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=2209426d-e18d-42cb-af81-5ea1a8417284" />
      </body>
      <title>CSLA 4 version 4.3.0 alpha available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,2209426d-e18d-42cb-af81-5ea1a8417284.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version430AlphaAvailable.aspx</link>
      <pubDate>Thu, 26 Jan 2012 19:15:02 GMT</pubDate>
      <description>&lt;p&gt;
I have posted an alpha version of CSLA 4 version 4.3.0 for download from the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Although Jonny has been extremely busy with a number of bug fixes and some feature
changes, I think the biggest change in this alpha release is a major optimization
of the &lt;a href="http://www.lhotka.net/weblog/CSLALightObjectSerialization.aspx"&gt;MobileFormatter&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
MobileFormatter is used to serialize object graphs on Silverlight and Windows Phone.
It is used by the data portal, and n-level undo (if you use that feature).
&lt;/p&gt;
&lt;p&gt;
Until now, I have recommended that you use compression on the byte stream that flows
over the data portal, because the XML created by the MobileFormatter is often quite
large. It compresses efficiently, and we’re quite efficient about what we put into
the byte stream, but it is just plain big.
&lt;/p&gt;
&lt;p&gt;
Sergey did some really nice work for version 4.3, allowing the use of alternate reader/writer
objects so the data can be serialized into something other than XML. Specifically,
he created binary reader and writer objects that are around 70% more efficient in
terms of byte stream size. That’s about as much as you could expect to get with compression!
&lt;/p&gt;
&lt;p&gt;
The result is that you can probably avoid the CPU intensive overhead of compression
and still get a small byte stream to transfer over the network.
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="http://www.lhotka.net/Article.aspx?area=4&amp;amp;id=1c287e08-d428-4c27-b538-d588e3c55775"&gt;CSLA
4 version 4.3.0 change log&lt;/a&gt; includes a discussion of the configuration settings
you need to change to use the new reader/writer objects.
&lt;/p&gt;
&lt;p&gt;
This is a non-breaking change, because the default is the same behavior as in 4.2.
But this is a &lt;em&gt;big change&lt;/em&gt; and we really appreciate your help in testing the
new reader/writer objects to ensure they work across a wide range of applications.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=2209426d-e18d-42cb-af81-5ea1a8417284" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,2209426d-e18d-42cb-af81-5ea1a8417284.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=9796495c-2cb4-4fd8-9f9b-8df6d1434c7c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,9796495c-2cb4-4fd8-9f9b-8df6d1434c7c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,9796495c-2cb4-4fd8-9f9b-8df6d1434c7c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9796495c-2cb4-4fd8-9f9b-8df6d1434c7c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="margin: 5px; display: inline; float: right" align="right" src="http://download.lhotka.net/images/UsingCsla4-07-120.png" />I
am pleased to announce that the <a href="http://store.lhotka.net/Store/tabid/1560/CategoryID/4/List/1/Level/1/ProductID/30/Default.aspx">Using
CSLA 4: Windows Phone</a> ebook is now available for purchase. 
</p>
        <p>
If you purchased the <em>Using CSLA 4</em> ebook series you already own the book,
and can download it now.
</p>
        <p>
This ebook (in PDF format) demonstrates how to create a Windows Phone 7 (WP7) application
that uses a business layer created using CSLA 4. This ebook also demonstrates the
use of the MVVM (Model-View-ViewModel) design pattern in a way that is very complementary
to the capabilities provided by CSLA .NET business objects, resulting in an application
that is easy to build and maintain with clear separation of concerns between the XAML-based
view, the interface control code in the viewmodel and the model composed of CSLA-based
business objects. This ebook also makes use of the open-source <a href="http://bxf.codeplex.com/">Bxf</a> MVVM
UI framework.
</p>
        <p>
The ebook includes a sample application demonstrating the concepts and techniques
discussed in the book.
</p>
        <p>
Here’s the high level content outline:
</p>
        <ol>
          <li>
Introduction 
</li>
          <li>
Windows Phone 
<ol><li>
About Silverlight 
</li><li>
Windows Phone Application Model 
</li><li>
Silverlight Navigation 
</li><li>
ApplicationBar Control 
</li><li>
Overview of XAML 
</li></ol></li>
          <li>
MVVM Design Pattern and CSLA 4 
<ol><li>
MVVM Design Pattern overview 
</li><li>
Bxf MVVM Framework 
</li><li>
Main Shell Implementation 
</li><li>
CSLA .NET Windows Phone features 
</li></ol></li>
          <li>
Business and Data Access Layers 
<ol><li>
Responsibility-driven design 
</li><li>
Domain overview and implementation 
</li></ol></li>
          <li>
Application Implementation 
<ol><li>
Windows Phone project setup 
</li><li>
Main shell implementation 
</li><li>
User scenarios 
</li></ol></li>
        </ol>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9796495c-2cb4-4fd8-9f9b-8df6d1434c7c" />
      </body>
      <title>Using CSLA 4: Windows Phone ebook available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,9796495c-2cb4-4fd8-9f9b-8df6d1434c7c.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingCSLA4WindowsPhoneEbookAvailable.aspx</link>
      <pubDate>Wed, 25 Jan 2012 23:35:03 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="margin: 5px; display: inline; float: right" align="right" src="http://download.lhotka.net/images/UsingCsla4-07-120.png" /&gt;I
am pleased to announce that the &lt;a href="http://store.lhotka.net/Store/tabid/1560/CategoryID/4/List/1/Level/1/ProductID/30/Default.aspx"&gt;Using
CSLA 4: Windows Phone&lt;/a&gt; ebook is now available for purchase. 
&lt;/p&gt;
&lt;p&gt;
If you purchased the &lt;em&gt;Using CSLA 4&lt;/em&gt; ebook series you already own the book,
and can download it now.
&lt;/p&gt;
&lt;p&gt;
This ebook (in PDF format) demonstrates how to create a Windows Phone 7 (WP7) application
that uses a business layer created using CSLA 4. This ebook also demonstrates the
use of the MVVM (Model-View-ViewModel) design pattern in a way that is very complementary
to the capabilities provided by CSLA .NET business objects, resulting in an application
that is easy to build and maintain with clear separation of concerns between the XAML-based
view, the interface control code in the viewmodel and the model composed of CSLA-based
business objects. This ebook also makes use of the open-source &lt;a href="http://bxf.codeplex.com/"&gt;Bxf&lt;/a&gt; MVVM
UI framework.
&lt;/p&gt;
&lt;p&gt;
The ebook includes a sample application demonstrating the concepts and techniques
discussed in the book.
&lt;/p&gt;
&lt;p&gt;
Here’s the high level content outline:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Introduction 
&lt;/li&gt;
&lt;li&gt;
Windows Phone 
&lt;ol&gt;
&lt;li&gt;
About Silverlight 
&lt;/li&gt;
&lt;li&gt;
Windows Phone Application Model 
&lt;/li&gt;
&lt;li&gt;
Silverlight Navigation 
&lt;/li&gt;
&lt;li&gt;
ApplicationBar Control 
&lt;/li&gt;
&lt;li&gt;
Overview of XAML 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
MVVM Design Pattern and CSLA 4 
&lt;ol&gt;
&lt;li&gt;
MVVM Design Pattern overview 
&lt;/li&gt;
&lt;li&gt;
Bxf MVVM Framework 
&lt;/li&gt;
&lt;li&gt;
Main Shell Implementation 
&lt;/li&gt;
&lt;li&gt;
CSLA .NET Windows Phone features 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
Business and Data Access Layers 
&lt;ol&gt;
&lt;li&gt;
Responsibility-driven design 
&lt;/li&gt;
&lt;li&gt;
Domain overview and implementation 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
Application Implementation 
&lt;ol&gt;
&lt;li&gt;
Windows Phone project setup 
&lt;/li&gt;
&lt;li&gt;
Main shell implementation 
&lt;/li&gt;
&lt;li&gt;
User scenarios 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9796495c-2cb4-4fd8-9f9b-8df6d1434c7c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,9796495c-2cb4-4fd8-9f9b-8df6d1434c7c.aspx</comments>
      <category>Books</category>
      <category>CSLA .NET</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=7d3ffd97-bf3b-42cc-b701-357bc0b6b76d</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,7d3ffd97-bf3b-42cc-b701-357bc0b6b76d.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,7d3ffd97-bf3b-42cc-b701-357bc0b6b76d.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=7d3ffd97-bf3b-42cc-b701-357bc0b6b76d</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 version 4.2 is now released and available for download.
</p>
        <ul>
          <li>
            <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA download page</a>
          </li>
          <li>
            <a href="http://nuget.org/List/Search?packageType=Packages&amp;searchCategory=All+Categories&amp;searchTerm=csla">NuGet</a>
          </li>
        </ul>
        <p>
The primary focus of this release is the introduction of support for mono (Mac, Linux),
monotouch (iPhone, iPad), and mono for Android. 
</p>
        <p>
This version also supports Windows Phone “Mango” (SDK version 7.1).
</p>
        <p>
You can now reuse your business code across .NET, Silverlight, Windows Phone, and
these newly supported platforms as well. As demand grows to build applications that
must work on various mobile devices, the ability to directly reuse your business classes
is compelling!
</p>
        <p>
Version 4.2 also includes a number of enhancements to the existing CSLA 4 rule engine,
along with various other features and bug fixes. Check out the <a href="http://www.lhotka.net/Article.aspx?id=2607a4ef-e6a9-4801-aa0b-518c51267339">change
log</a> for more information.
</p>
        <p>
Our next step is to provide support for Silverlight 5 in CSLA 4 version 4.3, followed
by support for WinRT (Windows 8) in version 4.5. The expectation is that your existing
CSLA-based business classes will continue to work in Silverlight 5 and WinRT, providing
even more long-term reuse, maintainability, and cost-effective development.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7d3ffd97-bf3b-42cc-b701-357bc0b6b76d" />
      </body>
      <title>CSLA 4 version 4.2 released</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,7d3ffd97-bf3b-42cc-b701-357bc0b6b76d.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version42Released.aspx</link>
      <pubDate>Thu, 01 Dec 2011 20:30:06 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 version 4.2 is now released and available for download.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA download page&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://nuget.org/List/Search?packageType=Packages&amp;amp;searchCategory=All+Categories&amp;amp;searchTerm=csla"&gt;NuGet&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The primary focus of this release is the introduction of support for mono (Mac, Linux),
monotouch (iPhone, iPad), and mono for Android. 
&lt;/p&gt;
&lt;p&gt;
This version also supports Windows Phone “Mango” (SDK version 7.1).
&lt;/p&gt;
&lt;p&gt;
You can now reuse your business code across .NET, Silverlight, Windows Phone, and
these newly supported platforms as well. As demand grows to build applications that
must work on various mobile devices, the ability to directly reuse your business classes
is compelling!
&lt;/p&gt;
&lt;p&gt;
Version 4.2 also includes a number of enhancements to the existing CSLA 4 rule engine,
along with various other features and bug fixes. Check out the &lt;a href="http://www.lhotka.net/Article.aspx?id=2607a4ef-e6a9-4801-aa0b-518c51267339"&gt;change
log&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;p&gt;
Our next step is to provide support for Silverlight 5 in CSLA 4 version 4.3, followed
by support for WinRT (Windows 8) in version 4.5. The expectation is that your existing
CSLA-based business classes will continue to work in Silverlight 5 and WinRT, providing
even more long-term reuse, maintainability, and cost-effective development.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7d3ffd97-bf3b-42cc-b701-357bc0b6b76d" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,7d3ffd97-bf3b-42cc-b701-357bc0b6b76d.aspx</comments>
      <category>CSLA .NET</category>
      <category>MonoDroid</category>
      <category>MonoTouch</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=2461dff3-e39c-4bd2-9279-12c349a04395</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=2461dff3-e39c-4bd2-9279-12c349a04395</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the primary goals for CSLA 4 version 4.3 (the next version we’ll be creating)
is to improve the performance of the MobileFormattter that is used for Silverlight
and Windows Phone applications. This is made all the more important, because it will
also be used in WinRT applications in the future.
</p>
        <p>
Sergey (a CSLA dev team member, and Magenic colleague) has been doing some heavy research
into this area, and we’d originally thought to do the changes as part of the 4.2 release.
It turns out that doing a really great job of optimization will require some breaking
changes – at least for people who aren’t using managed backing fields. So we are deferring
the bigger changes until 4.3.
</p>
        <p>
In the meantime, Sergey has blogged about <a href="http://dotnetspeak.com/index.php/2011/11/how-to-improve-performance-of-csla-for-silverlight/">how
to improve performance of MobileFormatter</a> in 3.8 and 4 (4.0, 4.1, or 4.2). These
are changes you can make to your CSLA codebase now if you want some of the performance
benefits without waiting for the “big change” that’ll come in 4.3.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=2461dff3-e39c-4bd2-9279-12c349a04395" />
      </body>
      <title>Improving CSLA 4 MobileFormatter behavior</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspx</guid>
      <link>http://www.lhotka.net/weblog/ImprovingCSLA4MobileFormatterBehavior.aspx</link>
      <pubDate>Sat, 12 Nov 2011 18:41:27 GMT</pubDate>
      <description>&lt;p&gt;
One of the primary goals for CSLA 4 version 4.3 (the next version we’ll be creating)
is to improve the performance of the MobileFormattter that is used for Silverlight
and Windows Phone applications. This is made all the more important, because it will
also be used in WinRT applications in the future.
&lt;/p&gt;
&lt;p&gt;
Sergey (a CSLA dev team member, and Magenic colleague) has been doing some heavy research
into this area, and we’d originally thought to do the changes as part of the 4.2 release.
It turns out that doing a really great job of optimization will require some breaking
changes – at least for people who aren’t using managed backing fields. So we are deferring
the bigger changes until 4.3.
&lt;/p&gt;
&lt;p&gt;
In the meantime, Sergey has blogged about &lt;a href="http://dotnetspeak.com/index.php/2011/11/how-to-improve-performance-of-csla-for-silverlight/"&gt;how
to improve performance of MobileFormatter&lt;/a&gt; in 3.8 and 4 (4.0, 4.1, or 4.2). These
are changes you can make to your CSLA codebase now if you want some of the performance
benefits without waiting for the “big change” that’ll come in 4.3.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=2461dff3-e39c-4bd2-9279-12c349a04395" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=12925691-3e22-41e2-9d8f-a66c115e8b8c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,12925691-3e22-41e2-9d8f-a66c115e8b8c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,12925691-3e22-41e2-9d8f-a66c115e8b8c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=12925691-3e22-41e2-9d8f-a66c115e8b8c</wfw:commentRss>
      <slash:comments>22</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>Disclaimer: I know nothing. The following is (hopefully) well educated speculation
on my part. Time will tell whether I’m right.</em>
        </p>
        <p>
I really like Silverlight. I’ve been a strong proponent of <sub></sub>Silverlight
since 2007 when I rushed to port CSLA .NET to the new platform.
</p>
        <p>
In fact, Magenic provided me with a dev and test team to make that transition happen,
because we all saw the amazing potential of Silverlight.
</p>
        <p>
And it has been a good few years.
</p>
        <p>
But let’s face reality. Microsoft has invested who-knows-how-much money to build WinRT,
and no matter how you look at it, WinRT is the replacement for Win32. That means all
the stuff that runs on Win32 is “dead”. This includes Silverlight, Windows Forms,
WPF, console apps – everything.
</p>
        <p>
(this is partially in answer to <a href="http://www.zdnet.com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180">Mary-Jo’s
article on Silverlight 5</a>)
</p>
        <p>
I wouldn’t be surprised if Silverlight 5 was the last version. I also wouldn’t be
surprised if .NET 4.5 was the last version for the Win32 client, and that future versions
of .NET were released for servers and Azure only.
</p>
        <p>
Before you panic though, remember that VB6 has been “dead” for well over a decade.
It died at the PDC in 1999, along with COM. But you still use VB6 and/or COM? Or at
least you know organizations who do? How can that be when it is dead??
</p>
        <p>
That’s my point. “dead” isn’t really dead.
</p>
        <p>
Just how long do you think people (like me and you) will continue to run Win32-based
operating systems and applications? At least 10 years, and many will probably run
15-20 years into the future. This is the rate of change that exists in the corporate
world. At least that’s been my observation for the past couple decades.
</p>
        <p>
Microsoft supports their technologies for 10 years after a final release. So even
if SL5 is the end (and they haven’t said it is), that gives us 10 years of supported
Silverlight usage. The same for the other various .NET and Win32 technologies.
</p>
        <p>
That’s plenty of time for Microsoft to get WinRT mature, and to allow us to migrate
to that platform over a period of years.
</p>
        <p>
I don’t expect WinRT 1.0 (the Windows 8 version) to be capable of replacing Win32
or .NET. I rather expect it to be pretty crippled in many respects. Much like VB 1.0
(and 2.0), .NET 1.0 and 1.1, Silverlight 1 and 2, etc.
</p>
        <p>
But Windows 9 or Windows 10 (WinRT 2.0 or 3.0) should be quite capable of replacing
Win32 and .NET and Silverlight.
</p>
        <p>
If we assume Win8 comes out in 2012, and that Microsoft does a forced march release
of 9 and 10 every two years, that means 2016 will give us WinRT 3.0. And if we hold
to the basic truism that Microsoft always gets it right on their third release, that’ll
be the one to target.
</p>
        <p>
I think it is also reasonable to expect that Win9 and Win10 will probably continue
to have the “blue side” (see my <a href="http://www.lhotka.net/weblog/UpdatedWin8DevPlatformDiagram.aspx">Windows
8 dev platform</a> post), meaning Win32, .NET, and Silverlight will continue to be
released and therefore supported over that time. They may not <em>change</em> over
that time, but they’ll be there, and they’ll be supported – or so goes my theory.
</p>
        <p>
This means that in 2016 the clock might really start for migration from Win32/.NET/Silverlight
to WinRT.
</p>
        <p>
Yes, I expect that a lot of us will build things for WinRT sooner than 2016. I certainly
hope so, because it looks like a lot of fun!
</p>
        <p>
But from a corporate perspective, where things move so slowly, this is probably good
news. Certain apps can be ported sooner, but big and important apps can move slowly
over time.
</p>
        <p>
What to do in the meantime? Between now and 2016?
</p>
        <p>
Focus on XAML, and on n-tier or SOA async server access as architectural models.
</p>
        <p>
Or focus on HTML 5 (soon to be HTML 6 fwiw, and possibly HTML 7 by 2016 for all we
know).
</p>
        <p>
I’m focusing on XAML, creating a CSLA 4 version 4.5 release that supports .NET 4.5
on servers, Azure, Windows (Win32), and Windows (WinRT). And Silverlight 5 of course.
</p>
        <p>
In fact, the plan is for a version 4.3 release to support Silverlight 5, then version
4.5 with support for .NET 4.5 and WinRT.
</p>
        <p>
I suspect that you can use Silverlight or WPF as a bridge to WinRT. The real key is
architecture.
</p>
        <ol>
          <li>
An n-tier architecture is fine, as long as the data access layer is running on a server,
and the client uses async calls to interact with the server. WinRT requires a lot
of async, at a minimum all server interactions. Silverlight forces you to adopt this
architecture already, so it is a natural fit. WPF doesn’t force the issue, but you
can choose to do “the right thing”.</li>
          <li>
You can also build your client applications to be “edge applications” – on the edge
of a service-oriented system. This is a less mature technology area, and it is more
costly. But it is also a fine architecture for environments composed of many disparate
applications that need to interact as a loosely coupled system. Again, all service
interactions by the edge applications (the ones running on the clients) must be async.</li>
          <li>
Or you can build “hybrid solutions”, where individual applications are built using
n-tier architectures (with async server calls). And where <em>some</em> of those applications
also expose service interfaces so they can participate as part of a broader service-oriented
system.</li>
        </ol>
        <p>
I favor option 3. I don’t like to accept the cost and performance ramifications of
SOA when building <em>an application</em>, so I’d prefer to use a faster and cheaper
n-tier architecture. At the same time, many applications do need to interact with
each other, and the requirement to create “application mashups” through edge applications
happens from time to time. So building my n-tier applications to have dual interfaces
(XAML and JSON for example) is a perfect compromise.
</p>
        <p>
The direct users of my application get n-tier performance and maintainability. And
the broader organization can access my slower-moving, standards-based, contractual
service interface. It is the best of both worlds.
</p>
        <p>
So do I care if Silverlight 5 is the last version of Silverlight?
</p>
        <p>
Only if WPF continues to evolve prior to us all moving to WinRT. If WPF continues
to evolve, I would expect Silverlight to, at a minimum, keep up. Otherwise Microsoft
has led a lot of people down a dead-end path, and that’s a serious betrayal of trust.
</p>
        <p>
But if my suspicions are correct, we won’t see anything but bug fixes for WPF or Silverlight
for many years. I rather expect that these two technologies just became the next Windows
Forms. You’ll notice that WinForms hasn’t had anything but bug fixes for 6 years right?
The precedent is there for a UI technology to be “supported, stable, and stagnant”
for a very long time, and this is my expectation for WPF/SL.
</p>
        <p>
And if that’s the case, then I don’t care at all about a Silverlight 6 release. We
can use WPF/SL in their current form, right up to the point that WinRT is stable and
capable enough to act as a replacement for today’s Win32/.NET applications.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=12925691-3e22-41e2-9d8f-a66c115e8b8c" />
      </body>
      <title>Silverlight 6 doesn&amp;rsquo;t matter</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,12925691-3e22-41e2-9d8f-a66c115e8b8c.aspx</guid>
      <link>http://www.lhotka.net/weblog/Silverlight6DoesnrsquotMatter.aspx</link>
      <pubDate>Wed, 09 Nov 2011 02:51:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;Disclaimer: I know nothing. The following is (hopefully) well educated speculation
on my part. Time will tell whether I’m right.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I really like Silverlight. I’ve been a strong proponent of &lt;sub&gt;&lt;/sub&gt;Silverlight
since 2007 when I rushed to port CSLA .NET to the new platform.
&lt;/p&gt;
&lt;p&gt;
In fact, Magenic provided me with a dev and test team to make that transition happen,
because we all saw the amazing potential of Silverlight.
&lt;/p&gt;
&lt;p&gt;
And it has been a good few years.
&lt;/p&gt;
&lt;p&gt;
But let’s face reality. Microsoft has invested who-knows-how-much money to build WinRT,
and no matter how you look at it, WinRT is the replacement for Win32. That means all
the stuff that runs on Win32 is “dead”. This includes Silverlight, Windows Forms,
WPF, console apps – everything.
&lt;/p&gt;
&lt;p&gt;
(this is partially in answer to &lt;a href="http://www.zdnet.com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180"&gt;Mary-Jo’s
article on Silverlight 5&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
I wouldn’t be surprised if Silverlight 5 was the last version. I also wouldn’t be
surprised if .NET 4.5 was the last version for the Win32 client, and that future versions
of .NET were released for servers and Azure only.
&lt;/p&gt;
&lt;p&gt;
Before you panic though, remember that VB6 has been “dead” for well over a decade.
It died at the PDC in 1999, along with COM. But you still use VB6 and/or COM? Or at
least you know organizations who do? How can that be when it is dead??
&lt;/p&gt;
&lt;p&gt;
That’s my point. “dead” isn’t really dead.
&lt;/p&gt;
&lt;p&gt;
Just how long do you think people (like me and you) will continue to run Win32-based
operating systems and applications? At least 10 years, and many will probably run
15-20 years into the future. This is the rate of change that exists in the corporate
world. At least that’s been my observation for the past couple decades.
&lt;/p&gt;
&lt;p&gt;
Microsoft supports their technologies for 10 years after a final release. So even
if SL5 is the end (and they haven’t said it is), that gives us 10 years of supported
Silverlight usage. The same for the other various .NET and Win32 technologies.
&lt;/p&gt;
&lt;p&gt;
That’s plenty of time for Microsoft to get WinRT mature, and to allow us to migrate
to that platform over a period of years.
&lt;/p&gt;
&lt;p&gt;
I don’t expect WinRT 1.0 (the Windows 8 version) to be capable of replacing Win32
or .NET. I rather expect it to be pretty crippled in many respects. Much like VB 1.0
(and 2.0), .NET 1.0 and 1.1, Silverlight 1 and 2, etc.
&lt;/p&gt;
&lt;p&gt;
But Windows 9 or Windows 10 (WinRT 2.0 or 3.0) should be quite capable of replacing
Win32 and .NET and Silverlight.
&lt;/p&gt;
&lt;p&gt;
If we assume Win8 comes out in 2012, and that Microsoft does a forced march release
of 9 and 10 every two years, that means 2016 will give us WinRT 3.0. And if we hold
to the basic truism that Microsoft always gets it right on their third release, that’ll
be the one to target.
&lt;/p&gt;
&lt;p&gt;
I think it is also reasonable to expect that Win9 and Win10 will probably continue
to have the “blue side” (see my &lt;a href="http://www.lhotka.net/weblog/UpdatedWin8DevPlatformDiagram.aspx"&gt;Windows
8 dev platform&lt;/a&gt; post), meaning Win32, .NET, and Silverlight will continue to be
released and therefore supported over that time. They may not &lt;em&gt;change&lt;/em&gt; over
that time, but they’ll be there, and they’ll be supported – or so goes my theory.
&lt;/p&gt;
&lt;p&gt;
This means that in 2016 the clock might really start for migration from Win32/.NET/Silverlight
to WinRT.
&lt;/p&gt;
&lt;p&gt;
Yes, I expect that a lot of us will build things for WinRT sooner than 2016. I certainly
hope so, because it looks like a lot of fun!
&lt;/p&gt;
&lt;p&gt;
But from a corporate perspective, where things move so slowly, this is probably good
news. Certain apps can be ported sooner, but big and important apps can move slowly
over time.
&lt;/p&gt;
&lt;p&gt;
What to do in the meantime? Between now and 2016?
&lt;/p&gt;
&lt;p&gt;
Focus on XAML, and on n-tier or SOA async server access as architectural models.
&lt;/p&gt;
&lt;p&gt;
Or focus on HTML 5 (soon to be HTML 6 fwiw, and possibly HTML 7 by 2016 for all we
know).
&lt;/p&gt;
&lt;p&gt;
I’m focusing on XAML, creating a CSLA 4 version 4.5 release that supports .NET 4.5
on servers, Azure, Windows (Win32), and Windows (WinRT). And Silverlight 5 of course.
&lt;/p&gt;
&lt;p&gt;
In fact, the plan is for a version 4.3 release to support Silverlight 5, then version
4.5 with support for .NET 4.5 and WinRT.
&lt;/p&gt;
&lt;p&gt;
I suspect that you can use Silverlight or WPF as a bridge to WinRT. The real key is
architecture.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
An n-tier architecture is fine, as long as the data access layer is running on a server,
and the client uses async calls to interact with the server. WinRT requires a lot
of async, at a minimum all server interactions. Silverlight forces you to adopt this
architecture already, so it is a natural fit. WPF doesn’t force the issue, but you
can choose to do “the right thing”.&lt;/li&gt;
&lt;li&gt;
You can also build your client applications to be “edge applications” – on the edge
of a service-oriented system. This is a less mature technology area, and it is more
costly. But it is also a fine architecture for environments composed of many disparate
applications that need to interact as a loosely coupled system. Again, all service
interactions by the edge applications (the ones running on the clients) must be async.&lt;/li&gt;
&lt;li&gt;
Or you can build “hybrid solutions”, where individual applications are built using
n-tier architectures (with async server calls). And where &lt;em&gt;some&lt;/em&gt; of those applications
also expose service interfaces so they can participate as part of a broader service-oriented
system.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I favor option 3. I don’t like to accept the cost and performance ramifications of
SOA when building &lt;em&gt;an application&lt;/em&gt;, so I’d prefer to use a faster and cheaper
n-tier architecture. At the same time, many applications do need to interact with
each other, and the requirement to create “application mashups” through edge applications
happens from time to time. So building my n-tier applications to have dual interfaces
(XAML and JSON for example) is a perfect compromise.
&lt;/p&gt;
&lt;p&gt;
The direct users of my application get n-tier performance and maintainability. And
the broader organization can access my slower-moving, standards-based, contractual
service interface. It is the best of both worlds.
&lt;/p&gt;
&lt;p&gt;
So do I care if Silverlight 5 is the last version of Silverlight?
&lt;/p&gt;
&lt;p&gt;
Only if WPF continues to evolve prior to us all moving to WinRT. If WPF continues
to evolve, I would expect Silverlight to, at a minimum, keep up. Otherwise Microsoft
has led a lot of people down a dead-end path, and that’s a serious betrayal of trust.
&lt;/p&gt;
&lt;p&gt;
But if my suspicions are correct, we won’t see anything but bug fixes for WPF or Silverlight
for many years. I rather expect that these two technologies just became the next Windows
Forms. You’ll notice that WinForms hasn’t had anything but bug fixes for 6 years right?
The precedent is there for a UI technology to be “supported, stable, and stagnant”
for a very long time, and this is my expectation for WPF/SL.
&lt;/p&gt;
&lt;p&gt;
And if that’s the case, then I don’t care at all about a Silverlight 6 release. We
can use WPF/SL in their current form, right up to the point that WinRT is stable and
capable enough to act as a replacement for today’s Win32/.NET applications.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=12925691-3e22-41e2-9d8f-a66c115e8b8c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,12925691-3e22-41e2-9d8f-a66c115e8b8c.aspx</comments>
      <category>Architecture</category>
      <category>CSLA .NET</category>
      <category>Microsoft .NET</category>
      <category>Silverlight</category>
      <category>WinRT</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=39913f1e-defa-44bf-85f2-2e0a399bc377</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,39913f1e-defa-44bf-85f2-2e0a399bc377.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,39913f1e-defa-44bf-85f2-2e0a399bc377.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=39913f1e-defa-44bf-85f2-2e0a399bc377</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have put the slides from my DevCon talks online:
</p>
        <ul>
          <li>
            <a href="http://www.lhotka.net/files/devcon/PRODEV04-Lhotka-Architecture.pdf">PRODEV04
– Distributed Architecture</a>
          </li>
          <li>
            <a href="http://www.lhotka.net/files/devcon/VS01-Lhotka-MobileApp.pdf">VS01 – Build
a Mobile App with CSLA</a>
          </li>
          <li>
            <a href="http://www.lhotka.net/files/devcon/VS02-Lhotka-Testing.pdf">VS02 – Unit Testing
Across Platforms</a>
          </li>
        </ul>
        <p>
The demos I used in these talks are all part of the CSLA 4 version 4.2 download, or
the related Samples download. All are on the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
If you would like more information about CSLA .NET, visit the <a href="http://www.lhotka.net/cslanet/faq/">Frequently
Asked Questions</a> page, or look at the <a href="http://store.lhotka.net/">ebooks
and videos</a> available from my store.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=39913f1e-defa-44bf-85f2-2e0a399bc377" />
      </body>
      <title>DevCon slides</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,39913f1e-defa-44bf-85f2-2e0a399bc377.aspx</guid>
      <link>http://www.lhotka.net/weblog/DevConSlides.aspx</link>
      <pubDate>Fri, 04 Nov 2011 05:13:28 GMT</pubDate>
      <description>&lt;p&gt;
I have put the slides from my DevCon talks online:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/files/devcon/PRODEV04-Lhotka-Architecture.pdf"&gt;PRODEV04
– Distributed Architecture&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/files/devcon/VS01-Lhotka-MobileApp.pdf"&gt;VS01 – Build
a Mobile App with CSLA&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/files/devcon/VS02-Lhotka-Testing.pdf"&gt;VS02 – Unit Testing
Across Platforms&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The demos I used in these talks are all part of the CSLA 4 version 4.2 download, or
the related Samples download. All are on the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you would like more information about CSLA .NET, visit the &lt;a href="http://www.lhotka.net/cslanet/faq/"&gt;Frequently
Asked Questions&lt;/a&gt; page, or look at the &lt;a href="http://store.lhotka.net/"&gt;ebooks
and videos&lt;/a&gt; available from my store.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=39913f1e-defa-44bf-85f2-2e0a399bc377" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,39913f1e-defa-44bf-85f2-2e0a399bc377.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=4321097a-cfd5-44d2-8c09-cd62a409f64f</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,4321097a-cfd5-44d2-8c09-cd62a409f64f.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,4321097a-cfd5-44d2-8c09-cd62a409f64f.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=4321097a-cfd5-44d2-8c09-cd62a409f64f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 version 4.2 beta 2 is now available for download on the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
This beta update includes a small number of bug fixes, and some enhancements:
</p>
        <ol>
          <li>
The Windows Phone projects now build for WP 7.5 "Mango" 
</li>
          <li>
Csla.Xaml.PropertyInfo can now be used in a control template 
</li>
          <li>
MobileFormatter can now be used for undo/clone operations on .NET 
</li>
          <li>
Samples are now built against the 4.2 assemblies 
</li>
          <li>
Several WPF/SL samples now use PropertyInfo, and have been styled to look better (thanks
Aaron!)</li>
        </ol>
        <p>
At this point I expect the 4.2 release to occur by the end of November. There may
or may not be another beta release depending on your feedback with this beta.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4321097a-cfd5-44d2-8c09-cd62a409f64f" />
      </body>
      <title>CSLA 4 version 4.2 beta 2 online</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,4321097a-cfd5-44d2-8c09-cd62a409f64f.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version42Beta2Online.aspx</link>
      <pubDate>Mon, 31 Oct 2011 17:32:45 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 version 4.2 beta 2 is now available for download on the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This beta update includes a small number of bug fixes, and some enhancements:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
The Windows Phone projects now build for WP 7.5 &amp;quot;Mango&amp;quot; 
&lt;/li&gt;
&lt;li&gt;
Csla.Xaml.PropertyInfo can now be used in a control template 
&lt;/li&gt;
&lt;li&gt;
MobileFormatter can now be used for undo/clone operations on .NET 
&lt;/li&gt;
&lt;li&gt;
Samples are now built against the 4.2 assemblies 
&lt;/li&gt;
&lt;li&gt;
Several WPF/SL samples now use PropertyInfo, and have been styled to look better (thanks
Aaron!)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
At this point I expect the 4.2 release to occur by the end of November. There may
or may not be another beta release depending on your feedback with this beta.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4321097a-cfd5-44d2-8c09-cd62a409f64f" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,4321097a-cfd5-44d2-8c09-cd62a409f64f.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d95c9322-bb52-4422-9b98-9c2d8c1f3d98</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d95c9322-bb52-4422-9b98-9c2d8c1f3d98.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d95c9322-bb52-4422-9b98-9c2d8c1f3d98.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d95c9322-bb52-4422-9b98-9c2d8c1f3d98</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With all the new terminology and conceptual surface area that comes with the OS code-named
“Windows 8”, I’ve been struggling to come up with clarity as I discuss the technology.
In the absence of true clarity from Microsoft, we’re left to interpret that they’ve
said and come up with our own consistent terminology.
</p>
        <p>
Here’s my current thinking:
</p>
        <ul>
          <li>
Windows 8 – the new operating system that runs in a “dual mode”: Desktop (Win32) and
WinRT</li>
          <li>
Win32 – the OS API that supports today’s applications in Win8</li>
          <li>
WinRT – the new OS API that supports future applications</li>
          <li>
Metro – a user experience design language often used when building WinRT applications</li>
        </ul>
        <p>
If I’m right, this is important, because people will ultimately be building business
applications on WinRT. Those apps may or may not be strictly “Metro”, but by running
on WinRT they’ll gain the benefits of the new runtime API, services, and application
model.
</p>
        <p>
People talk about “Metro apps”, but even in the Microsoft samples there are apps running
on WinRT that violate those standards left and right. So it is <em>extremely clear</em> that
WinRT apps might or might not be “Metro”.
</p>
        <p>
Additionally, it seems pretty reasonable to think about building Silverlight or WPF
apps, even today, following the Metro standards. Some of that might require a lot
of work (at least until third party control vendors create some new components for
us), but it is surely possible.
</p>
        <p>
So you could argue that "Metro apps” might transcend WinRT. In fact, Metro is
also used to describe Windows Phone apps, and they are mostly written in Silverlight.
</p>
        <p>
So I think there are “WinRT apps”, and this includes any/all apps written on the WinRT
API.
</p>
        <p>
Then there are “Metro apps” that are probably a WinRT app, that also follows the Metro
user experience guidelines.
</p>
        <p>
This terminology helps a lot when talking about .NET, present and future.
</p>
        <p>
Right now, today, we have some flavors of .NET:
</p>
        <ul>
          <li>
.NET Full profile</li>
          <li>
.NET Client profile</li>
          <li>
Silverlight</li>
          <li>
Windows Phone</li>
        </ul>
        <p>
It seems to me that Windows 8 just adds a new option:
</p>
        <ul>
          <li>
.NET WinRT profile</li>
        </ul>
        <p>
As I think about the future of CSLA .NET, for example, this is how I approach the
issue. We’ve already put in a lot of work to make the framework support the existing
flavors of .NET (plus mono, mono for iOS, and mono for Android). Much of that effort
lays the necessary groundwork for also supporting this new WinRT flavor of .NET.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d95c9322-bb52-4422-9b98-9c2d8c1f3d98" />
      </body>
      <title>Win8, Metro, and WinRT terminology</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d95c9322-bb52-4422-9b98-9c2d8c1f3d98.aspx</guid>
      <link>http://www.lhotka.net/weblog/Win8MetroAndWinRTTerminology.aspx</link>
      <pubDate>Sat, 15 Oct 2011 03:04:37 GMT</pubDate>
      <description>&lt;p&gt;
With all the new terminology and conceptual surface area that comes with the OS code-named
“Windows 8”, I’ve been struggling to come up with clarity as I discuss the technology.
In the absence of true clarity from Microsoft, we’re left to interpret that they’ve
said and come up with our own consistent terminology.
&lt;/p&gt;
&lt;p&gt;
Here’s my current thinking:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows 8 – the new operating system that runs in a “dual mode”: Desktop (Win32) and
WinRT&lt;/li&gt;
&lt;li&gt;
Win32 – the OS API that supports today’s applications in Win8&lt;/li&gt;
&lt;li&gt;
WinRT – the new OS API that supports future applications&lt;/li&gt;
&lt;li&gt;
Metro – a user experience design language often used when building WinRT applications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If I’m right, this is important, because people will ultimately be building business
applications on WinRT. Those apps may or may not be strictly “Metro”, but by running
on WinRT they’ll gain the benefits of the new runtime API, services, and application
model.
&lt;/p&gt;
&lt;p&gt;
People talk about “Metro apps”, but even in the Microsoft samples there are apps running
on WinRT that violate those standards left and right. So it is &lt;em&gt;extremely clear&lt;/em&gt; that
WinRT apps might or might not be “Metro”.
&lt;/p&gt;
&lt;p&gt;
Additionally, it seems pretty reasonable to think about building Silverlight or WPF
apps, even today, following the Metro standards. Some of that might require a lot
of work (at least until third party control vendors create some new components for
us), but it is surely possible.
&lt;/p&gt;
&lt;p&gt;
So you could argue that &amp;quot;Metro apps” might transcend WinRT. In fact, Metro is
also used to describe Windows Phone apps, and they are mostly written in Silverlight.
&lt;/p&gt;
&lt;p&gt;
So I think there are “WinRT apps”, and this includes any/all apps written on the WinRT
API.
&lt;/p&gt;
&lt;p&gt;
Then there are “Metro apps” that are probably a WinRT app, that also follows the Metro
user experience guidelines.
&lt;/p&gt;
&lt;p&gt;
This terminology helps a lot when talking about .NET, present and future.
&lt;/p&gt;
&lt;p&gt;
Right now, today, we have some flavors of .NET:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET Full profile&lt;/li&gt;
&lt;li&gt;
.NET Client profile&lt;/li&gt;
&lt;li&gt;
Silverlight&lt;/li&gt;
&lt;li&gt;
Windows Phone&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
It seems to me that Windows 8 just adds a new option:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
.NET WinRT profile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
As I think about the future of CSLA .NET, for example, this is how I approach the
issue. We’ve already put in a lot of work to make the framework support the existing
flavors of .NET (plus mono, mono for iOS, and mono for Android). Much of that effort
lays the necessary groundwork for also supporting this new WinRT flavor of .NET.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d95c9322-bb52-4422-9b98-9c2d8c1f3d98" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d95c9322-bb52-4422-9b98-9c2d8c1f3d98.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=29976d56-cd42-420b-bb75-f860e605c19a</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,29976d56-cd42-420b-bb75-f860e605c19a.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,29976d56-cd42-420b-bb75-f860e605c19a.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=29976d56-cd42-420b-bb75-f860e605c19a</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This past weekend Magenic hosted a CSLA .NET Code Mastery event. A full day of free
training on CSLA 4. It was a great time, and we had a room full of wonderful attendees.
The content from the event is now online:
</p>
        <ul>
          <li>
            <a href="http://www.codemastery.com/files/Atlanta1110.zip">Download the Atlanta Code
Mastery content</a>
          </li>
        </ul>
        <p>
Watch for more Magenic events in the future! (<a href="http://www.magenic.com">www.magenic.com</a>) 
</p>
        <p>
Agenda from this past event:
</p>
        <p>
1. CSLA .NET intro - Rocky Lhotka
</p>
        <p>
Topic will give attendees a high level overview of CSLA as an application framework.
Key moving parts of CSLA will be covered, along with answering the most important
question: Why use CSLA? Roles of business objects, data portal, rules, authentication
and authorization will be covered in principal.
</p>
        <p>
2. Business object design - Eric Blackwell
</p>
        <p>
Session will concentrate of best practices for designing business objects. Single
responsibility principal and maintainability will be covered in light of using CSLA.
Key aspects of good CSLA business layer will be covered in detail, including properties,
rules, data portal, data access, business method and validation. Particular attention
will be paid to structuring classes and relationship between classes. Designing based
on use cases will be an important aspect of the session.
</p>
        <p>
3. Business, validation, and authorization rules - Tim Price-Williams
</p>
        <p>
This session will be a deep dive into the world or rules. Topics such as validation
rules, user authentication and authorization will be covered. Distinction between
validation and business rules be drawn. Important key scenarios will be covered, such
as synchronous and asynchronous rules, client / server rules, object creation and
save scenario from rules perspective. Custom and built-in rules be covered in detail.
A pattern for typical business rule/methods will be illuminated.
</p>
        <p>
4. Data portal and n-tier architecture - Rocky Lhotka
</p>
        <p>
This topic will cover in details all possibilities that CSLA provides when abstracting
communication channels between client and server components. Difference between local
and remote data portal will be discussed. Various configuration patterns will be highlighted
along with usage scenarios for each one. Multi-tier deployment as it relates to data
portals will be covered, as well as using external data sources instead of CSLA data
portal in client only scenarios.
</p>
        <p>
5. Data access - Travis Brown
</p>
        <p>
This session is all about data access technologies and how they relate to CSLA data
portal access. The topic will include patterns for abstracting data access for business
objects to promote maintainability. Discussion of Microsoft technologies for data
access will take place as well.
</p>
        <p>
6. XAML and MVVM - Sergey Barskiy
</p>
        <p>
This session will concentrate on using CSLA as business layer in XAML based user interfaces.
Taking Silverlight as an example, session will highlight how CSLA base classes can
be used to facilitate communication between UI and business objects. Adaptability
of CSLA business layer to seamlessly alter user interface based on rules be will covered.
Patterns for wiring business objects for Silverlight environment will be part of the
discussion.
</p>
        <p>
7. ASP.NET MVC - Mitch Gordon
</p>
        <p>
This session will concentrate on using CSLA as business layer in ASP.NET MVC based
user interfaces. The discussion will include CSLA provided base classes that will
allow developers write less code. The session will illuminate patters for maintaining
authentication and authorization rules between server calls. Patterns for adapting
UI based on user rights will be discussed.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=29976d56-cd42-420b-bb75-f860e605c19a" />
      </body>
      <title>Magenic Code Mastery Altanta content</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,29976d56-cd42-420b-bb75-f860e605c19a.aspx</guid>
      <link>http://www.lhotka.net/weblog/MagenicCodeMasteryAltantaContent.aspx</link>
      <pubDate>Thu, 13 Oct 2011 01:38:17 GMT</pubDate>
      <description>&lt;p&gt;
This past weekend Magenic hosted a CSLA .NET Code Mastery event. A full day of free
training on CSLA 4. It was a great time, and we had a room full of wonderful attendees.
The content from the event is now online:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.codemastery.com/files/Atlanta1110.zip"&gt;Download the Atlanta Code
Mastery content&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Watch for more Magenic events in the future! (&lt;a href="http://www.magenic.com"&gt;www.magenic.com&lt;/a&gt;) 
&lt;/p&gt;
&lt;p&gt;
Agenda from this past event:
&lt;/p&gt;
&lt;p&gt;
1. CSLA .NET intro - Rocky Lhotka
&lt;/p&gt;
&lt;p&gt;
Topic will give attendees a high level overview of CSLA as an application framework.
Key moving parts of CSLA will be covered, along with answering the most important
question: Why use CSLA? Roles of business objects, data portal, rules, authentication
and authorization will be covered in principal.
&lt;/p&gt;
&lt;p&gt;
2. Business object design - Eric Blackwell
&lt;/p&gt;
&lt;p&gt;
Session will concentrate of best practices for designing business objects. Single
responsibility principal and maintainability will be covered in light of using CSLA.
Key aspects of good CSLA business layer will be covered in detail, including properties,
rules, data portal, data access, business method and validation. Particular attention
will be paid to structuring classes and relationship between classes. Designing based
on use cases will be an important aspect of the session.
&lt;/p&gt;
&lt;p&gt;
3. Business, validation, and authorization rules - Tim Price-Williams
&lt;/p&gt;
&lt;p&gt;
This session will be a deep dive into the world or rules. Topics such as validation
rules, user authentication and authorization will be covered. Distinction between
validation and business rules be drawn. Important key scenarios will be covered, such
as synchronous and asynchronous rules, client / server rules, object creation and
save scenario from rules perspective. Custom and built-in rules be covered in detail.
A pattern for typical business rule/methods will be illuminated.
&lt;/p&gt;
&lt;p&gt;
4. Data portal and n-tier architecture - Rocky Lhotka
&lt;/p&gt;
&lt;p&gt;
This topic will cover in details all possibilities that CSLA provides when abstracting
communication channels between client and server components. Difference between local
and remote data portal will be discussed. Various configuration patterns will be highlighted
along with usage scenarios for each one. Multi-tier deployment as it relates to data
portals will be covered, as well as using external data sources instead of CSLA data
portal in client only scenarios.
&lt;/p&gt;
&lt;p&gt;
5. Data access - Travis Brown
&lt;/p&gt;
&lt;p&gt;
This session is all about data access technologies and how they relate to CSLA data
portal access. The topic will include patterns for abstracting data access for business
objects to promote maintainability. Discussion of Microsoft technologies for data
access will take place as well.
&lt;/p&gt;
&lt;p&gt;
6. XAML and MVVM - Sergey Barskiy
&lt;/p&gt;
&lt;p&gt;
This session will concentrate on using CSLA as business layer in XAML based user interfaces.
Taking Silverlight as an example, session will highlight how CSLA base classes can
be used to facilitate communication between UI and business objects. Adaptability
of CSLA business layer to seamlessly alter user interface based on rules be will covered.
Patterns for wiring business objects for Silverlight environment will be part of the
discussion.
&lt;/p&gt;
&lt;p&gt;
7. ASP.NET MVC - Mitch Gordon
&lt;/p&gt;
&lt;p&gt;
This session will concentrate on using CSLA as business layer in ASP.NET MVC based
user interfaces. The discussion will include CSLA provided base classes that will
allow developers write less code. The session will illuminate patters for maintaining
authentication and authorization rules between server calls. Patterns for adapting
UI based on user rights will be discussed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=29976d56-cd42-420b-bb75-f860e605c19a" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,29976d56-cd42-420b-bb75-f860e605c19a.aspx</comments>
      <category>CSLA .NET</category>
      <category>Magenic</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=9cc11080-eeb5-41c0-bde7-b437d28d56fc</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,9cc11080-eeb5-41c0-bde7-b437d28d56fc.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,9cc11080-eeb5-41c0-bde7-b437d28d56fc.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9cc11080-eeb5-41c0-bde7-b437d28d56fc</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There is no BackgroundWorker (BW) component in WinRT. Although that is arguably a
good thing, I have CSLA .NET code that relies on this component. I can’t eliminate
the BW from CSLA, because I need to continue to support .NET, Silverlight, and Windows
Phone, even as I add support for WinRT.
</p>
        <p>
Because .NET/SL/WP7 don’t (yet) have the async/await keywords, and WinRT doesn’t have
BW, I need to come up with a solution that leaves existing code/behavior alone, and
yet provides comparable behavior in WinRT.
</p>
        <p>
To resolve this issue, I’ve created a BackgroundWorker type for WinRT. This type hasn’t
gone through extensive testing, but it is a good start at least:
</p>
        <p>
          <a title="http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs" href="http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs">http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs</a>
        </p>
        <pre>//-----------------------------------------------------------------------<br />
// &lt;copyright file="BackgroundWorker.cs" company="Marimer LLC"&gt;<br />
//     Copyright (c) Marimer LLC. All rights reserved.<br />
//     Website: http://www.lhotka.net/cslanet/<br />
// &lt;/copyright&gt;<br />
// &lt;summary&gt;Implementation of old BCL BackgroundWorker ported to WinRT.&lt;/summary&gt;<br />
//-----------------------------------------------------------------------<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Threading.Tasks;<br />
using Windows.UI.Core;<br />
using Windows.UI.Xaml;<br /><br />
namespace System.ComponentModel<br />
{<br />
  public class BackgroundWorker : DependencyObject<br />
  {<br />
    private CoreDispatcher _dispatcher;<br /><br />
    public BackgroundWorker()<br />
    {<br />
      _dispatcher = this.Dispatcher;<br />
    }<br /><br />
    public void CancelAsync()<br />
    {<br />
      if (!WorkerSupportsCancellation)<br />
        throw new NotSupportedException();<br />
      CancellationPending = true;<br />
    }<br /><br />
    public bool CancellationPending { get; private set; }<br /><br />
    public event ProgressChangedEventHandler ProgressChanged;<br /><br />
    public void ReportProgress(int percentProgress)<br />
    {<br />
      ReportProgress(percentProgress, null);<br />
    }<br /><br />
    public void ReportProgress(int percentProgress, object userState)<br />
    {<br />
      if (ProgressChanged != null)<br />
        _dispatcher.Invoke(CoreDispatcherPriority.Normal,<br />
          (sender, args) =&gt;<br />
          {<br />
            ProgressChanged(this,
new ProgressChangedEventArgs(percentProgress, userState));<br />
          },<br />
          this, null);<br />
    }<br /><br />
    public bool WorkerReportsProgress { get; set; }<br />
    public bool WorkerSupportsCancellation { get; set; }<br />
    public bool IsBusy { get; set; }<br /><br />
    public event DoWorkEventHandler DoWork;<br />
    public event RunWorkerCompletedEventHandler RunWorkerCompleted;<br />
    protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs
e)<br />
    {<br />
      if (RunWorkerCompleted != null)<br />
        RunWorkerCompleted(this, e);<br />
    }<br /><br />
    public void RunWorkerAsync()<br />
    {<br />
      RunWorkerAsync(null);<br />
    }<br /><br />
    public async void RunWorkerAsync(object userState)<br />
    {<br />
      if (DoWork != null)<br />
      {<br />
        CancellationPending = false;<br />
        IsBusy = true;<br />
        try<br />
        {<br />
          var args = new DoWorkEventArgs
{ Argument = userState };<br />
          await Task.Run(() =&gt;<br />
          {<br />
            DoWork(this, args);<br />
          });<br />
          IsBusy = false;<br />
          OnRunWorkerCompleted(new RunWorkerCompletedEventArgs
{ Result = args.Result });<br />
        }<br />
        catch (Exception ex)<br />
        {<br />
          IsBusy = false;<br />
          OnRunWorkerCompleted(new RunWorkerCompletedEventArgs
{ Error = ex });<br />
        }<br />
      }<br />
    }<br />
  }<br /><br />
  public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e);<br /><br />
  public class DoWorkEventArgs : EventArgs<br />
  {<br />
    public DoWorkEventArgs()<br />
    { }<br /><br />
    public DoWorkEventArgs(object argument)<br />
    {<br />
      Argument = argument;<br />
    }<br /><br />
    public object Argument { get; set; }<br />
    public bool Cancel { get; set; }<br />
    public object Result { get; set; }<br />
  }<br /><br />
  public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs
e);<br /><br />
  public class RunWorkerCompletedEventArgs : EventArgs<br />
  {<br />
    public RunWorkerCompletedEventArgs()<br />
    { }<br /><br />
    public RunWorkerCompletedEventArgs(object result, Exception error,
bool cancelled)<br />
    {<br />
      Result = result;<br />
      Error = error;<br />
      Cancelled = cancelled;<br />
    }<br /><br />
    public Exception Error { get; set; }<br />
    public object Result { get; set; }<br />
    public bool Cancelled { get; set; }<br />
  }<br />
}</pre>
        <pre> </pre>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9cc11080-eeb5-41c0-bde7-b437d28d56fc" />
      </body>
      <title>WinRT BackgroundWorker type</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,9cc11080-eeb5-41c0-bde7-b437d28d56fc.aspx</guid>
      <link>http://www.lhotka.net/weblog/WinRTBackgroundWorkerType.aspx</link>
      <pubDate>Wed, 12 Oct 2011 18:32:14 GMT</pubDate>
      <description>&lt;p&gt;
There is no BackgroundWorker (BW) component in WinRT. Although that is arguably a
good thing, I have CSLA .NET code that relies on this component. I can’t eliminate
the BW from CSLA, because I need to continue to support .NET, Silverlight, and Windows
Phone, even as I add support for WinRT.
&lt;/p&gt;
&lt;p&gt;
Because .NET/SL/WP7 don’t (yet) have the async/await keywords, and WinRT doesn’t have
BW, I need to come up with a solution that leaves existing code/behavior alone, and
yet provides comparable behavior in WinRT.
&lt;/p&gt;
&lt;p&gt;
To resolve this issue, I’ve created a BackgroundWorker type for WinRT. This type hasn’t
gone through extensive testing, but it is a good start at least:
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs" href="http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs"&gt;http://www.lhotka.net/cslacvs/viewvc.cgi/core/trunk/Source/Csla.WinRT/Threading/BackgroundWorkerBCL.cs&lt;/a&gt;
&lt;/p&gt;
&lt;pre&gt;//-----------------------------------------------------------------------&lt;br&gt;
// &amp;lt;copyright file="BackgroundWorker.cs" company="Marimer LLC"&amp;gt;&lt;br&gt;
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Copyright (c) Marimer LLC. All rights reserved.&lt;br&gt;
//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Website: http://www.lhotka.net/cslanet/&lt;br&gt;
// &amp;lt;/copyright&amp;gt;&lt;br&gt;
// &amp;lt;summary&amp;gt;Implementation of old BCL BackgroundWorker ported to WinRT.&amp;lt;/summary&amp;gt;&lt;br&gt;
//-----------------------------------------------------------------------&lt;br&gt;
using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Linq;&lt;br&gt;
using System.Text;&lt;br&gt;
using System.Threading.Tasks;&lt;br&gt;
using Windows.UI.Core;&lt;br&gt;
using Windows.UI.Xaml;&lt;br&gt;
&lt;br&gt;
namespace System.ComponentModel&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; public class BackgroundWorker : DependencyObject&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private CoreDispatcher _dispatcher;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public BackgroundWorker()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _dispatcher = this.Dispatcher;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void CancelAsync()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!WorkerSupportsCancellation)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new NotSupportedException();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CancellationPending = true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool CancellationPending { get; private set; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public event ProgressChangedEventHandler ProgressChanged;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ReportProgress(int percentProgress)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReportProgress(percentProgress, null);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ReportProgress(int percentProgress, object userState)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ProgressChanged != null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _dispatcher.Invoke(CoreDispatcherPriority.Normal,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (sender, args) =&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProgressChanged(this,
new ProgressChangedEventArgs(percentProgress, userState));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this, null);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool WorkerReportsProgress { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool WorkerSupportsCancellation { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool IsBusy { get; set; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public event DoWorkEventHandler DoWork;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public event RunWorkerCompletedEventHandler RunWorkerCompleted;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected virtual void OnRunWorkerCompleted(RunWorkerCompletedEventArgs
e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (RunWorkerCompleted != null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RunWorkerCompleted(this, e);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void RunWorkerAsync()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RunWorkerAsync(null);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public async void RunWorkerAsync(object userState)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (DoWork != null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CancellationPending = false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsBusy = true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var args = new DoWorkEventArgs
{ Argument = userState };&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; await Task.Run(() =&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoWork(this, args);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsBusy = false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnRunWorkerCompleted(new RunWorkerCompletedEventArgs
{ Result = args.Result });&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsBusy = false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnRunWorkerCompleted(new RunWorkerCompletedEventArgs
{ Error = ex });&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp; public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e);&lt;br&gt;
&lt;br&gt;
&amp;nbsp; public class DoWorkEventArgs : EventArgs&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public DoWorkEventArgs()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public DoWorkEventArgs(object argument)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Argument = argument;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Argument { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool Cancel { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Result { get; set; }&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp; public delegate void RunWorkerCompletedEventHandler(object sender, RunWorkerCompletedEventArgs
e);&lt;br&gt;
&lt;br&gt;
&amp;nbsp; public class RunWorkerCompletedEventArgs : EventArgs&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public RunWorkerCompletedEventArgs()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public RunWorkerCompletedEventArgs(object result, Exception error,
bool cancelled)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result = result;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Error = error;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cancelled = cancelled;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Exception Error { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Result { get; set; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool Cancelled { get; set; }&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
}&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9cc11080-eeb5-41c0-bde7-b437d28d56fc" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,9cc11080-eeb5-41c0-bde7-b437d28d56fc.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=9ee9d2fb-9963-4111-9297-d22aa41ce0c9</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,9ee9d2fb-9963-4111-9297-d22aa41ce0c9.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,9ee9d2fb-9963-4111-9297-d22aa41ce0c9.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9ee9d2fb-9963-4111-9297-d22aa41ce0c9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Beta 1 release of CSLA 4 version 4.2 is now available for download on the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
        <p>
This version adds support for:
</p>
        <ul>
          <li>
Windows Phone 7.5 “Mango”</li>
          <li>
mono</li>
          <li>
mono for iOS (iPhone/iPad)</li>
          <li>
mono for Android</li>
        </ul>
        <p>
Of course it continues to support .NET 4 and Silverlight 4.
</p>
        <p>
This release also includes numerous bug fixes and small enhancements. In particular,
Jonny has done a lot of work to make the business rules subsystem more flexible and
powerful. See the <a href="http://www.lhotka.net/Article.aspx?id=2607a4ef-e6a9-4801-aa0b-518c51267339">change
log</a> for a list of all changes.
</p>
        <p>
At this point we have spent zero time or effort on the samples. Most samples will
continue to run when bound against the 4.2 assemblies, but some may encounter minor
issues. The samples in the download are still bound to the 4.1 assemblies. We will
be updating the samples during the 4.2 beta phase.
</p>
        <p>
Because of the organizational changes of mono from Novell to Xamarin, the 4.2 release
has taken a lot longer than any of us would have preferred. I am pleased that we’re
entering the beta phase, and can now move deliberately toward a release.
</p>
        <p>
If you are using 4.1, I <em>strongly recommend</em> that you test your code against
4.2. In part to help us identify any outstanding issues, and in part because the bug
fixes and enhancements to the rules subsystem may be very helpful to you.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9ee9d2fb-9963-4111-9297-d22aa41ce0c9" />
      </body>
      <title>CSLA 4 version 4.2 beta 1 release</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,9ee9d2fb-9963-4111-9297-d22aa41ce0c9.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version42Beta1Release.aspx</link>
      <pubDate>Tue, 04 Oct 2011 20:07:55 GMT</pubDate>
      <description>&lt;p&gt;
The Beta 1 release of CSLA 4 version 4.2 is now available for download on the &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;CSLA
download page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This version adds support for:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows Phone 7.5 “Mango”&lt;/li&gt;
&lt;li&gt;
mono&lt;/li&gt;
&lt;li&gt;
mono for iOS (iPhone/iPad)&lt;/li&gt;
&lt;li&gt;
mono for Android&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Of course it continues to support .NET 4 and Silverlight 4.
&lt;/p&gt;
&lt;p&gt;
This release also includes numerous bug fixes and small enhancements. In particular,
Jonny has done a lot of work to make the business rules subsystem more flexible and
powerful. See the &lt;a href="http://www.lhotka.net/Article.aspx?id=2607a4ef-e6a9-4801-aa0b-518c51267339"&gt;change
log&lt;/a&gt; for a list of all changes.
&lt;/p&gt;
&lt;p&gt;
At this point we have spent zero time or effort on the samples. Most samples will
continue to run when bound against the 4.2 assemblies, but some may encounter minor
issues. The samples in the download are still bound to the 4.1 assemblies. We will
be updating the samples during the 4.2 beta phase.
&lt;/p&gt;
&lt;p&gt;
Because of the organizational changes of mono from Novell to Xamarin, the 4.2 release
has taken a lot longer than any of us would have preferred. I am pleased that we’re
entering the beta phase, and can now move deliberately toward a release.
&lt;/p&gt;
&lt;p&gt;
If you are using 4.1, I &lt;em&gt;strongly recommend&lt;/em&gt; that you test your code against
4.2. In part to help us identify any outstanding issues, and in part because the bug
fixes and enhancements to the rules subsystem may be very helpful to you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9ee9d2fb-9963-4111-9297-d22aa41ce0c9" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,9ee9d2fb-9963-4111-9297-d22aa41ce0c9.aspx</comments>
      <category>CSLA .NET</category>
      <category>MonoDroid</category>
      <category>MonoTouch</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=8366dd63-f1b2-438d-9125-80f32904c7cb</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,8366dd63-f1b2-438d-9125-80f32904c7cb.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,8366dd63-f1b2-438d-9125-80f32904c7cb.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=8366dd63-f1b2-438d-9125-80f32904c7cb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Magenic is hosting a <a href="http://codemastery.eventbrite.com">Code Mastery event
in Atlanta</a> on October 8, and I am one of the speakers.
</p>
        <p>
This is a day of <strong><font style="background-color: #ffff00">free CSLA 4 training</font></strong>,
with content created and presented by people who use CSLA to build applications, and
by people (Sergey and myself) who are instrumental in creating and maintaining the
framework.
</p>
        <p>
Sign up now, I suspect seats will go fast!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8366dd63-f1b2-438d-9125-80f32904c7cb" />
      </body>
      <title>Code Mastery in Atlanta</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,8366dd63-f1b2-438d-9125-80f32904c7cb.aspx</guid>
      <link>http://www.lhotka.net/weblog/CodeMasteryInAtlanta.aspx</link>
      <pubDate>Wed, 28 Sep 2011 22:11:27 GMT</pubDate>
      <description>&lt;p&gt;
Magenic is hosting a &lt;a href="http://codemastery.eventbrite.com"&gt;Code Mastery event
in Atlanta&lt;/a&gt; on October 8, and I am one of the speakers.
&lt;/p&gt;
&lt;p&gt;
This is a day of &lt;strong&gt;&lt;font style="background-color: #ffff00"&gt;free CSLA 4 training&lt;/font&gt;&lt;/strong&gt;,
with content created and presented by people who use CSLA to build applications, and
by people (Sergey and myself) who are instrumental in creating and maintaining the
framework.
&lt;/p&gt;
&lt;p&gt;
Sign up now, I suspect seats will go fast!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8366dd63-f1b2-438d-9125-80f32904c7cb" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,8366dd63-f1b2-438d-9125-80f32904c7cb.aspx</comments>
      <category>CSLA .NET</category>
      <category>Magenic</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=dd726e14-09c9-4a42-b88e-a4b9ce526034</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,dd726e14-09c9-4a42-b88e-a4b9ce526034.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,dd726e14-09c9-4a42-b88e-a4b9ce526034.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=dd726e14-09c9-4a42-b88e-a4b9ce526034</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have been giving quite a lot of thought to the WinRT migration path. What is the
outlook for taking a Windows Forms, WPF, or Silverlight app into WinRT/Metro in Windows
8?
</p>
        <p>
The amount of effort required for any given application may vary radically, depending
on the architecture used when building the application, and how well that architecture
was implemented in the actual code. And it is obviously important to understand how
much client-side application code uses .NET features that aren’t in WinRT, or that
are substantially different in WinRT.
</p>
        <p>
And of course I tend to look at this from a CSLA .NET perspective <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/wlEmoticon-smile_2.png" /> 
If you use CSLA 4 today, and you adhere to the architecture and coding structures
recommended when using CSLA, most or all of your business layer code will probably
move to WinRT without change.
</p>
        <p>
So, rather simplified, and CSLA-centric, here’s a set of process flows:
</p>
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/image_thumb_1.png" width="403" height="306" />
          </a>
        </p>
        <p>
Although the first decision point is “Using CSLA?”, you could replace that with “using
a architecture/framework that abstracts all business, validation, authorization, data
access and other application logic away from the UI, exposing a model that supports
data binding and async server interactions”. Although I’m obviously biased, there
are absolutely other architectures that offer the same layered abstraction to keep <em>all
business and data logic</em> out of the presentation layer. And that’s really what’s
required.
</p>
        <p>
In the final analysis, if you have any business or data logic in your code-behind,
or you aren’t using data binding to connect your existing UI views to some sort of
business objects, you have some work ahead of you to get to that point.
</p>
        <p>
Essentially all non-CSLA <strong>Windows Forms apps </strong>I’ve ever seen will require
a complete rewrite. Most use DataSet objects, and therefore require total rework.
And most use a lot of code-behind, and therefore require total rework. And a lot of
them use numerous windows and modal dialogs, so the user workflow will require a complete
rethink.
</p>
        <p>
A surprising number of <strong>WPF apps </strong>are written much like Windows Forms
apps, with code-behind, etc. Those apps will require much the same effort to migrate
as Windows Forms. But if you’ve written your WPF app using MVVM, even without something
like CSLA, and have strictly avoided code-behind, the migration probably won’t be
too bad. 
</p>
        <p>
The big thing is that a lot of WPF apps aren’t written to assume async server interactions,
and updating code to handle that can be a lot of work. WPF apps written using CSLA
may already be using the async features in CSLA, and so can avoid this issue entirely.
Worst case, if you are already using CSLA synchronously, the changes to move to async
aren’t overwhelming.
</p>
        <p>
If you have a <strong>Silverlight app</strong>, you are in the best position of anyone,
because you are already using async server interaction, and can’t have made the mistake
of using the DataSet. And if you are using MVVM without any code-behind your migration
will probably be quite smooth.
</p>
        <p>
If you are also using CSLA, then your existing business layer will probably translate
to WinRT without change.
</p>
        <p>
As I mentioned in a previous <a href="http://www.lhotka.net/weblog/WinRTAndNET.aspx">WinRT
post</a>, Windows 8 is years away for most organizations. At the same time, I do think
that <a href="http://www.lhotka.net/weblog/WinRTAndBusinessApps.aspx">WinRT/Metro
will be used for business app development</a>.
</p>
        <p>
Quite a number of people are mistakenly saying that “Silverlight is dead”, when in
reality Silverlight has never been more important.
</p>
        <p>
What are you going to use to build business apps in the years between now and when
Win8 is available in your organization? 
</p>
        <p>
You might consider using the technology that appears to offer the easiest migration
to WinRT… And that is Silverlight (plus MVVM and CSLA 4 <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/wlEmoticon-smile_2.png" /> ).
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=dd726e14-09c9-4a42-b88e-a4b9ce526034" />
      </body>
      <title>Migrating smart clients to WinRT</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,dd726e14-09c9-4a42-b88e-a4b9ce526034.aspx</guid>
      <link>http://www.lhotka.net/weblog/MigratingSmartClientsToWinRT.aspx</link>
      <pubDate>Wed, 28 Sep 2011 17:35:58 GMT</pubDate>
      <description>&lt;p&gt;
I have been giving quite a lot of thought to the WinRT migration path. What is the
outlook for taking a Windows Forms, WPF, or Silverlight app into WinRT/Metro in Windows
8?
&lt;/p&gt;
&lt;p&gt;
The amount of effort required for any given application may vary radically, depending
on the architecture used when building the application, and how well that architecture
was implemented in the actual code. And it is obviously important to understand how
much client-side application code uses .NET features that aren’t in WinRT, or that
are substantially different in WinRT.
&lt;/p&gt;
&lt;p&gt;
And of course I tend to look at this from a CSLA .NET perspective &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/wlEmoticon-smile_2.png" /&gt;&amp;#160;
If you use CSLA 4 today, and you adhere to the architecture and coding structures
recommended when using CSLA, most or all of your business layer code will probably
move to WinRT without change.
&lt;/p&gt;
&lt;p&gt;
So, rather simplified, and CSLA-centric, here’s a set of process flows:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/image_thumb_1.png" width="403" height="306" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Although the first decision point is “Using CSLA?”, you could replace that with “using
a architecture/framework that abstracts all business, validation, authorization, data
access and other application logic away from the UI, exposing a model that supports
data binding and async server interactions”. Although I’m obviously biased, there
are absolutely other architectures that offer the same layered abstraction to keep &lt;em&gt;all
business and data logic&lt;/em&gt; out of the presentation layer. And that’s really what’s
required.
&lt;/p&gt;
&lt;p&gt;
In the final analysis, if you have any business or data logic in your code-behind,
or you aren’t using data binding to connect your existing UI views to some sort of
business objects, you have some work ahead of you to get to that point.
&lt;/p&gt;
&lt;p&gt;
Essentially all non-CSLA &lt;strong&gt;Windows Forms apps &lt;/strong&gt;I’ve ever seen will require
a complete rewrite. Most use DataSet objects, and therefore require total rework.
And most use a lot of code-behind, and therefore require total rework. And a lot of
them use numerous windows and modal dialogs, so the user workflow will require a complete
rethink.
&lt;/p&gt;
&lt;p&gt;
A surprising number of &lt;strong&gt;WPF apps &lt;/strong&gt;are written much like Windows Forms
apps, with code-behind, etc. Those apps will require much the same effort to migrate
as Windows Forms. But if you’ve written your WPF app using MVVM, even without something
like CSLA, and have strictly avoided code-behind, the migration probably won’t be
too bad. 
&lt;/p&gt;
&lt;p&gt;
The big thing is that a lot of WPF apps aren’t written to assume async server interactions,
and updating code to handle that can be a lot of work. WPF apps written using CSLA
may already be using the async features in CSLA, and so can avoid this issue entirely.
Worst case, if you are already using CSLA synchronously, the changes to move to async
aren’t overwhelming.
&lt;/p&gt;
&lt;p&gt;
If you have a &lt;strong&gt;Silverlight app&lt;/strong&gt;, you are in the best position of anyone,
because you are already using async server interaction, and can’t have made the mistake
of using the DataSet. And if you are using MVVM without any code-behind your migration
will probably be quite smooth.
&lt;/p&gt;
&lt;p&gt;
If you are also using CSLA, then your existing business layer will probably translate
to WinRT without change.
&lt;/p&gt;
&lt;p&gt;
As I mentioned in a previous &lt;a href="http://www.lhotka.net/weblog/WinRTAndNET.aspx"&gt;WinRT
post&lt;/a&gt;, Windows 8 is years away for most organizations. At the same time, I do think
that &lt;a href="http://www.lhotka.net/weblog/WinRTAndBusinessApps.aspx"&gt;WinRT/Metro
will be used for business app development&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Quite a number of people are mistakenly saying that “Silverlight is dead”, when in
reality Silverlight has never been more important.
&lt;/p&gt;
&lt;p&gt;
What are you going to use to build business apps in the years between now and when
Win8 is available in your organization? 
&lt;/p&gt;
&lt;p&gt;
You might consider using the technology that appears to offer the easiest migration
to WinRT… And that is Silverlight (plus MVVM and CSLA 4 &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Migrating-smart-clients-to-WinRT_ABF7/wlEmoticon-smile_2.png" /&gt; ).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=dd726e14-09c9-4a42-b88e-a4b9ce526034" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,dd726e14-09c9-4a42-b88e-a4b9ce526034.aspx</comments>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=f99abe8c-5733-4d38-841a-3cda3246116b</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,f99abe8c-5733-4d38-841a-3cda3246116b.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,f99abe8c-5733-4d38-841a-3cda3246116b.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=f99abe8c-5733-4d38-841a-3cda3246116b</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A number of people have asked about the future of CSLA .NET on WinRT (and Windows
8 and Metro).
</p>
        <p>
(fwiw, you can always check out the <a href="http://www.lhotka.net/cslanet/roadmap.aspx">CSLA
roadmap</a> to see what I’m planning)
</p>
        <p>
The short answer is that (when Win8 comes out) I expect to have a CSLA 4 version 4.5
release that supports .NET 4.5, along with WinRT. 
</p>
        <p>
These are two different things.
</p>
        <p>
          <strong>.NET 4.5</strong> builds apps that run on the Win8 desktop, not in Metro.
I imagine .NET 4.5 will also support Win7, but I don’t know for sure. I was able to
build the existing CSLA 4 version 4.2 code in .NET 4.5 without change. But I do expect
that some changes will be required to take advantage of .NET 4.5 features.
</p>
        <p>
For example, ASP.NET Web Forms is getting a major facelift in 4.5, as is ASP.NET MVC.
It is reasonable to expect that CSLA will need to accommodate those changes – though
the bulk of the impact should be in the Csla.Web and Csla.Web.Mvc projects. 
</p>
        <p>
Whether there are any interesting changes to WPF or Windows Forms is, at this point,
something I haven’t explored.
</p>
        <p>
          <strong>WinRT </strong>is closer to Silverlight than full .NET, but it isn’t Silverlight
either. I spent a couple hours this evening starting the port of CSLA 4 version 4.2
to WinRT.
</p>
        <ol>
          <li>
I started with the Csla.Silverlight project, because it is closest to what will work
in WinRT</li>
          <li>
I added the DataAnnotations implementation from Csla.Wp, because WinRT doesn’t have
DataAnnotations</li>
          <li>
WinRT is also missing <em>both </em>INotifyDataErrorInfo and IDataErrorInfo – so it
isn’t clear how any validation errors can be reported to the UI from a business object
(I hope they have some solution)</li>
          <li>
I still need to add the WCF data portal service reference to the Csla.WinRT project,
but it appears that the data portal is essentially the same as in SL</li>
        </ol>
        <p>
What remains are a couple relatively big issues that require some research:
</p>
        <ol>
          <li>
The BackgroundWorker component doesn’t exist in WinRT, and we’ll need to either rewrite
it or switch everything to the new async/await model</li>
          <li>
The .NET Type type is quite different in WinRT, so a lot of MethodCaller code needs
to be changed to use the new WinRT type system</li>
        </ol>
        <p>
The MethodCaller issue is, I suspect, just a matter of learning and using the new
type system. But this reveals an interesting fact: anyone using System.Reflection
in their code (even for simple things) is probably going to need to make changes to
move to WinRT.
</p>
        <p>
The BackgroundWorker issue is more interesting. At first glance it seems obvious that
we’d want to move to the async/await model. And I would – except that this model doesn’t
exist in .NET 4, Silverlight 4, Silverlight 5, WP7, or WP7.5.
</p>
        <p>
Silverlight 5 and WP7.5 are the challenges here, because they’ll be widely used concurrently
with .NET 4.5 and WinRT over a period of months or years.
</p>
        <ol>
          <li>
If we <em>require</em> the use of async/await, then CSLA 4.5 could not support SL
5 or WP7.5 (this violates one of the key value statements of CSLA .NET)</li>
          <li>
If we use async/await in .NET/WinRT, then you can’t have compatible object code between
.NET/WinRT and SL/WP (this violates one of the key value statements of CSLA .NET)</li>
          <li>
If we re-implement BackgroundWorker in WinRT, then CSLA and your business code is
unaffected, but you won’t be able to use async/await when you interact with the async
data portal or async business rules</li>
          <li>
If we <em>support</em> the use of async/await on .NET/WinRT, but also support BackgroundWorker
then <em>you</em> get to choose whether to write cross-compatible code, or code that
works on 4.5/WinRT only</li>
        </ol>
        <p>
Clearly options 1 and 2 won’t work. So we have to explore re-implementing BackgroundWorker
in WinRT. Presumably we’ll use async/await <em>inside</em> our BackgroundWorker replacement,
but we’ll keep the external interface consistent. I hope this is possible – I’m just
thinking out loud at this point.
</p>
        <p>
In the medium timeframe option 4 has to be the goal. In the <em>long run</em> I think
it is safe to assume that some future version of SL and some future version of Windows
Phone will support async/await. When all the then-current Microsoft platforms support
the model we’ll drop BackgroundWorker entirely.
</p>
        <p>
Regardless, I am quite pleased by just how far I was able to get in just a couple
hours work. I have the Csla.WinRT project structure in place, and have narrowed down
the problem areas to:
</p>
        <ol>
          <li>
We need some validation error notification model to replace IDEI and INDEI</li>
          <li>
We need a BackgroundWorker replacement</li>
          <li>
We need a MethodCaller update</li>
        </ol>
        <p>
When you think about the breadth of scope of the CSLA 4 framework, I’m pretty amazed
that we only have three problem areas to address for the core framework.
</p>
        <p>
We’ll also need to create a Csla.Xaml.WinRT assembly with some UI helpers (that’s
probably how we’ll solve the validation error issue for example). I haven’t explored
how much of the existing Csla.Xaml concepts will carry forward – but I suspect Csla.Xaml.WinRT
will be very much like the existing Csla.Xaml.Wp project.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=f99abe8c-5733-4d38-841a-3cda3246116b" />
      </body>
      <title>CSLA on WinRT (project start)</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,f99abe8c-5733-4d38-841a-3cda3246116b.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLAOnWinRTProjectStart.aspx</link>
      <pubDate>Mon, 19 Sep 2011 02:36:28 GMT</pubDate>
      <description>&lt;p&gt;
A number of people have asked about the future of CSLA .NET on WinRT (and Windows
8 and Metro).
&lt;/p&gt;
&lt;p&gt;
(fwiw, you can always check out the &lt;a href="http://www.lhotka.net/cslanet/roadmap.aspx"&gt;CSLA
roadmap&lt;/a&gt; to see what I’m planning)
&lt;/p&gt;
&lt;p&gt;
The short answer is that (when Win8 comes out) I expect to have a CSLA 4 version 4.5
release that supports .NET 4.5, along with WinRT. 
&lt;/p&gt;
&lt;p&gt;
These are two different things.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;.NET 4.5&lt;/strong&gt; builds apps that run on the Win8 desktop, not in Metro.
I imagine .NET 4.5 will also support Win7, but I don’t know for sure. I was able to
build the existing CSLA 4 version 4.2 code in .NET 4.5 without change. But I do expect
that some changes will be required to take advantage of .NET 4.5 features.
&lt;/p&gt;
&lt;p&gt;
For example, ASP.NET Web Forms is getting a major facelift in 4.5, as is ASP.NET MVC.
It is reasonable to expect that CSLA will need to accommodate those changes – though
the bulk of the impact should be in the Csla.Web and Csla.Web.Mvc projects. 
&lt;/p&gt;
&lt;p&gt;
Whether there are any interesting changes to WPF or Windows Forms is, at this point,
something I haven’t explored.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;WinRT &lt;/strong&gt;is closer to Silverlight than full .NET, but it isn’t Silverlight
either. I spent a couple hours this evening starting the port of CSLA 4 version 4.2
to WinRT.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
I started with the Csla.Silverlight project, because it is closest to what will work
in WinRT&lt;/li&gt;
&lt;li&gt;
I added the DataAnnotations implementation from Csla.Wp, because WinRT doesn’t have
DataAnnotations&lt;/li&gt;
&lt;li&gt;
WinRT is also missing &lt;em&gt;both &lt;/em&gt;INotifyDataErrorInfo and IDataErrorInfo – so it
isn’t clear how any validation errors can be reported to the UI from a business object
(I hope they have some solution)&lt;/li&gt;
&lt;li&gt;
I still need to add the WCF data portal service reference to the Csla.WinRT project,
but it appears that the data portal is essentially the same as in SL&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
What remains are a couple relatively big issues that require some research:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
The BackgroundWorker component doesn’t exist in WinRT, and we’ll need to either rewrite
it or switch everything to the new async/await model&lt;/li&gt;
&lt;li&gt;
The .NET Type type is quite different in WinRT, so a lot of MethodCaller code needs
to be changed to use the new WinRT type system&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The MethodCaller issue is, I suspect, just a matter of learning and using the new
type system. But this reveals an interesting fact: anyone using System.Reflection
in their code (even for simple things) is probably going to need to make changes to
move to WinRT.
&lt;/p&gt;
&lt;p&gt;
The BackgroundWorker issue is more interesting. At first glance it seems obvious that
we’d want to move to the async/await model. And I would – except that this model doesn’t
exist in .NET 4, Silverlight 4, Silverlight 5, WP7, or WP7.5.
&lt;/p&gt;
&lt;p&gt;
Silverlight 5 and WP7.5 are the challenges here, because they’ll be widely used concurrently
with .NET 4.5 and WinRT over a period of months or years.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
If we &lt;em&gt;require&lt;/em&gt; the use of async/await, then CSLA 4.5 could not support SL
5 or WP7.5 (this violates one of the key value statements of CSLA .NET)&lt;/li&gt;
&lt;li&gt;
If we use async/await in .NET/WinRT, then you can’t have compatible object code between
.NET/WinRT and SL/WP (this violates one of the key value statements of CSLA .NET)&lt;/li&gt;
&lt;li&gt;
If we re-implement BackgroundWorker in WinRT, then CSLA and your business code is
unaffected, but you won’t be able to use async/await when you interact with the async
data portal or async business rules&lt;/li&gt;
&lt;li&gt;
If we &lt;em&gt;support&lt;/em&gt; the use of async/await on .NET/WinRT, but also support BackgroundWorker
then &lt;em&gt;you&lt;/em&gt; get to choose whether to write cross-compatible code, or code that
works on 4.5/WinRT only&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Clearly options 1 and 2 won’t work. So we have to explore re-implementing BackgroundWorker
in WinRT. Presumably we’ll use async/await &lt;em&gt;inside&lt;/em&gt; our BackgroundWorker replacement,
but we’ll keep the external interface consistent. I hope this is possible – I’m just
thinking out loud at this point.
&lt;/p&gt;
&lt;p&gt;
In the medium timeframe option 4 has to be the goal. In the &lt;em&gt;long run&lt;/em&gt; I think
it is safe to assume that some future version of SL and some future version of Windows
Phone will support async/await. When all the then-current Microsoft platforms support
the model we’ll drop BackgroundWorker entirely.
&lt;/p&gt;
&lt;p&gt;
Regardless, I am quite pleased by just how far I was able to get in just a couple
hours work. I have the Csla.WinRT project structure in place, and have narrowed down
the problem areas to:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
We need some validation error notification model to replace IDEI and INDEI&lt;/li&gt;
&lt;li&gt;
We need a BackgroundWorker replacement&lt;/li&gt;
&lt;li&gt;
We need a MethodCaller update&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
When you think about the breadth of scope of the CSLA 4 framework, I’m pretty amazed
that we only have three problem areas to address for the core framework.
&lt;/p&gt;
&lt;p&gt;
We’ll also need to create a Csla.Xaml.WinRT assembly with some UI helpers (that’s
probably how we’ll solve the validation error issue for example). I haven’t explored
how much of the existing Csla.Xaml concepts will carry forward – but I suspect Csla.Xaml.WinRT
will be very much like the existing Csla.Xaml.Wp project.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=f99abe8c-5733-4d38-841a-3cda3246116b" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,f99abe8c-5733-4d38-841a-3cda3246116b.aspx</comments>
      <category>CSLA .NET</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=ce5ce1b1-c899-4530-8b99-6906b1184d9c</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,ce5ce1b1-c899-4530-8b99-6906b1184d9c.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,ce5ce1b1-c899-4530-8b99-6906b1184d9c.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=ce5ce1b1-c899-4530-8b99-6906b1184d9c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final draft of the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;ProductID=27">Using
CSLA 4: ASP.NET MVC</a> ebook is now online, and available for purchase.
</p>
        <p>
If you own the <em>Using CSLA 4</em> ebook series, you already own this new ebook
and can download it from <a href="http://download.lhotka.net/Default.aspx?t=UsingCsla4">http://download.lhotka.net/Default.aspx?t=UsingCsla4</a>.
</p>
        <p>
If you are buying the ebooks individually, the new book is now available for purchase
from <a href="http://store.lhotka.net">http://store.lhotka.net</a>.
</p>
        <p>
This ebook also includes a code download, containing the latest ProjectTracker codebase.
This includes the Mvc3UI project: an ASP.NET MVC 3 application built using the CSLA
.NET business layer.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ce5ce1b1-c899-4530-8b99-6906b1184d9c" />
      </body>
      <title>Using CSLA 4: ASP.NET MVC ebook now available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,ce5ce1b1-c899-4530-8b99-6906b1184d9c.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingCSLA4ASPNETMVCEbookNowAvailable.aspx</link>
      <pubDate>Tue, 07 Jun 2011 21:50:00 GMT</pubDate>
      <description>&lt;p&gt;
The final draft of the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;ProductID=27"&gt;Using
CSLA 4: ASP.NET MVC&lt;/a&gt; ebook is now online, and available for purchase.
&lt;/p&gt;
&lt;p&gt;
If you own the &lt;em&gt;Using CSLA 4&lt;/em&gt; ebook series, you already own this new ebook
and can download it from &lt;a href="http://download.lhotka.net/Default.aspx?t=UsingCsla4"&gt;http://download.lhotka.net/Default.aspx?t=UsingCsla4&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you are buying the ebooks individually, the new book is now available for purchase
from &lt;a href="http://store.lhotka.net"&gt;http://store.lhotka.net&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This ebook also includes a code download, containing the latest ProjectTracker codebase.
This includes the Mvc3UI project: an ASP.NET MVC 3 application built using the CSLA
.NET business layer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ce5ce1b1-c899-4530-8b99-6906b1184d9c" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,ce5ce1b1-c899-4530-8b99-6906b1184d9c.aspx</comments>
      <category>Books</category>
      <category>CSLA .NET</category>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=f5bb483c-bb8a-4170-a0dd-f8f7f70f7716</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,f5bb483c-bb8a-4170-a0dd-f8f7f70f7716.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,f5bb483c-bb8a-4170-a0dd-f8f7f70f7716.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=f5bb483c-bb8a-4170-a0dd-f8f7f70f7716</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p style="margin: 0in 0in 6pt">
I am pleased to announce that the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;ProductID=26">Using
CSLA 4: Data Portal Configuration ebook</a> is available for purchase in draft form.
</p>
        <p style="margin: 0in 0in 6pt">
Owners of the <em>Using CSLA 4</em> ebook series can also download the updated ebook
draft.
</p>
        <p style="margin: 0in 0in 6pt">
This ebook (141 pages in PDF format) covers the use of the CSLA 4 data portal technology,
which enables flexible n-tier deployments of your applications in 1-, 2-, 3- and 4-tier
physical configurations. The ebook covers the use of the data portal in .NET smart
client, Silverlight, WP7, and ASP.NET web applications. 
<br /><br />
The ebook also covers the authentication techniques supported by CSLA .NET, including
Windows integrated domain or Active Directory authentication, the use of the ASP.NET
MembershipProvider model and custom authentication against your own security data
store. 
</p>
        <p style="margin: 0in 0in 6pt">
The ebook includes a complete set of sample applications demonstrating the concepts
and techniques discussed in the book.
</p>
        <p style="margin: 0in 0in 6pt">
Here is a high level list of the content in this ebook:
</p>
        <ol>
          <li>
Data Portal Deployment 
<ol><li>
Data portal concepts 
</li><li>
Deployment options 
</li><li>
Using the local channel 
</li><li>
Using the WCF channel 
</li><li>
4-tier Silverlight and WP7 deployment 
</li></ol></li>
          <li>
Data portal configuration reference 
</li>
          <li>
Serialization 
<ol><li>
.NET serialization 
</li><li>
MobileFormatter 
</li></ol></li>
          <li>
Custom data portal proxies 
<ol><li>
Supporting multiple application servers 
</li><li>
Dynamically switching between online and offline mode 
</li></ol></li>
          <li>
Authentication models 
<ol><li>
Custom authentication 
</li><li>
ASP.NET membership authentication 
</li><li>
Windows authentication 
</li></ol></li>
        </ol>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=f5bb483c-bb8a-4170-a0dd-f8f7f70f7716" />
      </body>
      <title>Using CSLA 4: Data Portal Configuration draft online</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,f5bb483c-bb8a-4170-a0dd-f8f7f70f7716.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingCSLA4DataPortalConfigurationDraftOnline.aspx</link>
      <pubDate>Thu, 05 May 2011 03:18:41 GMT</pubDate>
      <description>&lt;p style="margin: 0in 0in 6pt"&gt;
I am pleased to announce that the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;ProductID=26"&gt;Using
CSLA 4: Data Portal Configuration ebook&lt;/a&gt; is available for purchase in draft form.
&lt;/p&gt;
&lt;p style="margin: 0in 0in 6pt"&gt;
Owners of the &lt;em&gt;Using CSLA 4&lt;/em&gt; ebook series can also download the updated ebook
draft.
&lt;/p&gt;
&lt;p style="margin: 0in 0in 6pt"&gt;
This ebook (141 pages in PDF format) covers the use of the CSLA 4 data portal technology,
which enables flexible n-tier deployments of your applications in 1-, 2-, 3- and 4-tier
physical configurations. The ebook covers the use of the data portal in .NET smart
client, Silverlight, WP7, and ASP.NET web applications. 
&lt;br /&gt;
&lt;br /&gt;
The ebook also covers the authentication techniques supported by CSLA .NET, including
Windows integrated domain or Active Directory authentication, the use of the ASP.NET
MembershipProvider model and custom authentication against your own security data
store. 
&lt;/p&gt;
&lt;p style="margin: 0in 0in 6pt"&gt;
The ebook includes a complete set of sample applications demonstrating the concepts
and techniques discussed in the book.
&lt;/p&gt;
&lt;p style="margin: 0in 0in 6pt"&gt;
Here is a high level list of the content in this ebook:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Data Portal Deployment 
&lt;ol&gt;
&lt;li&gt;
Data portal concepts 
&lt;/li&gt;
&lt;li&gt;
Deployment options 
&lt;/li&gt;
&lt;li&gt;
Using the local channel 
&lt;/li&gt;
&lt;li&gt;
Using the WCF channel 
&lt;/li&gt;
&lt;li&gt;
4-tier Silverlight and WP7 deployment 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
Data portal configuration reference 
&lt;/li&gt;
&lt;li&gt;
Serialization 
&lt;ol&gt;
&lt;li&gt;
.NET serialization 
&lt;/li&gt;
&lt;li&gt;
MobileFormatter 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
Custom data portal proxies 
&lt;ol&gt;
&lt;li&gt;
Supporting multiple application servers 
&lt;/li&gt;
&lt;li&gt;
Dynamically switching between online and offline mode 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
Authentication models 
&lt;ol&gt;
&lt;li&gt;
Custom authentication 
&lt;/li&gt;
&lt;li&gt;
ASP.NET membership authentication 
&lt;/li&gt;
&lt;li&gt;
Windows authentication 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=f5bb483c-bb8a-4170-a0dd-f8f7f70f7716" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,f5bb483c-bb8a-4170-a0dd-f8f7f70f7716.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=bbea2ed0-76d6-4c17-a973-fd0b1d738020</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,bbea2ed0-76d6-4c17-a973-fd0b1d738020.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,bbea2ed0-76d6-4c17-a973-fd0b1d738020.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=bbea2ed0-76d6-4c17-a973-fd0b1d738020</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dunn training will be holding their next <a href="http://www.dunntraining.com/CSLATraining.htm">CSLA
training class</a> in Atlanta, June 21-23.
</p>
        <p>
If you are gearing up to use CSLA .NET and want some solid classroom training to get
started, this is the way to go!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=bbea2ed0-76d6-4c17-a973-fd0b1d738020" />
      </body>
      <title>CSLA 4 training: June 2011</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,bbea2ed0-76d6-4c17-a973-fd0b1d738020.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4TrainingJune2011.aspx</link>
      <pubDate>Tue, 26 Apr 2011 02:01:38 GMT</pubDate>
      <description>&lt;p&gt;
Dunn training will be holding their next &lt;a href="http://www.dunntraining.com/CSLATraining.htm"&gt;CSLA
training class&lt;/a&gt; in Atlanta, June 21-23.
&lt;/p&gt;
&lt;p&gt;
If you are gearing up to use CSLA .NET and want some solid classroom training to get
started, this is the way to go!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=bbea2ed0-76d6-4c17-a973-fd0b1d738020" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,bbea2ed0-76d6-4c17-a973-fd0b1d738020.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=191a4259-8122-4d7a-be4b-e868bf9de34b</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,191a4259-8122-4d7a-be4b-e868bf9de34b.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,191a4259-8122-4d7a-be4b-e868bf9de34b.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=191a4259-8122-4d7a-be4b-e868bf9de34b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have been working on the <em>Using CSLA 4: Data Portal Configuration</em> ebook,
part of the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;ProductID=22">Using
CSLA 4 ebook series</a>. One section of the book covers the use of Windows Azure as
the application server, where the server-side components of the CSLA .NET data portal
and your application will run.
</p>
        <p>
Perhaps the most interesting part of that section of the ebook is that there’s no
meaningful difference between hosting in Windows Azure and hosting in IIS on an on-premise
Windows Server. In fact, the only difference at all is that the project in Visual
Studio is an Azure ASP.NET Web Role project instead of an Empty ASP.NET web project.
</p>
        <p>
This is because Windows Azure allows WCF services to host in a web role in the same
way IIS hosts WCF services. When using the WCF data portal channel, the server components
are accessed through a standard WCF endpoint – nothing special or fancy. That means
any place you can host WCF, you can host the data portal.
</p>
        <p>
In my example solution, there’s also a Silverlight client app. It is part of that
same Web Role app, so a user simply navigates to the web page in Azure that hosts
the Silverlight app. The Silverlight app runs on the client, and uses the data portal
to interact with the server-side components of the application running in Azure.
</p>
        <p>
There is some potential value to hosting the data portal (your application server)
in Windows Azure. 
</p>
        <p>
There’s the obvious scalability benefit. Because the data portal is stateless, and
typical server-side business code in a CSLA application is also stateless, there is
no problem with just adding more web role instances to the app. If more capacity is
required on the server, just change the Azure configuration and just like that you
have more capacity.
</p>
        <p>
The business code running in Azure typically implements persistence. Another value
of running the application server in Azure is that the application can store its data
in SQL Azure. Pretty comparable to SQL Server, but based in the cloud. In that way,
the entire app can be cloud-based, with the Silverlight client using client-side CPU
and memory resources, while the rest of the app scales happily in Azure.
</p>
        <p>
Alternately, the application could store its data in Azure Storage. That isn’t a relational
data store, but does offer some interesting super-scaling capabilities that may be
quite valuable.
</p>
        <p>
In the end, perhaps the most notable thing to consider is this: when building an application
using CSLA and the data portal, it is entirely possible to switch between hosting
in IIS to hosting in Azure, and back again, without changing anything except the application
configuration.
</p>
        <p>
Sure, if you use Azure-specific features in your business code (like Azure Storage),
you can’t easily move off Azure. But if you stick with SQL Server or SQL Azure, and
avoid Azure Storage, the .NET Service Bus, and other Azure-specific constructs, CSLA
can help you build an app that can exploit Azure, without being locked into Azure
forever.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=191a4259-8122-4d7a-be4b-e868bf9de34b" />
      </body>
      <title>CSLA .NET and Windows Azure</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,191a4259-8122-4d7a-be4b-e868bf9de34b.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLANETAndWindowsAzure.aspx</link>
      <pubDate>Mon, 28 Mar 2011 00:11:17 GMT</pubDate>
      <description>&lt;p&gt;
I have been working on the &lt;em&gt;Using CSLA 4: Data Portal Configuration&lt;/em&gt; ebook,
part of the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;ProductID=22"&gt;Using
CSLA 4 ebook series&lt;/a&gt;. One section of the book covers the use of Windows Azure as
the application server, where the server-side components of the CSLA .NET data portal
and your application will run.
&lt;/p&gt;
&lt;p&gt;
Perhaps the most interesting part of that section of the ebook is that there’s no
meaningful difference between hosting in Windows Azure and hosting in IIS on an on-premise
Windows Server. In fact, the only difference at all is that the project in Visual
Studio is an Azure ASP.NET Web Role project instead of an Empty ASP.NET web project.
&lt;/p&gt;
&lt;p&gt;
This is because Windows Azure allows WCF services to host in a web role in the same
way IIS hosts WCF services. When using the WCF data portal channel, the server components
are accessed through a standard WCF endpoint – nothing special or fancy. That means
any place you can host WCF, you can host the data portal.
&lt;/p&gt;
&lt;p&gt;
In my example solution, there’s also a Silverlight client app. It is part of that
same Web Role app, so a user simply navigates to the web page in Azure that hosts
the Silverlight app. The Silverlight app runs on the client, and uses the data portal
to interact with the server-side components of the application running in Azure.
&lt;/p&gt;
&lt;p&gt;
There is some potential value to hosting the data portal (your application server)
in Windows Azure. 
&lt;/p&gt;
&lt;p&gt;
There’s the obvious scalability benefit. Because the data portal is stateless, and
typical server-side business code in a CSLA application is also stateless, there is
no problem with just adding more web role instances to the app. If more capacity is
required on the server, just change the Azure configuration and just like that you
have more capacity.
&lt;/p&gt;
&lt;p&gt;
The business code running in Azure typically implements persistence. Another value
of running the application server in Azure is that the application can store its data
in SQL Azure. Pretty comparable to SQL Server, but based in the cloud. In that way,
the entire app can be cloud-based, with the Silverlight client using client-side CPU
and memory resources, while the rest of the app scales happily in Azure.
&lt;/p&gt;
&lt;p&gt;
Alternately, the application could store its data in Azure Storage. That isn’t a relational
data store, but does offer some interesting super-scaling capabilities that may be
quite valuable.
&lt;/p&gt;
&lt;p&gt;
In the end, perhaps the most notable thing to consider is this: when building an application
using CSLA and the data portal, it is entirely possible to switch between hosting
in IIS to hosting in Azure, and back again, without changing anything except the application
configuration.
&lt;/p&gt;
&lt;p&gt;
Sure, if you use Azure-specific features in your business code (like Azure Storage),
you can’t easily move off Azure. But if you stick with SQL Server or SQL Azure, and
avoid Azure Storage, the .NET Service Bus, and other Azure-specific constructs, CSLA
can help you build an app that can exploit Azure, without being locked into Azure
forever.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=191a4259-8122-4d7a-be4b-e868bf9de34b" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,191a4259-8122-4d7a-be4b-e868bf9de34b.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows Azure</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=547eb93e-e9d8-4a83-8eff-6e21c4c2fea0</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,547eb93e-e9d8-4a83-8eff-6e21c4c2fea0.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,547eb93e-e9d8-4a83-8eff-6e21c4c2fea0.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=547eb93e-e9d8-4a83-8eff-6e21c4c2fea0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There is now an alpha release of CSLA 4 version 4.2 available for download:
</p>
        <ul>
          <li>
            <a href="http://www.lhotka.net/cslanet/download.aspx">Download CSLA 4 version 4.2.0</a>
          </li>
        </ul>
        <p>
The big initiative for version 4.2 is to add support for the following platforms:
</p>
        <ul>
          <li>
Linux and OS X (via Mono)</li>
          <li>
Android (via MonoDroid)</li>
          <li>
iPhone and iPad (via MonoTouch)</li>
        </ul>
        <p>
This alpha release does not include binaries for these platforms, but does include
code and sln files (for Visual Studio and/or MonoDevelop) you can use to build the
source on each of the platforms.
</p>
        <p>
At this point in time we have the following:
</p>
        <ol>
          <li>
CSLA 4 builds and runs on mono in Windows and Linux.</li>
        </ol>
        <ol>
          <li>
Core CSLA 4 functionality (Csla.dll) should be the same as on .NET 4.</li>
          <li>
ASP.NET code using CSLA objects should work using Csla.Web.dll</li>
          <li>
The Windows Forms support with Csla.Windows.dll is limited due to incompatibilities
in data binding between real Windows Forms and the mono implementation of Windows
Forms.</li>
        </ol>
        <li>
CSLA 4 builds and runs on Android. Use the MonoDroid tools in Visual Studio to build
Csla.dll.</li>
        <ol>
          <li>
You should find behaviors and features for Android identical to that provided for
WP7.</li>
          <li>
There is not currently an equivalent to Csla.Xaml.dll for Android.</li>
          <li>
No testing has been done around the use of any remote data portal channel – only the
local data portal has had any testing.</li>
        </ol>
        <li>
CSLA 4 builds and runs on iOS (iPhone/iPad). Use MonoDevelop on OS X to build Csla.dll.</li>
        <ol>
          <li>
You should find behaviors and features for iOS identical to that provided for WP7.</li>
          <li>
There is not currently an equivalent to Csla.Xaml.dll for iOS.</li>
          <li>
No testing has been done around the use of any remote data portal channel – only the
local data portal has had any testing.</li>
        </ol>
        <p>
Please remember, this is an alpha release, in the early stages of testing and stabilization.
Any help you can provide in terms of testing and resolving issues is appreciated!
Direct inquiries to <a href="http://forums.lhotka.net">http://forums.lhotka.net</a>.
</p>
        <p>
Other changes of note to existing .NET, SL, or WP7 users include:
</p>
        <ul>
          <li>
When an async rule completes, rules for affected properties are now also run</li>
          <li>
BackgroundWorker from Csla.Threading is now available in WP7</li>
          <li>
Some cleanup work was done around CslaIdentity – this shouldn’t be a breaking change,
but the internals are now quite different</li>
          <li>
Fix a bug in non-generic GetProperty where field wasn’t always set to the correct
default value</li>
        </ul>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=547eb93e-e9d8-4a83-8eff-6e21c4c2fea0" />
      </body>
      <title>CSLA 4 version 4.2 alpha release</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,547eb93e-e9d8-4a83-8eff-6e21c4c2fea0.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version42AlphaRelease.aspx</link>
      <pubDate>Sat, 26 Mar 2011 23:13:06 GMT</pubDate>
      <description>&lt;p&gt;
There is now an alpha release of CSLA 4 version 4.2 available for download:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;Download CSLA 4 version 4.2.0&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The big initiative for version 4.2 is to add support for the following platforms:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Linux and OS X (via Mono)&lt;/li&gt;
&lt;li&gt;
Android (via MonoDroid)&lt;/li&gt;
&lt;li&gt;
iPhone and iPad (via MonoTouch)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This alpha release does not include binaries for these platforms, but does include
code and sln files (for Visual Studio and/or MonoDevelop) you can use to build the
source on each of the platforms.
&lt;/p&gt;
&lt;p&gt;
At this point in time we have the following:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
CSLA 4 builds and runs on mono in Windows and Linux.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Core CSLA 4 functionality (Csla.dll) should be the same as on .NET 4.&lt;/li&gt;
&lt;li&gt;
ASP.NET code using CSLA objects should work using Csla.Web.dll&lt;/li&gt;
&lt;li&gt;
The Windows Forms support with Csla.Windows.dll is limited due to incompatibilities
in data binding between real Windows Forms and the mono implementation of Windows
Forms.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
CSLA 4 builds and runs on Android. Use the MonoDroid tools in Visual Studio to build
Csla.dll.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
You should find behaviors and features for Android identical to that provided for
WP7.&lt;/li&gt;
&lt;li&gt;
There is not currently an equivalent to Csla.Xaml.dll for Android.&lt;/li&gt;
&lt;li&gt;
No testing has been done around the use of any remote data portal channel – only the
local data portal has had any testing.&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
CSLA 4 builds and runs on iOS (iPhone/iPad). Use MonoDevelop on OS X to build Csla.dll.&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
You should find behaviors and features for iOS identical to that provided for WP7.&lt;/li&gt;
&lt;li&gt;
There is not currently an equivalent to Csla.Xaml.dll for iOS.&lt;/li&gt;
&lt;li&gt;
No testing has been done around the use of any remote data portal channel – only the
local data portal has had any testing.&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;p&gt;
Please remember, this is an alpha release, in the early stages of testing and stabilization.
Any help you can provide in terms of testing and resolving issues is appreciated!
Direct inquiries to &lt;a href="http://forums.lhotka.net"&gt;http://forums.lhotka.net&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Other changes of note to existing .NET, SL, or WP7 users include:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
When an async rule completes, rules for affected properties are now also run&lt;/li&gt;
&lt;li&gt;
BackgroundWorker from Csla.Threading is now available in WP7&lt;/li&gt;
&lt;li&gt;
Some cleanup work was done around CslaIdentity – this shouldn’t be a breaking change,
but the internals are now quite different&lt;/li&gt;
&lt;li&gt;
Fix a bug in non-generic GetProperty where field wasn’t always set to the correct
default value&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=547eb93e-e9d8-4a83-8eff-6e21c4c2fea0" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,547eb93e-e9d8-4a83-8eff-6e21c4c2fea0.aspx</comments>
      <category>CSLA .NET</category>
      <category>mono</category>
      <category>MonoDroid</category>
      <category>MonoTouch</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=e4a9dae6-8edc-490f-8c02-01acaf9bc2eb</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,e4a9dae6-8edc-490f-8c02-01acaf9bc2eb.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,e4a9dae6-8edc-490f-8c02-01acaf9bc2eb.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=e4a9dae6-8edc-490f-8c02-01acaf9bc2eb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dunn Training is offering their <a href="http://www.dunntraining.com/training/html/cslaframework4.htm">CSLA
4 training class</a> on April 11-13. The location is Atlanta.
</p>
        <p>
Here’s a quote from their last class: "The willingness of our trainer to discuss
how the material applied to our specific applications and situations allowed me to
get an extraordinary amount of knowledge that I could put to real use immediately
after taking the CSLA 4 training class."
</p>
        <p>
This is a great class, so if you are looking for training on CSLA .NET, you should
take a look at this opportunity.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e4a9dae6-8edc-490f-8c02-01acaf9bc2eb" />
      </body>
      <title>CSLA 4 training, April 11-13</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,e4a9dae6-8edc-490f-8c02-01acaf9bc2eb.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4TrainingApril1113.aspx</link>
      <pubDate>Mon, 21 Mar 2011 01:24:36 GMT</pubDate>
      <description>&lt;p&gt;
Dunn Training is offering their &lt;a href="http://www.dunntraining.com/training/html/cslaframework4.htm"&gt;CSLA
4 training class&lt;/a&gt; on April 11-13. The location is Atlanta.
&lt;/p&gt;
&lt;p&gt;
Here’s a quote from their last class: &amp;quot;The willingness of our trainer to discuss
how the material applied to our specific applications and situations allowed me to
get an extraordinary amount of knowledge that I could put to real use immediately
after taking the CSLA 4 training class.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
This is a great class, so if you are looking for training on CSLA .NET, you should
take a look at this opportunity.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e4a9dae6-8edc-490f-8c02-01acaf9bc2eb" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,e4a9dae6-8edc-490f-8c02-01acaf9bc2eb.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=73d4dbb2-837c-4798-8092-d65a570e00a7</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,73d4dbb2-837c-4798-8092-d65a570e00a7.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,73d4dbb2-837c-4798-8092-d65a570e00a7.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=73d4dbb2-837c-4798-8092-d65a570e00a7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The full draft of the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;ProductID=25">Using
CSLA 4: Data Access</a> ebook is now online and available for individual purchase.
</p>
        <p>
If you purchase, or have purchased, the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;ProductID=22">Using
CSLA 4 ebook series</a>, you can also download this new ebook, because it is part
of the series.
</p>
        <p>
This 214 page ebook (in PDF format) covers the four data access models supported by
CSLA .NET, focusing on the two models that provide the best maintainability and flexibility
without incurring undo complexity. 
</p>
        <p>
The book walks through each business object stereotype, demonstrating how to implement
the encapsulated invoke and factory implementation data portal models. It also demonstrates
the use of ADO.NET, ADO.NET Entity Framework, and mock database access technologies.
</p>
        <p>
The book includes several sample applications that provide complete implementations
of persistence to accompany the concepts and techniques discussed in the book.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=73d4dbb2-837c-4798-8092-d65a570e00a7" />
      </body>
      <title>Using CSLA 4: Data Access draft available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,73d4dbb2-837c-4798-8092-d65a570e00a7.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingCSLA4DataAccessDraftAvailable.aspx</link>
      <pubDate>Fri, 11 Mar 2011 21:19:12 GMT</pubDate>
      <description>&lt;p&gt;
The full draft of the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;ProductID=25"&gt;Using
CSLA 4: Data Access&lt;/a&gt; ebook is now online and available for individual purchase.
&lt;/p&gt;
&lt;p&gt;
If you purchase, or have purchased, the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;ProductID=22"&gt;Using
CSLA 4 ebook series&lt;/a&gt;, you can also download this new ebook, because it is part
of the series.
&lt;/p&gt;
&lt;p&gt;
This 214 page ebook (in PDF format) covers the four data access models supported by
CSLA .NET, focusing on the two models that provide the best maintainability and flexibility
without incurring undo complexity. 
&lt;/p&gt;
&lt;p&gt;
The book walks through each business object stereotype, demonstrating how to implement
the encapsulated invoke and factory implementation data portal models. It also demonstrates
the use of ADO.NET, ADO.NET Entity Framework, and mock database access technologies.
&lt;/p&gt;
&lt;p&gt;
The book includes several sample applications that provide complete implementations
of persistence to accompany the concepts and techniques discussed in the book.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=73d4dbb2-837c-4798-8092-d65a570e00a7" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,73d4dbb2-837c-4798-8092-d65a570e00a7.aspx</comments>
      <category>Books</category>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d20a1cbe-db9f-45cb-b1eb-6830581d68f2</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d20a1cbe-db9f-45cb-b1eb-6830581d68f2.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d20a1cbe-db9f-45cb-b1eb-6830581d68f2.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d20a1cbe-db9f-45cb-b1eb-6830581d68f2</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few weeks ago I posted about my initial efforts to port CSLA 4 to MonoDroid. The
idea being that business classes created for WP7 could be used on Android as well.
</p>
        <p>
That inspired some people – which is awesome!
</p>
        <ul>
          <li>
Stuart Bale volunteered to help port CSLA 4 to MonoTouch, for iOS (iPhone/iPad).</li>
          <li>
Jonny Bekkum (a long-time CSLA team member) volunteered to port CSLA 4 to mono – the
open source implementation of .NET that runs on Linux, Windows, and other platforms.</li>
          <li>
Kevin Ford volunteered to finish what I’d started by getting CSLA 4 ported to MonoDroid
(in reality, he’d already started a parallel effort, and then merged his work into
mine).</li>
        </ul>
        <p>
Initial code for all three projects has been checked into the svn code repository.
Jonny has some test apps running in mono, so there’s some confidence in that code.
Kevin has a small test app running in Android, so there’s some confidence there too
(though it is earlier in the process). The MonoTouch port is the hardest of the three
due to some limitations of MonoTouch, and we don’t know for sure that the current
code works (though it does build in MonoDevelop).
</p>
        <p>
My current plan is that CSLA 4 version 4.2 will be the release that includes support
for mono, Android, and iOS – in addition to the existing support for .NET, Silverlight,
and Windows Phone. That’ll be exciting!
</p>
        <p>
If you are a developer on any of these three new targets, we’d appreciate any help
in testing the code to see if it works, and to find solutions to anything that doesn’t
work. Please post any issues or comments on the forum at <a href="http://forums.lhotka.net">http://forums.lhotka.net</a> –
thanks!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d20a1cbe-db9f-45cb-b1eb-6830581d68f2" />
      </body>
      <title>CSLA 4 mono platform porting update</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d20a1cbe-db9f-45cb-b1eb-6830581d68f2.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4MonoPlatformPortingUpdate.aspx</link>
      <pubDate>Wed, 09 Mar 2011 23:16:38 GMT</pubDate>
      <description>&lt;p&gt;
A few weeks ago I posted about my initial efforts to port CSLA 4 to MonoDroid. The
idea being that business classes created for WP7 could be used on Android as well.
&lt;/p&gt;
&lt;p&gt;
That inspired some people – which is awesome!
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Stuart Bale volunteered to help port CSLA 4 to MonoTouch, for iOS (iPhone/iPad).&lt;/li&gt;
&lt;li&gt;
Jonny Bekkum (a long-time CSLA team member) volunteered to port CSLA 4 to mono – the
open source implementation of .NET that runs on Linux, Windows, and other platforms.&lt;/li&gt;
&lt;li&gt;
Kevin Ford volunteered to finish what I’d started by getting CSLA 4 ported to MonoDroid
(in reality, he’d already started a parallel effort, and then merged his work into
mine).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Initial code for all three projects has been checked into the svn code repository.
Jonny has some test apps running in mono, so there’s some confidence in that code.
Kevin has a small test app running in Android, so there’s some confidence there too
(though it is earlier in the process). The MonoTouch port is the hardest of the three
due to some limitations of MonoTouch, and we don’t know for sure that the current
code works (though it does build in MonoDevelop).
&lt;/p&gt;
&lt;p&gt;
My current plan is that CSLA 4 version 4.2 will be the release that includes support
for mono, Android, and iOS – in addition to the existing support for .NET, Silverlight,
and Windows Phone. That’ll be exciting!
&lt;/p&gt;
&lt;p&gt;
If you are a developer on any of these three new targets, we’d appreciate any help
in testing the code to see if it works, and to find solutions to anything that doesn’t
work. Please post any issues or comments on the forum at &lt;a href="http://forums.lhotka.net"&gt;http://forums.lhotka.net&lt;/a&gt; –
thanks!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d20a1cbe-db9f-45cb-b1eb-6830581d68f2" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d20a1cbe-db9f-45cb-b1eb-6830581d68f2.aspx</comments>
      <category>CSLA .NET</category>
      <category>mono</category>
      <category>MonoDroid</category>
      <category>MonoTouch</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d63b51f3-0f15-4511-b264-cdbbc09e552b</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d63b51f3-0f15-4511-b264-cdbbc09e552b.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d63b51f3-0f15-4511-b264-cdbbc09e552b.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d63b51f3-0f15-4511-b264-cdbbc09e552b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I will be showcasing CSLA 4 at the <a href="http://johnpapa.net/silverlight/opensourcefestannounce/">Open
Source Fest</a> at MIX11. That’s Monday evening, April 11.
</p>
        <p>
If you are attending MIX please stop by and say hello, it should be a good time!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d63b51f3-0f15-4511-b264-cdbbc09e552b" />
      </body>
      <title>CSLA .NET at Open Source Fest: MIX11</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d63b51f3-0f15-4511-b264-cdbbc09e552b.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLANETAtOpenSourceFestMIX11.aspx</link>
      <pubDate>Tue, 22 Feb 2011 03:26:05 GMT</pubDate>
      <description>&lt;p&gt;
I will be showcasing CSLA 4 at the &lt;a href="http://johnpapa.net/silverlight/opensourcefestannounce/"&gt;Open
Source Fest&lt;/a&gt; at MIX11. That’s Monday evening, April 11.
&lt;/p&gt;
&lt;p&gt;
If you are attending MIX please stop by and say hello, it should be a good time!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d63b51f3-0f15-4511-b264-cdbbc09e552b" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d63b51f3-0f15-4511-b264-cdbbc09e552b.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=b4e62243-4995-499f-9d68-cfd7663c1992</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,b4e62243-4995-499f-9d68-cfd7663c1992.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,b4e62243-4995-499f-9d68-cfd7663c1992.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=b4e62243-4995-499f-9d68-cfd7663c1992</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://bxf.codeplex.com">Bxf</a> and CSLA .NET both include a TriggerAction
control. This control helps support the MVVM design pattern in WPF, Silverlight, and
WP7 applications.
</p>
        <p>
(Bxf is completely independent from CSLA – I donated TriggerAction from CSLA to the
Bxf project a while back though, so this type is available from either framework)
</p>
        <p>
The specific problem addressed by TriggerAction is the need to invoke a verb (method/command)
on your viewmodel object in response to any arbitrary UI event. One common UI event
is something like a button click event, though you can often use commanding in that
case. But there are numerous other UI events from many controls other than buttons,
and you might want to have one of those UI events cause the viewmodel to perform an
action.
</p>
        <p>
TriggerAction basically wires arbitrary UI events to methods on the current DataContext
(usually the viewmodel object).
</p>
        <blockquote>
          <p>
            <font face="Courier New">&lt;bxf:TriggerAction TargetControl="{Binding ElementName=MyControl}" 
<br />
                                          
TriggerEvent="MouseOver" 
<br />
                                          
DataContext="{Binding Source={StaticResource vm}}" 
<br />
                                          
MethodName="MyAction" /&gt;</font>
          </p>
        </blockquote>
        <p>
TriggerAction listens for the trigger event from the TargetControl. When it handles
that event, it invokes the specified method (MethodName) on its current DataContext
object. There’s nothing more to it.
</p>
        <p>
To get TriggerAction working you need two things: source and target.
</p>
        <p>
Source:
</p>
        <ol>
          <li>
TargetControl must be set</li>
          <li>
TriggerEvent may be set (default is “Click”)</li>
        </ol>
        <p>
Target:
</p>
        <ol>
          <li>
DataContext must be set (or inherited from the container)</li>
          <li>
MethodName must be set</li>
        </ol>
        <p>
Parameter (optional):
</p>
        <ol>
          <li>
MethodParameter may be set (to a value or binding expression)</li>
          <li>
RebindParameterDynamically may be set to true (to force rebinding of MethodParameter
to work around issues with certain control properties such as ListBox.SelectedItems)</li>
        </ol>
        <p>
The most common causes of failure when using TriggerAction are that the TargetControl
isn’t set right, or the DataContext isn’t set right, and of those two the most common
is that the DataContext isn’t what you think it is (that happens to me all the time).
</p>
        <p>
The method TriggerAction invokes on the DataContext object can accept either 0 or
2 parameters:
</p>
        <blockquote>
          <p>
public void MyAction()
</p>
        </blockquote>
        <p>
or
</p>
        <blockquote>
          <p>
public void MyAction(object sender, ExecuteEventArgs e)
</p>
        </blockquote>
        <p>
The ExecuteEventArgs class is also defined in Bxf and CSLA. If you use TriggerAction
from Bxf.Xaml, you <em>must</em> use ExecuteEventArgs from Bxf.Xaml. If you use TriggerAction
from Csla.Xaml, you <em>must</em> use ExecuteEventArgs from Csla.Xaml.
</p>
        <p>
If you are using Bxf and CSLA together it is important to understand that the ViewModel&lt;T&gt;
class from Csla.Xaml uses the Csla.Xaml.ExecuteEventArgs type. If you are using the
Bxf TriggerAction control, you’ll need to create your own viewmodel types from Csla.Xaml.ViewModelBase&lt;T&gt;
to accept the Bxf.Xaml.ExecuteEventArgs type.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=b4e62243-4995-499f-9d68-cfd7663c1992" />
      </body>
      <title>Using the TriggerAction control</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,b4e62243-4995-499f-9d68-cfd7663c1992.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingTheTriggerActionControl.aspx</link>
      <pubDate>Fri, 18 Feb 2011 23:31:39 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://bxf.codeplex.com"&gt;Bxf&lt;/a&gt; and CSLA .NET both include a TriggerAction
control. This control helps support the MVVM design pattern in WPF, Silverlight, and
WP7 applications.
&lt;/p&gt;
&lt;p&gt;
(Bxf is completely independent from CSLA – I donated TriggerAction from CSLA to the
Bxf project a while back though, so this type is available from either framework)
&lt;/p&gt;
&lt;p&gt;
The specific problem addressed by TriggerAction is the need to invoke a verb (method/command)
on your viewmodel object in response to any arbitrary UI event. One common UI event
is something like a button click event, though you can often use commanding in that
case. But there are numerous other UI events from many controls other than buttons,
and you might want to have one of those UI events cause the viewmodel to perform an
action.
&lt;/p&gt;
&lt;p&gt;
TriggerAction basically wires arbitrary UI events to methods on the current DataContext
(usually the viewmodel object).
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;bxf:TriggerAction TargetControl=&amp;quot;{Binding ElementName=MyControl}&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
TriggerEvent=&amp;quot;MouseOver&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
DataContext=&amp;quot;{Binding Source={StaticResource vm}}&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
MethodName=&amp;quot;MyAction&amp;quot; /&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
TriggerAction listens for the trigger event from the TargetControl. When it handles
that event, it invokes the specified method (MethodName) on its current DataContext
object. There’s nothing more to it.
&lt;/p&gt;
&lt;p&gt;
To get TriggerAction working you need two things: source and target.
&lt;/p&gt;
&lt;p&gt;
Source:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
TargetControl must be set&lt;/li&gt;
&lt;li&gt;
TriggerEvent may be set (default is “Click”)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Target:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
DataContext must be set (or inherited from the container)&lt;/li&gt;
&lt;li&gt;
MethodName must be set&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Parameter (optional):
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
MethodParameter may be set (to a value or binding expression)&lt;/li&gt;
&lt;li&gt;
RebindParameterDynamically may be set to true (to force rebinding of MethodParameter
to work around issues with certain control properties such as ListBox.SelectedItems)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The most common causes of failure when using TriggerAction are that the TargetControl
isn’t set right, or the DataContext isn’t set right, and of those two the most common
is that the DataContext isn’t what you think it is (that happens to me all the time).
&lt;/p&gt;
&lt;p&gt;
The method TriggerAction invokes on the DataContext object can accept either 0 or
2 parameters:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
public void MyAction()
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
or
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
public void MyAction(object sender, ExecuteEventArgs e)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The ExecuteEventArgs class is also defined in Bxf and CSLA. If you use TriggerAction
from Bxf.Xaml, you &lt;em&gt;must&lt;/em&gt; use ExecuteEventArgs from Bxf.Xaml. If you use TriggerAction
from Csla.Xaml, you &lt;em&gt;must&lt;/em&gt; use ExecuteEventArgs from Csla.Xaml.
&lt;/p&gt;
&lt;p&gt;
If you are using Bxf and CSLA together it is important to understand that the ViewModel&amp;lt;T&amp;gt;
class from Csla.Xaml uses the Csla.Xaml.ExecuteEventArgs type. If you are using the
Bxf TriggerAction control, you’ll need to create your own viewmodel types from Csla.Xaml.ViewModelBase&amp;lt;T&amp;gt;
to accept the Bxf.Xaml.ExecuteEventArgs type.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=b4e62243-4995-499f-9d68-cfd7663c1992" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,b4e62243-4995-499f-9d68-cfd7663c1992.aspx</comments>
      <category>Bxf</category>
      <category>CSLA .NET</category>
      <category>Silverlight</category>
      <category>WP7</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
CSLA 4 is now available through NuGet, the package installer for .NET products.
</p>
        <ul>
          <li>
            <a href="http://nuget.org/Packages/Search?packageType=Packages&amp;searchCategory=All+Categories&amp;searchTerm=csla">CSLA
4 on NuGet</a>
          </li>
        </ul>
        <p>
This is thanks to Johann Hough (jaans on the <a href="http://forums.lhotka.net/">CSLA
forum</a>) - thank you Johann!
</p>
        <p>
The following packages are available:
</p>
        <ul>
          <li>
Core 
</li>
          <li>
ASP.NET 
</li>
          <li>
ASP.NET MVC 
</li>
          <li>
Silverlight 
</li>
          <li>
WPF 
</li>
          <li>
Windows Phone 
</li>
          <li>
Windows Forms 
</li>
        </ul>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8" />
      </body>
      <title>CSLA 4 on NuGet</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4OnNuGet.aspx</link>
      <pubDate>Tue, 15 Feb 2011 16:03:29 GMT</pubDate>
      <description>&lt;p&gt;
CSLA 4 is now available through NuGet, the package installer for .NET products.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://nuget.org/Packages/Search?packageType=Packages&amp;amp;searchCategory=All+Categories&amp;amp;searchTerm=csla"&gt;CSLA
4 on NuGet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This is thanks to Johann Hough (jaans on the &lt;a href="http://forums.lhotka.net/"&gt;CSLA
forum&lt;/a&gt;) - thank you Johann!
&lt;/p&gt;
&lt;p&gt;
The following packages are available:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Core 
&lt;/li&gt;
&lt;li&gt;
ASP.NET 
&lt;/li&gt;
&lt;li&gt;
ASP.NET MVC 
&lt;/li&gt;
&lt;li&gt;
Silverlight 
&lt;/li&gt;
&lt;li&gt;
WPF 
&lt;/li&gt;
&lt;li&gt;
Windows Phone 
&lt;/li&gt;
&lt;li&gt;
Windows Forms 
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,62bd2dd9-85d1-4e24-b4b0-2ea42f6e41e8.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=13bc5204-7a66-4525-acb8-2856ea0fc273</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,13bc5204-7a66-4525-acb8-2856ea0fc273.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,13bc5204-7a66-4525-acb8-2856ea0fc273.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=13bc5204-7a66-4525-acb8-2856ea0fc273</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve started the process of porting CSLA .NET version 4.1 to <a href="http://monodroid.net/">MonoDroid</a>.
I expected this to be relatively easy because I’ve already got a version of CSLA 4
running on WP7, and from everything I know about MonoDroid it should be pretty comparable
(excluding anything to do with XAML and UI concepts of course).
</p>
        <p>
After a couple hours of trying to get the Android emulator to run on my machine, I
discovered that the hybrid C++ and Java worlds really don’t “get” Windows. They interpret
Windows configuration in different ways. I’m not sure which one is lame and out of
date (by around a decade), but either C++ or Java apparently needs help…
</p>
        <p>
Fortunately some googling (with <a href="http://bing.com">Bing</a> of course <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Porting-CSLA-4-to-MonoDroid_14308/wlEmoticon-smile_2.png" />)
turned up the answer in the form of an environment setting named ANDROID_SDK_HOME
that both C++ and Java will honor. The problem is that my User directory isn’t on
the C drive, and either C++ or Java can’t handle this concept. Setting ANDROID_SDK_HOME
to the path of my actual User directory solves the issue so the emulator works as
expected.
</p>
        <p>
The Android emulator is <em>extremely</em> slow, but functional. Just deploying my
tiny little test app takes several minutes, and my computer is no slouch. It is clear
that Android developers don’t round-trip very fast in terms of running their code
to see if it works. I feel sort of like I’m back in 1992 on a VAX where the compile-link-run
cycle took minutes. I’m obviously very spoiled with the performance of things like
the WP7 emulator or the ASP.NET development web server, where the compile-debug/run
cycle takes seconds (at most).
</p>
        <p>
The process of getting CSLA 4 to at least build in MonoDroid took around 4 hours of
work. Not that I’m done, but the code does compile at this point. The holdups and
issues are:
</p>
        <ol>
          <li>
MonoDroid doesn’t have ObservableCollection and a set of related types, so I’ve started
implementing them myself</li>
          <li>
MonoDroid doesn’t know about “Add service reference”, it only knows about “Add web
reference”, and that means I need to create a new data portal proxy/host pair</li>
          <li>
It doesn’t look like the System.ServiceModel assembly that comes with MonoDroid actually
works – my one remaining build error has to do with this assembly – and this probably
means some other client-side data portal elements will be affected (like LocalProxy)
– I think this indicates some bad factoring on the part of CSLA in terms of the client-side
data portal implementation though, so in an odd way this might be beneficial in that
the problem highlights a design flaw that needs fixing</li>
          <li>
There are some bugs in MonoDroid in VS, where setting some project properties “doesn’t
take” – change the property values in VS and they aren’t saved to the project file
– but edit the project file in a text editor and the changes are honored – not a big
deal, and MonoDroid is in an early beta, so this sort of thing is to be expected</li>
          <li>
There’s no XAML or directly comparable concept on Android, so I’m not even trying
to port Csla.Xaml, only the core Csla project – I’ll probably need to create a Csla.Android
project with UI components appropriate to the Android UI technology</li>
        </ol>
        <p>
I mocked up the initial types to implement ObservableCollection, and it won’t take
a lot more effort to make them have the functionality required by CSLA. I don’t feel
the need to completely replicate those types – only the parts CSLA cares about.
</p>
        <p>
Creating a data portal proxy/host pair isn’t hard, the data portal is designed with
this sort of flexibility in mind. However, this will be the first non-WCF proxy/host
pair I’ve built on the Silverlight/WP7 code base, so I’m looking forward to establishing
that it is as easy as it should be.
</p>
        <p>
The unexpected dependencies on System.ServiceModel are probably the most worrisome
aspect of this project so far. I suspect unraveling the dependencies and fixing the
design/implementation may lead to some breaking changes in the Silverlight/WP7 code.
On the other hand, if my early suspicions are correct, the design is probably flawed
and I’ll be able to improve things as a result. 
</p>
        <p>
The question is whether I leave the SL/WP7 code alone and just fix the dependencies
in the Android code base. That’s probably what I’ll do in the 4.x timeframe, because
I really try to avoid substantial breaking changes in point releases…
</p>
        <p>
The loss of Csla.Xaml is not ideal. At the very least I think a Csla.Android project
will need ViewModelBase and ViewModel, but I suspect other Android-related UI components
may be required.
</p>
        <p>
Anyway, I’m quite impressed by MonoDroid. It seems pretty complete, pretty functional,
and pretty well integrated into Visual Studio. Other than my issues with the emulator
configuration the install was painless.
</p>
        <p>
To head off this question before it is asked: I do expect I’ll create a version for
MonoTouch at some point. 
</p>
        <p>
But MonoDroid has a much lower barrier of entry since it installs on Windows and works
in Visual Studio. MonoTouch requires a non-trivial cash outlay to buy a Mac, and a
non-trivial time outlay to learn the Mac, MonoDevelop, some Mac svn implementation,
etc. Where I’ll probably have a working version of CSLA 4 for Android in under 20
hours, I strongly suspect it will take more than twice that long (and a lot of money)
to get a version working in iOS.
</p>
        <p>
In this regard I must give kudos to Google, Android and MonoDroid – they have a <em>much
lower</em> barrier to entry than Apple currently provides.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=13bc5204-7a66-4525-acb8-2856ea0fc273" />
      </body>
      <title>Porting CSLA 4 to MonoDroid</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,13bc5204-7a66-4525-acb8-2856ea0fc273.aspx</guid>
      <link>http://www.lhotka.net/weblog/PortingCSLA4ToMonoDroid.aspx</link>
      <pubDate>Thu, 20 Jan 2011 05:30:11 GMT</pubDate>
      <description>&lt;p&gt;
I’ve started the process of porting CSLA .NET version 4.1 to &lt;a href="http://monodroid.net/"&gt;MonoDroid&lt;/a&gt;.
I expected this to be relatively easy because I’ve already got a version of CSLA 4
running on WP7, and from everything I know about MonoDroid it should be pretty comparable
(excluding anything to do with XAML and UI concepts of course).
&lt;/p&gt;
&lt;p&gt;
After a couple hours of trying to get the Android emulator to run on my machine, I
discovered that the hybrid C++ and Java worlds really don’t “get” Windows. They interpret
Windows configuration in different ways. I’m not sure which one is lame and out of
date (by around a decade), but either C++ or Java apparently needs help…
&lt;/p&gt;
&lt;p&gt;
Fortunately some googling (with &lt;a href="http://bing.com"&gt;Bing&lt;/a&gt; of course &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Porting-CSLA-4-to-MonoDroid_14308/wlEmoticon-smile_2.png" /&gt;)
turned up the answer in the form of an environment setting named ANDROID_SDK_HOME
that both C++ and Java will honor. The problem is that my User directory isn’t on
the C drive, and either C++ or Java can’t handle this concept. Setting ANDROID_SDK_HOME
to the path of my actual User directory solves the issue so the emulator works as
expected.
&lt;/p&gt;
&lt;p&gt;
The Android emulator is &lt;em&gt;extremely&lt;/em&gt; slow, but functional. Just deploying my
tiny little test app takes several minutes, and my computer is no slouch. It is clear
that Android developers don’t round-trip very fast in terms of running their code
to see if it works. I feel sort of like I’m back in 1992 on a VAX where the compile-link-run
cycle took minutes. I’m obviously very spoiled with the performance of things like
the WP7 emulator or the ASP.NET development web server, where the compile-debug/run
cycle takes seconds (at most).
&lt;/p&gt;
&lt;p&gt;
The process of getting CSLA 4 to at least build in MonoDroid took around 4 hours of
work. Not that I’m done, but the code does compile at this point. The holdups and
issues are:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
MonoDroid doesn’t have ObservableCollection and a set of related types, so I’ve started
implementing them myself&lt;/li&gt;
&lt;li&gt;
MonoDroid doesn’t know about “Add service reference”, it only knows about “Add web
reference”, and that means I need to create a new data portal proxy/host pair&lt;/li&gt;
&lt;li&gt;
It doesn’t look like the System.ServiceModel assembly that comes with MonoDroid actually
works – my one remaining build error has to do with this assembly – and this probably
means some other client-side data portal elements will be affected (like LocalProxy)
– I think this indicates some bad factoring on the part of CSLA in terms of the client-side
data portal implementation though, so in an odd way this might be beneficial in that
the problem highlights a design flaw that needs fixing&lt;/li&gt;
&lt;li&gt;
There are some bugs in MonoDroid in VS, where setting some project properties “doesn’t
take” – change the property values in VS and they aren’t saved to the project file
– but edit the project file in a text editor and the changes are honored – not a big
deal, and MonoDroid is in an early beta, so this sort of thing is to be expected&lt;/li&gt;
&lt;li&gt;
There’s no XAML or directly comparable concept on Android, so I’m not even trying
to port Csla.Xaml, only the core Csla project – I’ll probably need to create a Csla.Android
project with UI components appropriate to the Android UI technology&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I mocked up the initial types to implement ObservableCollection, and it won’t take
a lot more effort to make them have the functionality required by CSLA. I don’t feel
the need to completely replicate those types – only the parts CSLA cares about.
&lt;/p&gt;
&lt;p&gt;
Creating a data portal proxy/host pair isn’t hard, the data portal is designed with
this sort of flexibility in mind. However, this will be the first non-WCF proxy/host
pair I’ve built on the Silverlight/WP7 code base, so I’m looking forward to establishing
that it is as easy as it should be.
&lt;/p&gt;
&lt;p&gt;
The unexpected dependencies on System.ServiceModel are probably the most worrisome
aspect of this project so far. I suspect unraveling the dependencies and fixing the
design/implementation may lead to some breaking changes in the Silverlight/WP7 code.
On the other hand, if my early suspicions are correct, the design is probably flawed
and I’ll be able to improve things as a result. 
&lt;/p&gt;
&lt;p&gt;
The question is whether I leave the SL/WP7 code alone and just fix the dependencies
in the Android code base. That’s probably what I’ll do in the 4.x timeframe, because
I really try to avoid substantial breaking changes in point releases…
&lt;/p&gt;
&lt;p&gt;
The loss of Csla.Xaml is not ideal. At the very least I think a Csla.Android project
will need ViewModelBase and ViewModel, but I suspect other Android-related UI components
may be required.
&lt;/p&gt;
&lt;p&gt;
Anyway, I’m quite impressed by MonoDroid. It seems pretty complete, pretty functional,
and pretty well integrated into Visual Studio. Other than my issues with the emulator
configuration the install was painless.
&lt;/p&gt;
&lt;p&gt;
To head off this question before it is asked: I do expect I’ll create a version for
MonoTouch at some point. 
&lt;/p&gt;
&lt;p&gt;
But MonoDroid has a much lower barrier of entry since it installs on Windows and works
in Visual Studio. MonoTouch requires a non-trivial cash outlay to buy a Mac, and a
non-trivial time outlay to learn the Mac, MonoDevelop, some Mac svn implementation,
etc. Where I’ll probably have a working version of CSLA 4 for Android in under 20
hours, I strongly suspect it will take more than twice that long (and a lot of money)
to get a version working in iOS.
&lt;/p&gt;
&lt;p&gt;
In this regard I must give kudos to Google, Android and MonoDroid – they have a &lt;em&gt;much
lower&lt;/em&gt; barrier to entry than Apple currently provides.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=13bc5204-7a66-4525-acb8-2856ea0fc273" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,13bc5204-7a66-4525-acb8-2856ea0fc273.aspx</comments>
      <category>CSLA .NET</category>
      <category>MonoDroid</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="csla_logo1_32" border="0" alt="csla_logo1_32" align="right" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_thumb.png" width="112" height="32" />
          </a>I
am pleased to announce the release of CSLA .NET version 4.1 with support for .NET,
Silverlight and Windows Phone 7 (WP7).
</p>
        <p>
You can download CSLA 4 version 4.1 at <a href="http://www.lhotka.net/cslanet/download.aspx">http://www.lhotka.net/cslanet/download.aspx</a></p>
        <p>
Although there are numerous new features in version 4.1, the primary focus of this
release is Windows Phone 7. With CSLA 4 version 4.1 you can now author business classes
that run unchanged across the entire .NET platform:
</p>
        <ul>
          <li>
Windows Phone 7</li>
          <li>
Silverlight</li>
          <li>
WPF</li>
          <li>
ASP.NET MVC</li>
          <li>
ASP.NET Web Forms</li>
          <li>
WCF services (SOAP and REST)</li>
          <li>
asmx web services</li>
          <li>
Windows Forms</li>
        </ul>
        <p>
The ability to reuse your business layer on .NET, Silverlight and WP7 is incredibly
powerful, enabling you to extend your application to users on Windows, the web, and
now the phone.
</p>
        <p>
You can learn how to use CSLA 4 to build scalable, flexible, and maintainable applications
through the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;CategoryID=4&amp;List=1&amp;SortField=DateCreated+DESC%2cProductName&amp;Level=1&amp;ProductID=22">Using
CSLA 4 ebook series</a>. This ebook series is currently a work in progress and will
be finished in the first half of 2011.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e" />
      </body>
      <title>CSLA 4 version 4.1 release</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version41Release.aspx</link>
      <pubDate>Wed, 19 Jan 2011 01:30:40 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="csla_logo1_32" border="0" alt="csla_logo1_32" align="right" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_thumb.png" width="112" height="32" /&gt;&lt;/a&gt;I
am pleased to announce the release of CSLA .NET version 4.1 with support for .NET,
Silverlight and Windows Phone 7 (WP7).
&lt;/p&gt;
&lt;p&gt;
You can download CSLA 4 version 4.1 at &lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;http://www.lhotka.net/cslanet/download.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Although there are numerous new features in version 4.1, the primary focus of this
release is Windows Phone 7. With CSLA 4 version 4.1 you can now author business classes
that run unchanged across the entire .NET platform:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows Phone 7&lt;/li&gt;
&lt;li&gt;
Silverlight&lt;/li&gt;
&lt;li&gt;
WPF&lt;/li&gt;
&lt;li&gt;
ASP.NET MVC&lt;/li&gt;
&lt;li&gt;
ASP.NET Web Forms&lt;/li&gt;
&lt;li&gt;
WCF services (SOAP and REST)&lt;/li&gt;
&lt;li&gt;
asmx web services&lt;/li&gt;
&lt;li&gt;
Windows Forms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The ability to reuse your business layer on .NET, Silverlight and WP7 is incredibly
powerful, enabling you to extend your application to users on Windows, the web, and
now the phone.
&lt;/p&gt;
&lt;p&gt;
You can learn how to use CSLA 4 to build scalable, flexible, and maintainable applications
through the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;CategoryID=4&amp;amp;List=1&amp;amp;SortField=DateCreated+DESC%2cProductName&amp;amp;Level=1&amp;amp;ProductID=22"&gt;Using
CSLA 4 ebook series&lt;/a&gt;. This ebook series is currently a work in progress and will
be finished in the first half of 2011.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows Phone</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d699f959-d72e-4c5f-9021-4d7b937f5549</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d699f959-d72e-4c5f-9021-4d7b937f5549.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d699f959-d72e-4c5f-9021-4d7b937f5549.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d699f959-d72e-4c5f-9021-4d7b937f5549</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dunn Training is offering a CSLA 4 training class on February 23, 2011 in Atlanta.
</p>
        <p>
          <a title="http://www.dunntraining.com/training/schedule.htm" href="http://www.dunntraining.com/training/schedule.htm">http://www.dunntraining.com/training/schedule.htm</a>
        </p>
        <p>
If you are looking for CSLA .NET classroom training, this is a great opportunity.
Here’s a quote from a student who attended the December class: 
</p>
        <p>
“<em>Dunn’s CSLA training was phenomenal!!! It significantly advanced our team’s knowledge
of CSLA and helped layout the roadmap for our future development. Mark Berry 
holistically demonstrated how CSLA works with MVVM, Silverlight, WPF, Expression,
OO Programming and Code Generators. He also successfully answered extremely challenging
CSLA questions that were thrown at him during class. Our team is pretty knowledgeable
with CSLA and the other technologies, but Mark took us to an entirely new level, sprinkled
in some nice tips, tied it all together, and reenergized our team. The training was
well worth the money.</em>”
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d699f959-d72e-4c5f-9021-4d7b937f5549" />
      </body>
      <title>CSLA .NET training in Feb 2011</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d699f959-d72e-4c5f-9021-4d7b937f5549.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLANETTrainingInFeb2011.aspx</link>
      <pubDate>Fri, 14 Jan 2011 23:36:03 GMT</pubDate>
      <description>&lt;p&gt;
Dunn Training is offering a CSLA 4 training class on February 23, 2011 in Atlanta.
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.dunntraining.com/training/schedule.htm" href="http://www.dunntraining.com/training/schedule.htm"&gt;http://www.dunntraining.com/training/schedule.htm&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you are looking for CSLA .NET classroom training, this is a great opportunity.
Here’s a quote from a student who attended the December class: 
&lt;/p&gt;
&lt;p&gt;
“&lt;em&gt;Dunn’s CSLA training was phenomenal!!! It significantly advanced our team’s knowledge
of CSLA and helped layout the roadmap for our future development. Mark Berry&amp;#160;
holistically demonstrated how CSLA works with MVVM, Silverlight, WPF, Expression,
OO Programming and Code Generators. He also successfully answered extremely challenging
CSLA questions that were thrown at him during class. Our team is pretty knowledgeable
with CSLA and the other technologies, but Mark took us to an entirely new level, sprinkled
in some nice tips, tied it all together, and reenergized our team. The training was
well worth the money.&lt;/em&gt;”
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d699f959-d72e-4c5f-9021-4d7b937f5549" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d699f959-d72e-4c5f-9021-4d7b937f5549.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=3a0a268d-b55f-498a-83e3-e74d2fedcc38</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,3a0a268d-b55f-498a-83e3-e74d2fedcc38.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,3a0a268d-b55f-498a-83e3-e74d2fedcc38.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=3a0a268d-b55f-498a-83e3-e74d2fedcc38</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The completed first draft of the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;CategoryID=4&amp;List=1&amp;SortField=DateCreated+DESC%2cProductName&amp;Level=1&amp;ProductID=24">Using
CSLA 4: Creating Business Objects</a> ebook is now online and available for purchase. <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/dabf9b69061f_F532/UsingCsla4-02-120_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 5px 5px 4px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="UsingCsla4-02-120" border="0" alt="UsingCsla4-02-120" align="right" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/dabf9b69061f_F532/UsingCsla4-02-120_thumb.png" width="99" height="124" /></a></p>
        <p>
If you’ve purchased (or now purchase) the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;CategoryID=4&amp;List=1&amp;SortField=DateCreated+DESC%2cProductName&amp;Level=1&amp;ProductID=22">Using
CSLA 4 ebook series</a> you’ll also have access to this new ebook.
</p>
        <p>
This is book 2 of the series. The next book will be <em>Using CSLA 4: Data Access</em>,
followed by <em>Using CSLA 4: Security</em>. These first four ebooks cover all the
core concepts around using CSLA 4 to build your business layer, along with various
options for building a data access layer and implementing authentication.
</p>
        <p>
After these four are complete I’ll move on to ebooks covering how to use a CSLA .NET
business layer to create applications with different types of UI, including Silverlight,
WPF, ASP.NET MVC and Windows Phone 7 (WP7).
</p>
        <p>
Here’s the top-level outline of the <em>Creating Business Objects</em> book’s contents:
</p>
        <ol>
          <li>
            <p>
Introduction
</p>
          </li>
          <li>
            <p>
Key Object Concepts
</p>
          </li>
        </ol>
        <ol>
          <li>
            <p>
Stereotypes
</p>
          </li>
          <li>
            <p>
Serialization
</p>
          </li>
          <li>
            <p>
Object Lifetime
</p>
          </li>
          <li>
            <p>
Object Relationships
</p>
          </li>
          <li>
            <p>
Object Identity and Equality
</p>
          </li>
          <li>
            <p>
Platform Differences in .NET and Silverlight
</p>
          </li>
          <li>
            <p>
Property Declarations
</p>
          </li>
          <li>
            <p>
Method Declarations
</p>
          </li>
          <li>
            <p>
Metastate
</p>
          </li>
        </ol>
        <li>
          <p>
Solution Structure
</p>
        </li>
        <ol>
          <li>
            <p>
Project Types and Assembly References
</p>
          </li>
          <li>
            <p>
Combining Project to Create Solutions
</p>
          </li>
        </ol>
        <li>
          <p>
Object Stereotypes
</p>
        </li>
        <ol>
          <li>
            <p>
Editable Objects
</p>
          </li>
          <li>
            <p>
Read-Only Objects
</p>
          </li>
          <li>
            <p>
Execution Objects
</p>
          </li>
          <li>
            <p>
Criteria Objects
</p>
          </li>
          <li>
            <p>
LINQ Types
</p>
          </li>
          <li>
            <p>
Windows Forms Types
</p>
          </li>
        </ol>
        <li>
          <p>
Business Rules
</p>
        </li>
        <ol>
          <li>
            <p>
Business and Validation Rules
</p>
          </li>
          <li>
            <p>
Authorization Rules
</p>
          </li>
        </ol>
        <p>
For those who are wondering, the first ebook is almost through the editing process
and the “draft” designation will then be removed.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=3a0a268d-b55f-498a-83e3-e74d2fedcc38" />
      </body>
      <title>Using CSLA 4: Creating Business Objects draft online</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,3a0a268d-b55f-498a-83e3-e74d2fedcc38.aspx</guid>
      <link>http://www.lhotka.net/weblog/UsingCSLA4CreatingBusinessObjectsDraftOnline.aspx</link>
      <pubDate>Tue, 04 Jan 2011 23:41:03 GMT</pubDate>
      <description>&lt;p&gt;
The completed first draft of the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;CategoryID=4&amp;amp;List=1&amp;amp;SortField=DateCreated+DESC%2cProductName&amp;amp;Level=1&amp;amp;ProductID=24"&gt;Using
CSLA 4: Creating Business Objects&lt;/a&gt; ebook is now online and available for purchase. &lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/dabf9b69061f_F532/UsingCsla4-02-120_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 5px 5px 5px 4px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="UsingCsla4-02-120" border="0" alt="UsingCsla4-02-120" align="right" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/dabf9b69061f_F532/UsingCsla4-02-120_thumb.png" width="99" height="124" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
If you’ve purchased (or now purchase) the &lt;a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;amp;CategoryID=4&amp;amp;List=1&amp;amp;SortField=DateCreated+DESC%2cProductName&amp;amp;Level=1&amp;amp;ProductID=22"&gt;Using
CSLA 4 ebook series&lt;/a&gt; you’ll also have access to this new ebook.
&lt;/p&gt;
&lt;p&gt;
This is book 2 of the series. The next book will be &lt;em&gt;Using CSLA 4: Data Access&lt;/em&gt;,
followed by &lt;em&gt;Using CSLA 4: Security&lt;/em&gt;. These first four ebooks cover all the
core concepts around using CSLA 4 to build your business layer, along with various
options for building a data access layer and implementing authentication.
&lt;/p&gt;
&lt;p&gt;
After these four are complete I’ll move on to ebooks covering how to use a CSLA .NET
business layer to create applications with different types of UI, including Silverlight,
WPF, ASP.NET MVC and Windows Phone 7 (WP7).
&lt;/p&gt;
&lt;p&gt;
Here’s the top-level outline of the &lt;em&gt;Creating Business Objects&lt;/em&gt; book’s contents:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Introduction
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Key Object Concepts
&lt;/p&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Stereotypes
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Serialization
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Object Lifetime
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Object Relationships
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Object Identity and Equality
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Platform Differences in .NET and Silverlight
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Property Declarations
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Method Declarations
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Metastate
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;p&gt;
Solution Structure
&lt;/p&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Project Types and Assembly References
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Combining Project to Create Solutions
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;p&gt;
Object Stereotypes
&lt;/p&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Editable Objects
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Read-Only Objects
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Execution Objects
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Criteria Objects
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
LINQ Types
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Windows Forms Types
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;p&gt;
Business Rules
&lt;/p&gt;
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Business and Validation Rules
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Authorization Rules
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;p&gt;
For those who are wondering, the first ebook is almost through the editing process
and the “draft” designation will then be removed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=3a0a268d-b55f-498a-83e3-e74d2fedcc38" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,3a0a268d-b55f-498a-83e3-e74d2fedcc38.aspx</comments>
      <category>Books</category>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=8abb2a94-3208-4710-8fd4-4c9b4f7bcd03</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,8abb2a94-3208-4710-8fd4-4c9b4f7bcd03.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,8abb2a94-3208-4710-8fd4-4c9b4f7bcd03.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=8abb2a94-3208-4710-8fd4-4c9b4f7bcd03</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just put CSLA 4 version 4.1 beta 2 online for download. This is probably the last
beta release of version 4.1, so please download and try it – I appreciate any help
I can get in testing these releases.
</p>
        <p>
          <a href="http://www.lhotka.net/cslanet/download.aspx">http://www.lhotka.net/cslanet/download.aspx</a>
        </p>
        <p>
The primary changes in beta 2 include:
</p>
        <ol>
          <li>
Added a new Csla.Xaml.PropertyInfo control for WP7, WPF and Silverlight that is like
PropertyStatus but totally non-visual. See the Samples\NET\cs\SimpleNTier solution’s
WP7 UI project for an example of how this works</li>
          <li>
Created a copy of the DataAnnotations functionality for WP7; this is a nice concept
that Microsoft didn’t put into WP7, so I ported the parts of System.ComponentModel.DataAnnotations
required by CSLA .NET, so if you have classes using DataAnnotations attributes in
.NET or Silverlight, that code will now work in WP7 as well</li>
          <li>
Laying the groundwork for a NuGet installer when 4.1 is released, so people will be
able to download and install CSLA 4 via NuGet (thanks Jaans!)</li>
          <li>
Laying the groundwork for a vsix installer for Visual Studio templates, so when 4.1
is released we can add this to the Visual Studio gallery (thanks Jonny!)</li>
        </ol>
        <p>
I’ve also put an updated draft of <em>Using CSLA 4: Creating Business Objects</em> online
at <a title="http://download.lhotka.net/Default.aspx?t=UsingCsla4" href="http://download.lhotka.net/Default.aspx?t=UsingCsla4">http://download.lhotka.net/Default.aspx?t=UsingCsla4</a></p>
        <p>
This ebook is incomplete, but I’m providing work-in-progress drops of the book as
I work on it. People who’ve purchased the entire <em>Using CSLA 4</em> ebook series
(from <a href="http://store.lhotka.net/">http://store.lhotka.net/</a>) can download
this pre-draft content. This new drop includes a lot more content than the previous
drop – including the entire sections on declaring and implementing properties and
methods, and a good start on the metastate fields/methods available from BusinessBase
and other base classes.
</p>
        <p>
Finally, I <em>also</em> put a top level type diagram online that is available to
anyone who has purchased either the <em>Using CSLA 4: CSLA .NET Overview</em> ebook
or the entire ebook series. It is available from the same download.lhotka.net web
page.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8abb2a94-3208-4710-8fd4-4c9b4f7bcd03" />
      </body>
      <title>CSLA 4 version 4.1 beta 2 available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,8abb2a94-3208-4710-8fd4-4c9b4f7bcd03.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version41Beta2Available.aspx</link>
      <pubDate>Fri, 10 Dec 2010 21:25:51 GMT</pubDate>
      <description>&lt;p&gt;
I just put CSLA 4 version 4.1 beta 2 online for download. This is probably the last
beta release of version 4.1, so please download and try it – I appreciate any help
I can get in testing these releases.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/cslanet/download.aspx"&gt;http://www.lhotka.net/cslanet/download.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The primary changes in beta 2 include:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Added a new Csla.Xaml.PropertyInfo control for WP7, WPF and Silverlight that is like
PropertyStatus but totally non-visual. See the Samples\NET\cs\SimpleNTier solution’s
WP7 UI project for an example of how this works&lt;/li&gt;
&lt;li&gt;
Created a copy of the DataAnnotations functionality for WP7; this is a nice concept
that Microsoft didn’t put into WP7, so I ported the parts of System.ComponentModel.DataAnnotations
required by CSLA .NET, so if you have classes using DataAnnotations attributes in
.NET or Silverlight, that code will now work in WP7 as well&lt;/li&gt;
&lt;li&gt;
Laying the groundwork for a NuGet installer when 4.1 is released, so people will be
able to download and install CSLA 4 via NuGet (thanks Jaans!)&lt;/li&gt;
&lt;li&gt;
Laying the groundwork for a vsix installer for Visual Studio templates, so when 4.1
is released we can add this to the Visual Studio gallery (thanks Jonny!)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I’ve also put an updated draft of &lt;em&gt;Using CSLA 4: Creating Business Objects&lt;/em&gt; online
at &lt;a title="http://download.lhotka.net/Default.aspx?t=UsingCsla4" href="http://download.lhotka.net/Default.aspx?t=UsingCsla4"&gt;http://download.lhotka.net/Default.aspx?t=UsingCsla4&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This ebook is incomplete, but I’m providing work-in-progress drops of the book as
I work on it. People who’ve purchased the entire &lt;em&gt;Using CSLA 4&lt;/em&gt; ebook series
(from &lt;a href="http://store.lhotka.net/"&gt;http://store.lhotka.net/&lt;/a&gt;) can download
this pre-draft content. This new drop includes a lot more content than the previous
drop – including the entire sections on declaring and implementing properties and
methods, and a good start on the metastate fields/methods available from BusinessBase
and other base classes.
&lt;/p&gt;
&lt;p&gt;
Finally, I &lt;em&gt;also&lt;/em&gt; put a top level type diagram online that is available to
anyone who has purchased either the &lt;em&gt;Using CSLA 4: CSLA .NET Overview&lt;/em&gt; ebook
or the entire ebook series. It is available from the same download.lhotka.net web
page.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8abb2a94-3208-4710-8fd4-4c9b4f7bcd03" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,8abb2a94-3208-4710-8fd4-4c9b4f7bcd03.aspx</comments>
      <category>Books</category>
      <category>CSLA .NET</category>
      <category>WP7</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thanks to Russ Blair, there is now a <a href="http://download.lhotka.net/Core38Index/CSLA%20Core%203.8%20Videos%20Index.htm">time-based
index</a> available for the entire Core 3.8 video series.
</p>
        <p>
The series can be purchased from <a href="http://store.lhotka.net">http://store.lhotka.net</a>. 
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea" />
      </body>
      <title>CSLA .NET Core 3.8 video series index</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLANETCore38VideoSeriesIndex.aspx</link>
      <pubDate>Mon, 22 Nov 2010 21:05:35 GMT</pubDate>
      <description>&lt;p&gt;
Thanks to Russ Blair, there is now a &lt;a href="http://download.lhotka.net/Core38Index/CSLA%20Core%203.8%20Videos%20Index.htm"&gt;time-based
index&lt;/a&gt; available for the entire Core 3.8 video series.
&lt;/p&gt;
&lt;p&gt;
The series can be purchased from &lt;a href="http://store.lhotka.net"&gt;http://store.lhotka.net&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,9f5a76c7-cbf1-4af5-b972-7c5f2958f2ea.aspx</comments>
      <category>CSLA .NET</category>
    </item>
  </channel>
</rss>