<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Hey Microsoft, Our Databases Aren&#8217;t Services!</title>
	<atom:link href="http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/feed/" rel="self" type="application/rss+xml" />
	<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/</link>
	<description>Trying to walk that thin line between intelligence and ignorance</description>
	<lastBuildDate>Thu, 29 Jul 2010 20:54:12 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26815</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Sun, 31 Jan 2010 22:37:11 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26815</guid>
		<description>@Ben

seriously, go waste someone else&#039;s time... i already said i have no problem with being wrong about the filtering, the other stuff however, still holds and you continue to ignore it while you keep focusing on one sentence.  it certainly makes your last paragraph all the more ironic.</description>
		<content:encoded><![CDATA[<p>@Ben</p>
<p>seriously, go waste someone else&#8217;s time&#8230; i already said i have no problem with being wrong about the filtering, the other stuff however, still holds and you continue to ignore it while you keep focusing on one sentence.  it certainly makes your last paragraph all the more ironic.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26813</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Sun, 31 Jan 2010 22:27:12 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26813</guid>
		<description>@Kilfour: More of the same. How does RIA Services violate your ideals any more than, let&#039;s say, C# itself? To say that a technology makes it &lt;i&gt;too easy&lt;/i&gt; to do something wrong is like saying &quot;food makes it too easy to become fat&quot;. Nobody forces you to use RIA Services in a way that breaks your precious directives. 

By the way, please explain exactly how something done so poorly in the first place would become so widely used that other people would have to &quot;clean up the mess&quot;, as you put it. Are you tired of cleaning up other people&#039;s messy code, or is this some general humanitarian concern? You must have hated the 20th century, when we actually used pointers and all that really dangerous stuff. (I suppose that should have been kept top-secret, too.)

@Davy: A database-backed service layer is not all about querying, but it is &lt;i&gt;very much&lt;/i&gt; about querying, and RIA Services makes that part of it--the part that otherwise requires much tedious boilerplate code--a cinch. Nowhere does it state this is the only way to do things.

Don&#039;t get all stuffy about my poor attitude: your post, rich with snit and cynicism, practically invites it. I came here looking for useful information about RIA Services, and if I hadn&#039;t known any better before I read your post, afterwards I&#039;d have thought it was a turd. I mean, really: what modern services layer technology set would facilitate something so odious as client-side filtering? Guess what, buddy: every one of those Microsoft demos you laughed at was demonstrating &lt;i&gt;exactly the opposite&lt;/i&gt; of what you assumed.

So, yes: in my mind, it is exceptionally arrogant for anyone to spend fifteen minutes poking through some Visual Studio wizards, immediately form a wrong opinion, and rush to Wordpress to crow about it to the world. If that&#039;s not deserving of mild censure, I&#039;m not sure what is.</description>
		<content:encoded><![CDATA[<p>@Kilfour: More of the same. How does RIA Services violate your ideals any more than, let&#8217;s say, C# itself? To say that a technology makes it <i>too easy</i> to do something wrong is like saying &#8220;food makes it too easy to become fat&#8221;. Nobody forces you to use RIA Services in a way that breaks your precious directives. </p>
<p>By the way, please explain exactly how something done so poorly in the first place would become so widely used that other people would have to &#8220;clean up the mess&#8221;, as you put it. Are you tired of cleaning up other people&#8217;s messy code, or is this some general humanitarian concern? You must have hated the 20th century, when we actually used pointers and all that really dangerous stuff. (I suppose that should have been kept top-secret, too.)</p>
<p>@Davy: A database-backed service layer is not all about querying, but it is <i>very much</i> about querying, and RIA Services makes that part of it&#8211;the part that otherwise requires much tedious boilerplate code&#8211;a cinch. Nowhere does it state this is the only way to do things.</p>
<p>Don&#8217;t get all stuffy about my poor attitude: your post, rich with snit and cynicism, practically invites it. I came here looking for useful information about RIA Services, and if I hadn&#8217;t known any better before I read your post, afterwards I&#8217;d have thought it was a turd. I mean, really: what modern services layer technology set would facilitate something so odious as client-side filtering? Guess what, buddy: every one of those Microsoft demos you laughed at was demonstrating <i>exactly the opposite</i> of what you assumed.</p>
<p>So, yes: in my mind, it is exceptionally arrogant for anyone to spend fifteen minutes poking through some Visual Studio wizards, immediately form a wrong opinion, and rush to WordPress to crow about it to the world. If that&#8217;s not deserving of mild censure, I&#8217;m not sure what is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kilfour</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26806</link>
		<dc:creator>kilfour</dc:creator>
		<pubDate>Sun, 31 Jan 2010 21:26:54 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26806</guid>
		<description>@Ben : 
&#039;the height of arrogance&#039; : Well, that would be me... 
But atleast I&#039;m polite...
The fact that something happens client side, server side, or even in a parallel universe does not interest me. It&#039;s a performance (/implementation) issue which I as a dev should not be aware of, until it turns out to be a problem. 

The fact that some &#039;Prime Directives&#039; (read up on your PARC history) are violated when it comes down to encapsulation worries me far more.

“There’s good software, and there’s bad software. If you find yourself working on a lot of the latter, maybe it’s time to ask whose fault that really is.”

It&#039;s probably partly your fault, if you consider this kind of development good practice. 
It just falls to pieces &#039;in the wild&#039; and then there&#039;s other people that have to clean up the mess.</description>
		<content:encoded><![CDATA[<p>@Ben :<br />
&#8216;the height of arrogance&#8217; : Well, that would be me&#8230;<br />
But atleast I&#8217;m polite&#8230;<br />
The fact that something happens client side, server side, or even in a parallel universe does not interest me. It&#8217;s a performance (/implementation) issue which I as a dev should not be aware of, until it turns out to be a problem. </p>
<p>The fact that some &#8216;Prime Directives&#8217; (read up on your PARC history) are violated when it comes down to encapsulation worries me far more.</p>
<p>“There’s good software, and there’s bad software. If you find yourself working on a lot of the latter, maybe it’s time to ask whose fault that really is.”</p>
<p>It&#8217;s probably partly your fault, if you consider this kind of development good practice.<br />
It just falls to pieces &#8216;in the wild&#8217; and then there&#8217;s other people that have to clean up the mess.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26805</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Sun, 31 Jan 2010 21:17:33 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26805</guid>
		<description>@Ben

Indeed i haven&#039;t, because i haven&#039;t verified your statement yet. I really don&#039;t have a problem with me being wrong about that, but the other problems that i believe are inherent with using RIA Services are still there... if you really wanna make this discussion interesting, perhaps you want to talk about those?  Or is a service layer all about querying for you?

As for my previous statement being a cop-out, that&#039;s the kind of response you get with the attitude that you display. You talk about arrogance in my point of view, but your second comment was just filled with it.  You can&#039;t really expect anyone to talk to you seriously if that is how you present yourself...</description>
		<content:encoded><![CDATA[<p>@Ben</p>
<p>Indeed i haven&#8217;t, because i haven&#8217;t verified your statement yet. I really don&#8217;t have a problem with me being wrong about that, but the other problems that i believe are inherent with using RIA Services are still there&#8230; if you really wanna make this discussion interesting, perhaps you want to talk about those?  Or is a service layer all about querying for you?</p>
<p>As for my previous statement being a cop-out, that&#8217;s the kind of response you get with the attitude that you display. You talk about arrogance in my point of view, but your second comment was just filled with it.  You can&#8217;t really expect anyone to talk to you seriously if that is how you present yourself&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26802</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Sun, 31 Jan 2010 21:07:07 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26802</guid>
		<description>You&#039;re fooling yourself if you think readers of this blog won&#039;t see your response for the cop-out it is.

I notice you haven&#039;t corrected the misrepresentations in your post.</description>
		<content:encoded><![CDATA[<p>You&#8217;re fooling yourself if you think readers of this blog won&#8217;t see your response for the cop-out it is.</p>
<p>I notice you haven&#8217;t corrected the misrepresentations in your post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26795</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Sun, 31 Jan 2010 18:44:15 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26795</guid>
		<description>@Ben

&quot;There’s good software, and there’s bad software. If you find yourself working on a lot of the latter, maybe it’s time to ask whose fault that really is.&quot;

i&#039;m pretty lucky in that i hardly ever have to deal with bad software so by following your logic, i could conclude that i must be doing something right in my decisions and choices

and you are indeed right: there is good and bad software, but that doesn&#039;t mean we shouldn&#039;t try to do better. We&#039;d all end up as frustrated as you appear to be.</description>
		<content:encoded><![CDATA[<p>@Ben</p>
<p>&#8220;There’s good software, and there’s bad software. If you find yourself working on a lot of the latter, maybe it’s time to ask whose fault that really is.&#8221;</p>
<p>i&#8217;m pretty lucky in that i hardly ever have to deal with bad software so by following your logic, i could conclude that i must be doing something right in my decisions and choices</p>
<p>and you are indeed right: there is good and bad software, but that doesn&#8217;t mean we shouldn&#8217;t try to do better. We&#8217;d all end up as frustrated as you appear to be.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26791</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Sun, 31 Jan 2010 18:02:49 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26791</guid>
		<description>And to fizz: your senior developer would &lt;i&gt;not&lt;/i&gt; have been making one roundtrip per change unless he was calling &lt;code&gt;ObjectContext.SubmitChanges&lt;/code&gt; after every addition -- and given that&#039;s an asynchronous method, I seriously doubt that was the case.

If I can&#039;t be sure that you made the whole scenario up, I&#039;m at least certain that you&#039;re blind to the simple fact that changes are batched in the context until that method is called.

Study up, junior.</description>
		<content:encoded><![CDATA[<p>And to fizz: your senior developer would <i>not</i> have been making one roundtrip per change unless he was calling <code>ObjectContext.SubmitChanges</code> after every addition &#8212; and given that&#8217;s an asynchronous method, I seriously doubt that was the case.</p>
<p>If I can&#8217;t be sure that you made the whole scenario up, I&#8217;m at least certain that you&#8217;re blind to the simple fact that changes are batched in the context until that method is called.</p>
<p>Study up, junior.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26789</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Sun, 31 Jan 2010 17:43:23 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26789</guid>
		<description>You&#039;ve entirely missed the point of at least one major feature of RIA Services -- using LINQ against IQueryable on the client side is &lt;i&gt;not&lt;/i&gt; the same as classic (i.e. bad) client-side filtering. Instead, the client-composed query expression is sent back to the server, and only the filtered results are returned. For example, if I write (on the client):

&lt;code&gt;var albums = domainContext.GetAlbum().Select(a =&gt; a.Name == &quot;Back in Black&quot; &amp;&amp; a.ReleaseYear == 1980);
var loadOperation = domainContext.Load(albums);&lt;/code&gt;

The albums returned (asynchronously) in the operation are &lt;i&gt;only&lt;/i&gt; those that match the criteria specified in LINQ. So, RTFM.

While I&#039;m at it, griping about how a technology might allow lesser developers to shoot themselves in the foot is the height of arrogance. What exactly is your concern--that a bunch of newbs are going to write a huge system using poor methodology and with no oversight, and that somehow, somewhere, a long-suffering senior developer--or worse, &lt;i&gt;society&lt;/i&gt;--will be forced to deal with the consequences? Please. There&#039;s good software, and there&#039;s bad software. If you find yourself working on a lot of the latter, maybe it&#039;s time to ask whose fault that really is.</description>
		<content:encoded><![CDATA[<p>You&#8217;ve entirely missed the point of at least one major feature of RIA Services &#8212; using LINQ against IQueryable on the client side is <i>not</i> the same as classic (i.e. bad) client-side filtering. Instead, the client-composed query expression is sent back to the server, and only the filtered results are returned. For example, if I write (on the client):</p>
<p><code>var albums = domainContext.GetAlbum().Select(a =&gt; a.Name == "Back in Black" &amp;&amp; a.ReleaseYear == 1980);<br />
var loadOperation = domainContext.Load(albums);</code></p>
<p>The albums returned (asynchronously) in the operation are <i>only</i> those that match the criteria specified in LINQ. So, RTFM.</p>
<p>While I&#8217;m at it, griping about how a technology might allow lesser developers to shoot themselves in the foot is the height of arrogance. What exactly is your concern&#8211;that a bunch of newbs are going to write a huge system using poor methodology and with no oversight, and that somehow, somewhere, a long-suffering senior developer&#8211;or worse, <i>society</i>&#8211;will be forced to deal with the consequences? Please. There&#8217;s good software, and there&#8217;s bad software. If you find yourself working on a lot of the latter, maybe it&#8217;s time to ask whose fault that really is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jack</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-26352</link>
		<dc:creator>Jack</dc:creator>
		<pubDate>Wed, 27 Jan 2010 09:25:50 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-26352</guid>
		<description>database is a better place to place some configuration of services, and it is easy to access and maintain. Of course, you must install them before.</description>
		<content:encoded><![CDATA[<p>database is a better place to place some configuration of services, and it is easy to access and maintain. Of course, you must install them before.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bruce</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25569</link>
		<dc:creator>Bruce</dc:creator>
		<pubDate>Thu, 21 Jan 2010 01:41:41 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25569</guid>
		<description>A lot of developers may use WCF RIA Services unwisely. On the other hand I think that a lot of developers will use WCF RIA Services wisely.

The good thing about WCF RIA Services is that it provides a place (your domain services classes) for you to add business logic that is separate from your presentation layer, and it provides a great deal of flexibility for you to structure your business interface and logic however you want.

Therefore I see no reason why you can&#039;t define a sound architecture using WCF RIA Services, and implement it productively.</description>
		<content:encoded><![CDATA[<p>A lot of developers may use WCF RIA Services unwisely. On the other hand I think that a lot of developers will use WCF RIA Services wisely.</p>
<p>The good thing about WCF RIA Services is that it provides a place (your domain services classes) for you to add business logic that is separate from your presentation layer, and it provides a great deal of flexibility for you to structure your business interface and logic however you want.</p>
<p>Therefore I see no reason why you can&#8217;t define a sound architecture using WCF RIA Services, and implement it productively.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Hauser</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25530</link>
		<dc:creator>Eric Hauser</dc:creator>
		<pubDate>Wed, 20 Jan 2010 15:26:46 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25530</guid>
		<description>Davy,

I initially had the same opinion about a WCF Data Services.  However, I eventually realized that what it really does is provide a standard REST interface to any IQueryable.  It just so happens that out of the box most of the examples are using the Entity Framework as the IQueryable implementation.  It is similar to how people think that LINQ is just a tool for ORM.

Data Services also has reflection based provider that you could use to expose your domain model (not your database) as services.  I am currently writing a custom provider (using the 1.5 update) that allows us to load metadata on the fly and generate different web services depending on customer customizations.  There are certainly limitations to the model.</description>
		<content:encoded><![CDATA[<p>Davy,</p>
<p>I initially had the same opinion about a WCF Data Services.  However, I eventually realized that what it really does is provide a standard REST interface to any IQueryable.  It just so happens that out of the box most of the examples are using the Entity Framework as the IQueryable implementation.  It is similar to how people think that LINQ is just a tool for ORM.</p>
<p>Data Services also has reflection based provider that you could use to expose your domain model (not your database) as services.  I am currently writing a custom provider (using the 1.5 update) that allows us to load metadata on the fly and generate different web services depending on customer customizations.  There are certainly limitations to the model.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nima</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25421</link>
		<dc:creator>Nima</dc:creator>
		<pubDate>Tue, 19 Jan 2010 06:46:58 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25421</guid>
		<description>I&#039;ve not worked with RIA but what I can see from your blog is that these services aren&#039;t domain services at all. These are more like Repositories to me and maybe one can use them to have some data access services in place so other real domain services can use them :)</description>
		<content:encoded><![CDATA[<p>I&#8217;ve not worked with RIA but what I can see from your blog is that these services aren&#8217;t domain services at all. These are more like Repositories to me and maybe one can use them to have some data access services in place so other real domain services can use them <img src='http://davybrion.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25296</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 18 Jan 2010 18:54:33 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25296</guid>
		<description>@Rc

if the data service layer would only be used to import the data into your system, then i guess there&#039;s no problem with that.  anything else that consumes that data through another service that you do have control over, i&#039;d hide the actual db schema from them and provide the data in a form that is the most optimal for the specific client(s)</description>
		<content:encoded><![CDATA[<p>@Rc</p>
<p>if the data service layer would only be used to import the data into your system, then i guess there&#8217;s no problem with that.  anything else that consumes that data through another service that you do have control over, i&#8217;d hide the actual db schema from them and provide the data in a form that is the most optimal for the specific client(s)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rc</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25294</link>
		<dc:creator>Rc</dc:creator>
		<pubDate>Mon, 18 Jan 2010 18:49:06 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25294</guid>
		<description>What &lt;strong&gt;would&lt;/strong&gt; be the best way/pattern to go about exposing data from a db.  Should all business objects be modeled out?  Say, for example, an outside vendor exposed it&#039;s database and internally we wanted to consume that data in ETL.  Since internally, we&#039;re not allowed to create a dblink to the outside db, and we only have home grown etl tools, would it be advisable to expose the data metrics that we wanted as a service and use it as a data service layer?

I&#039;ve been going back and forth on the best way to do this.  Either model out the business objects then put another interface layer on top of that, or just create classes/types for the metrics we want and call get methods with the sql on those to return the data we want.</description>
		<content:encoded><![CDATA[<p>What <strong>would</strong> be the best way/pattern to go about exposing data from a db.  Should all business objects be modeled out?  Say, for example, an outside vendor exposed it&#8217;s database and internally we wanted to consume that data in ETL.  Since internally, we&#8217;re not allowed to create a dblink to the outside db, and we only have home grown etl tools, would it be advisable to expose the data metrics that we wanted as a service and use it as a data service layer?</p>
<p>I&#8217;ve been going back and forth on the best way to do this.  Either model out the business objects then put another interface layer on top of that, or just create classes/types for the metrics we want and call get methods with the sql on those to return the data we want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Hicks</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25291</link>
		<dc:creator>James Hicks</dc:creator>
		<pubDate>Mon, 18 Jan 2010 17:49:26 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25291</guid>
		<description>I could see using RIA Services or WCF data services for exposing a persistent view model (think CQRS where the client is a silverlight app).  Many developers follow Microsoft&#039;s guidance without question because that is what they have been taught for years.  Its unfortunate Microsoft does not have an understanding of maintainable architecture.</description>
		<content:encoded><![CDATA[<p>I could see using RIA Services or WCF data services for exposing a persistent view model (think CQRS where the client is a silverlight app).  Many developers follow Microsoft&#8217;s guidance without question because that is what they have been taught for years.  Its unfortunate Microsoft does not have an understanding of maintainable architecture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25270</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 18 Jan 2010 14:00:20 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25270</guid>
		<description>@Wayne

personally, i don&#039;t want any generated code at all... i want something that allows me to deal with cross-cutting concerns in as few places as possible, something that doesn&#039;t advocate sending your business enitities to clients, something that doesn&#039;t encourage you to expose your database (or parts of it) and something that does not automatically lead to a maintenance nightmare once you need more than straightforward CRUD functionality.</description>
		<content:encoded><![CDATA[<p>@Wayne</p>
<p>personally, i don&#8217;t want any generated code at all&#8230; i want something that allows me to deal with cross-cutting concerns in as few places as possible, something that doesn&#8217;t advocate sending your business enitities to clients, something that doesn&#8217;t encourage you to expose your database (or parts of it) and something that does not automatically lead to a maintenance nightmare once you need more than straightforward CRUD functionality.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wayne Bloss</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25267</link>
		<dc:creator>Wayne Bloss</dc:creator>
		<pubDate>Mon, 18 Jan 2010 13:45:57 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25267</guid>
		<description>Microsoft generates the code as a starting point for you.

I didn&#039;t see an example of the kind of code that you think would be better.</description>
		<content:encoded><![CDATA[<p>Microsoft generates the code as a starting point for you.</p>
<p>I didn&#8217;t see an example of the kind of code that you think would be better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Davy Brion</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25262</link>
		<dc:creator>Davy Brion</dc:creator>
		<pubDate>Mon, 18 Jan 2010 12:49:49 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25262</guid>
		<description>@Jack

i generally wouldn&#039;t expose business objects at all... if it&#039;s purely a silverlight client which enables you to manage your personal music database, then yeah, the objects you send over the wire (i&#039;d go for DTO&#039;s) would indeed be pretty much identical to those of the album/track/artist/playlist tables and there would hardly be any business logic to speak of.

however, once you create something for the invoicing part of the chinook db, the situation changes... i wouldn&#039;t really be happy with my silverlight client knowing about how the invoices are stored in the database or what kind of business rules or general logic applies to the actual creation/handling of invoices.  The silverlight client needs to be able to show data (using DTO&#039;s), and send commands to the server (like &#039;add X number of this product to that order&#039;) and the business logic behind the service layer should try to handle it, or fail if some business rule is broken.

generally speaking, your presentation layer (whether it&#039;s silverlight, wpf, winforms, asp.net or whatever) needs to be as dumb as possible.  The more it &#039;knows&#039;, the more trouble you&#039;ll end up with sooner or later.</description>
		<content:encoded><![CDATA[<p>@Jack</p>
<p>i generally wouldn&#8217;t expose business objects at all&#8230; if it&#8217;s purely a silverlight client which enables you to manage your personal music database, then yeah, the objects you send over the wire (i&#8217;d go for DTO&#8217;s) would indeed be pretty much identical to those of the album/track/artist/playlist tables and there would hardly be any business logic to speak of.</p>
<p>however, once you create something for the invoicing part of the chinook db, the situation changes&#8230; i wouldn&#8217;t really be happy with my silverlight client knowing about how the invoices are stored in the database or what kind of business rules or general logic applies to the actual creation/handling of invoices.  The silverlight client needs to be able to show data (using DTO&#8217;s), and send commands to the server (like &#8216;add X number of this product to that order&#8217;) and the business logic behind the service layer should try to handle it, or fail if some business rule is broken.</p>
<p>generally speaking, your presentation layer (whether it&#8217;s silverlight, wpf, winforms, asp.net or whatever) needs to be as dumb as possible.  The more it &#8216;knows&#8217;, the more trouble you&#8217;ll end up with sooner or later.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jack</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25261</link>
		<dc:creator>Jack</dc:creator>
		<pubDate>Mon, 18 Jan 2010 12:36:51 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25261</guid>
		<description>Can you give an example of what the exposed business objects may look like for the Chinook database? In my experience they are often extremely similar. Lets say you want a Silverlight personal music database. How radical a departure from the db entities would you need? Where would most of the BO logic be &#039;spent&#039;? Thanks, Jack</description>
		<content:encoded><![CDATA[<p>Can you give an example of what the exposed business objects may look like for the Chinook database? In my experience they are often extremely similar. Lets say you want a Silverlight personal music database. How radical a departure from the db entities would you need? Where would most of the BO logic be &#8216;spent&#8217;? Thanks, Jack</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #519</title>
		<link>http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/comment-page-1/#comment-25249</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #519</dc:creator>
		<pubDate>Mon, 18 Jan 2010 08:25:22 +0000</pubDate>
		<guid isPermaLink="false">http://davybrion.com/blog/2010/01/hey-microsoft-our-databases-arent-services/#comment-25249</guid>
		<description>[...] Hey Microsoft, Our Databases Aren&#8217;t Services! - Davy Brion makes an appeal to Microsoft to stop making frameworks which loosely turn databases into remote services without all the usual architectural features of remote services. [...]</description>
		<content:encoded><![CDATA[<p>[...] Hey Microsoft, Our Databases Aren&#8217;t Services! &#8211; Davy Brion makes an appeal to Microsoft to stop making frameworks which loosely turn databases into remote services without all the usual architectural features of remote services. [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
