<?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: Entity Services Rollup</title>
	<atom:link href="http://www.udidahan.com/2007/06/08/entity-services-rollup/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sun, 14 Mar 2010 06:27:00 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-30816</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Thu, 04 Sep 2008 04:43:48 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-30816</guid>
		<description>Colin,

Any day now...</description>
		<content:encoded><![CDATA[<p>Colin,</p>
<p>Any day now&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-30766</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Wed, 03 Sep 2008 21:02:07 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-30766</guid>
		<description>@Victor
Do you have a blog, can&#039;t seem to find it but I&#039;d definitely subscribe.</description>
		<content:encoded><![CDATA[<p>@Victor<br />
Do you have a blog, can&#8217;t seem to find it but I&#8217;d definitely subscribe.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-30765</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Wed, 03 Sep 2008 20:56:48 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-30765</guid>
		<description>@Udi
Just read &quot;Autonomous Services and Enterprise Entity Aggregation&quot;, really superb and excellent examples. It is interesting how different this is from the style of SOA that Thomas Erl and others are pushing for, maybe you need to put out a series of 50 odd books? :)</description>
		<content:encoded><![CDATA[<p>@Udi<br />
Just read &#8220;Autonomous Services and Enterprise Entity Aggregation&#8221;, really superb and excellent examples. It is interesting how different this is from the style of SOA that Thomas Erl and others are pushing for, maybe you need to put out a series of 50 odd books? <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: udidahan</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-19863</link>
		<dc:creator>udidahan</dc:creator>
		<pubDate>Fri, 28 Mar 2008 21:33:31 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-19863</guid>
		<description>Victor,

Thank you so much for your insightful comments.

It&#039;s great to see that you agree on the point that business objects should NOT be elevated to the stature of a service.

To your question about product price information - that is something that would be published by some &quot;business component&quot; in the marketing service. If part of a system needed that information, it would subscribe to those messages.

Hope that clarifies things.</description>
		<content:encoded><![CDATA[<p>Victor,</p>
<p>Thank you so much for your insightful comments.</p>
<p>It&#8217;s great to see that you agree on the point that business objects should NOT be elevated to the stature of a service.</p>
<p>To your question about product price information &#8211; that is something that would be published by some &#8220;business component&#8221; in the marketing service. If part of a system needed that information, it would subscribe to those messages.</p>
<p>Hope that clarifies things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Victor Moran</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-19842</link>
		<dc:creator>Victor Moran</dc:creator>
		<pubDate>Thu, 27 Mar 2008 15:53:28 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-19842</guid>
		<description>Sorry, me again; seems the above posts were advocating only Entity Services, but the key point was how they facilitated a better over all arch enabling the layers above the core Entities (Process/Activity Services); they would be the ones that would encapsulate/be flexible as to capabilities and business processes of the company.  This further elevates dependencies to the process layer allowing Entities to communicate w/out the physical dependency - in addition to the pub-sub/asynch model you propose, provide a good balance btw composition/reuse and autonomy/loose coupling (which doesn&#039;t mean &quot;no coupling&quot; in a networked, process-driven SOA).</description>
		<content:encoded><![CDATA[<p>Sorry, me again; seems the above posts were advocating only Entity Services, but the key point was how they facilitated a better over all arch enabling the layers above the core Entities (Process/Activity Services); they would be the ones that would encapsulate/be flexible as to capabilities and business processes of the company.  This further elevates dependencies to the process layer allowing Entities to communicate w/out the physical dependency &#8211; in addition to the pub-sub/asynch model you propose, provide a good balance btw composition/reuse and autonomy/loose coupling (which doesn&#8217;t mean &#8220;no coupling&#8221; in a networked, process-driven SOA).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Victor Moran</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-19834</link>
		<dc:creator>Victor Moran</dc:creator>
		<pubDate>Thu, 27 Mar 2008 12:59:35 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-19834</guid>
		<description>Hey Udi, just dove into your article a little deeper; to correct myself, I see that you&#039;re steering away from Entity services (in name), but your solution is still a good idea speaking about service interaction in general (Entities or not).  As a matter of fact, in order to support the autonomy case, it seems you were forced to combine &quot;Product&quot; and &quot;Customer&quot; concerns within a &quot;Marketing&quot; service; this still can be considered an Entity service (just 1 that is caring for 2 entities i/o 1), as it&#039;s providing the same kind of capabilities (just behind an aggregated interface).

It&#039;s actually OK for an Entity service to represent more than 1 &quot;Business Entity&quot; (or Business Object), as long as their relationship represents a know business concept (perhaps several granular business objects only really have meaning in a business context when thought about together).  Maintaining conceptual integrity is key when deriving the concepts to be represented by Entity services; the goal is not to work from the database-up as your boundaries, but from sound business concepts irrespective of storage - a common pitfall when developing Entity Services, because it&#039;s so easy (and often viable) to &quot;webify&quot; business object methods.

One of the most important things in an SOA (or any architecture) - vital to maintenance, governance, and discovery - is the concept of ownership.  Ownership of product info is unclear in your scenario (w/out your comments).  Where do I go to find out the price of a product?  “Sales” service seems the closest match, but doesn’t seem appropriate (i.e., this svc should only be concerned with how a  product is sold).  Price info may seem granular (a subjective term anyway), but it does represent a DUBF (&quot;Discrete Unit of Business Functionality&quot; - not an official term!); i.e., it is autonomous and useful in and of itself – and a natural fit in a “Products” service.  A “Products” service maintains “1 version of the truth” about product info; your example seems to scatter product info “versions” among unrelated services.

Maybe my concept of Entity Services differs from those originally espoused by MS and earlier SOA adopters; I too have been wrestling with autonomy, abstraction, separation of concerns (SoC), coupling, reuse, composition (all the concepts that contradict each other!) - even from the days of trying to make my objects more autonomous.  Again I believe your ideas on asynchronous communication are the way it should be; this and pub-sub/event-driven communication architectures I believe do open the door for the business flexibility, composition, and SoC afforded by Entity services.  HTTP is a naturally connectionless, stateless comm channel anyway; I cringe when thinking of all the plumbing necessary to make Web Services look synchronous over this channel; then you have scalability issues, HTTP time-outs - yuck.

Anyway, the other point in your article I don&#039;t necessarily agree with is business unit organization as a guide for service organization.  Business units (Sales, Marketing, etc.) are organized for reasons that may or may not have to do with how services should be organized - especially when you consider that business capabilities (advertised to external companies for example) may span (hence should be at a different conceptual level than) internal business units.  And if you think about it, exposing services along these lines is a form of &quot;breaking encapsulation&quot; to external participants, as it divulges internal organization, and shouldn&#039;t matter to anyone looking for core functionality (which bring us back to why Entity services can be so effective).  Business unit organization – even internally – could be fleeting; what remain are the core “Entities” if you will, that businesses organize around and share; that’s the more relevant, flexible abstraction.  Entity Svcs &quot;make sense&quot; internally and externally (again, if conceived right).

Sorry, didn’t mean to take up your whole blog there(!), but wanted to give as much info as I could in case I couldn’t get back into it.  I’d like to know what you think…</description>
		<content:encoded><![CDATA[<p>Hey Udi, just dove into your article a little deeper; to correct myself, I see that you&#8217;re steering away from Entity services (in name), but your solution is still a good idea speaking about service interaction in general (Entities or not).  As a matter of fact, in order to support the autonomy case, it seems you were forced to combine &#8220;Product&#8221; and &#8220;Customer&#8221; concerns within a &#8220;Marketing&#8221; service; this still can be considered an Entity service (just 1 that is caring for 2 entities i/o 1), as it&#8217;s providing the same kind of capabilities (just behind an aggregated interface).</p>
<p>It&#8217;s actually OK for an Entity service to represent more than 1 &#8220;Business Entity&#8221; (or Business Object), as long as their relationship represents a know business concept (perhaps several granular business objects only really have meaning in a business context when thought about together).  Maintaining conceptual integrity is key when deriving the concepts to be represented by Entity services; the goal is not to work from the database-up as your boundaries, but from sound business concepts irrespective of storage &#8211; a common pitfall when developing Entity Services, because it&#8217;s so easy (and often viable) to &#8220;webify&#8221; business object methods.</p>
<p>One of the most important things in an SOA (or any architecture) &#8211; vital to maintenance, governance, and discovery &#8211; is the concept of ownership.  Ownership of product info is unclear in your scenario (w/out your comments).  Where do I go to find out the price of a product?  “Sales” service seems the closest match, but doesn’t seem appropriate (i.e., this svc should only be concerned with how a  product is sold).  Price info may seem granular (a subjective term anyway), but it does represent a DUBF (&#8221;Discrete Unit of Business Functionality&#8221; &#8211; not an official term!); i.e., it is autonomous and useful in and of itself – and a natural fit in a “Products” service.  A “Products” service maintains “1 version of the truth” about product info; your example seems to scatter product info “versions” among unrelated services.</p>
<p>Maybe my concept of Entity Services differs from those originally espoused by MS and earlier SOA adopters; I too have been wrestling with autonomy, abstraction, separation of concerns (SoC), coupling, reuse, composition (all the concepts that contradict each other!) &#8211; even from the days of trying to make my objects more autonomous.  Again I believe your ideas on asynchronous communication are the way it should be; this and pub-sub/event-driven communication architectures I believe do open the door for the business flexibility, composition, and SoC afforded by Entity services.  HTTP is a naturally connectionless, stateless comm channel anyway; I cringe when thinking of all the plumbing necessary to make Web Services look synchronous over this channel; then you have scalability issues, HTTP time-outs &#8211; yuck.</p>
<p>Anyway, the other point in your article I don&#8217;t necessarily agree with is business unit organization as a guide for service organization.  Business units (Sales, Marketing, etc.) are organized for reasons that may or may not have to do with how services should be organized &#8211; especially when you consider that business capabilities (advertised to external companies for example) may span (hence should be at a different conceptual level than) internal business units.  And if you think about it, exposing services along these lines is a form of &#8220;breaking encapsulation&#8221; to external participants, as it divulges internal organization, and shouldn&#8217;t matter to anyone looking for core functionality (which bring us back to why Entity services can be so effective).  Business unit organization – even internally – could be fleeting; what remain are the core “Entities” if you will, that businesses organize around and share; that’s the more relevant, flexible abstraction.  Entity Svcs &#8220;make sense&#8221; internally and externally (again, if conceived right).</p>
<p>Sorry, didn’t mean to take up your whole blog there(!), but wanted to give as much info as I could in case I couldn’t get back into it.  I’d like to know what you think…</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Victor Moran</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-19759</link>
		<dc:creator>Victor Moran</dc:creator>
		<pubDate>Tue, 25 Mar 2008 21:38:24 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-19759</guid>
		<description>Udi, your article doesn&#039;t seem to denounce Entity Services themselves, but makes the argument that they should communicate asynchronously, which makes sense and serves to exhonerate Entity Svcs to some degree with this in place.  The assertion that Svc A&#039;s respopnse time is temporally coupled to the Svc B it calls is a &quot;cost of doing business&quot; as it were, and making the call asynchronous only &quot;defers&quot; the cost of Svc B, which still has to be factored into the parent process to get it&#039;s true cost.  The only benefit of asynching them is that of multi-threading anything, shortening the process temporally to the &quot;long pole&quot; process, but nonetheless still requiring consideration of both svcs (hence, still being &quot;coupled&quot;).  Of course, synchronization and communication are introduced when you multi-thread also (diminishing the value as more &quot;threads&quot; are added), which may actually be worse at the svc level, but that&#039;s another topic.

SOA IS application architecture (what else would it be for?).  Actually guys like Erl and Krafzig say that Entity (or &quot;Basic&quot; as Krafzig calls them) Services are the foundation for an SOA; they say an SOA must start with them, but doesn&#039;t have to include the other service types (process, utility, etc.).

I think perhaps there&#039;s a misconception about Entity Services; they execute disctrete units of business functionality (DUBFs) like any other service (if designed correctly).  Not all services need complex process negotiation or orchestration; core business functionality is what an Entity Svc exposes, which can be useful (if desinged correctly) in and of itself.  Entity Services are not an excuse to stand up CRUD or other granular operations that would normally belong in an object, but if you look at some of the methods of an Entity Object - they CAN stand alone as DUBFs.

Service composition/reuse is the Holy Grail of SO (otherwise, what&#039;s it for?); Entity Services provide that.  Once we move beyond the infancy of SO - and still beyond the notion of OO/n-tier thinking to where svcs are the FUDs (Functional Units of Decomposition) - just as with objects - there can be no meaningful collaboration without some dependencies (&quot;nil coupling&quot;).  You want to reduce coupling of course, but as with anything you break up into pieces, you introduce coupling of some kind when you do, and &quot;export coupling&quot; is OK.  In your world, no services talk to each other?  That doesn&#039;t bode well for the evolution of SOA, or any other technology that 1st comes in flat until the novelty wares off, then becomes taxonomized, categorized, etc. (for agility/adaptability benefits of specialization/seprartion of concerns).

The advent of Process/Activity Services help elevate that coupling to another level so that Entities can be composed without the physical dependency, but Entity Svcs can be just as autonomous as any other services - even more so by making them business PROCESS-agnostic/using Process Svcs.  An Entity Svc shouldn&#039;t care HOW it&#039;s composed, only that it WILL be conmposed, thereby increasing the focus on the standardization (and thus autonomy) of the contract and service itself. Autonomy is served, but that is only 1 of many svc design principles - the rest of which, I believe Entity Services also adhere to 1 way or another.

Why can&#039;t services implement the domain model pattern?  It&#039;s a pattern, and therefore not restricted to a specific technology or implementation.  Entity services should be thought of as core business functionality liberators, not Entity/Business Objects or db front-ends.  

Businesses offer certain information and services; Entity Services are the vehicle that exposes this info - not fine-grained if you can help it, but that&#039;s a &quot;Chunky-vs-Chatty&quot; issue, not 1 of appropriate DUBF granularity (a subjective term).  Useful is useful.  We also have to consider that services are not just there to facilitate B2C, but B2B, or machine-to-machine communication; a well-known, standard XML schema associated w/ an Entity Svc is the perfect vehicle to facilitate this - and DOES NOT give up details that the consumer isn&#039;t already expecting/knows about (sorry for the caps, but no italics capability!).

I hear what you&#039;re saying, but a DUBF is a DUBF - to whomever it is useful - at any level of cinsumption.  I think we have to clear up the Entity Svc misconceptions 1st though.</description>
		<content:encoded><![CDATA[<p>Udi, your article doesn&#8217;t seem to denounce Entity Services themselves, but makes the argument that they should communicate asynchronously, which makes sense and serves to exhonerate Entity Svcs to some degree with this in place.  The assertion that Svc A&#8217;s respopnse time is temporally coupled to the Svc B it calls is a &#8220;cost of doing business&#8221; as it were, and making the call asynchronous only &#8220;defers&#8221; the cost of Svc B, which still has to be factored into the parent process to get it&#8217;s true cost.  The only benefit of asynching them is that of multi-threading anything, shortening the process temporally to the &#8220;long pole&#8221; process, but nonetheless still requiring consideration of both svcs (hence, still being &#8220;coupled&#8221;).  Of course, synchronization and communication are introduced when you multi-thread also (diminishing the value as more &#8220;threads&#8221; are added), which may actually be worse at the svc level, but that&#8217;s another topic.</p>
<p>SOA IS application architecture (what else would it be for?).  Actually guys like Erl and Krafzig say that Entity (or &#8220;Basic&#8221; as Krafzig calls them) Services are the foundation for an SOA; they say an SOA must start with them, but doesn&#8217;t have to include the other service types (process, utility, etc.).</p>
<p>I think perhaps there&#8217;s a misconception about Entity Services; they execute disctrete units of business functionality (DUBFs) like any other service (if designed correctly).  Not all services need complex process negotiation or orchestration; core business functionality is what an Entity Svc exposes, which can be useful (if desinged correctly) in and of itself.  Entity Services are not an excuse to stand up CRUD or other granular operations that would normally belong in an object, but if you look at some of the methods of an Entity Object &#8211; they CAN stand alone as DUBFs.</p>
<p>Service composition/reuse is the Holy Grail of SO (otherwise, what&#8217;s it for?); Entity Services provide that.  Once we move beyond the infancy of SO &#8211; and still beyond the notion of OO/n-tier thinking to where svcs are the FUDs (Functional Units of Decomposition) &#8211; just as with objects &#8211; there can be no meaningful collaboration without some dependencies (&#8221;nil coupling&#8221;).  You want to reduce coupling of course, but as with anything you break up into pieces, you introduce coupling of some kind when you do, and &#8220;export coupling&#8221; is OK.  In your world, no services talk to each other?  That doesn&#8217;t bode well for the evolution of SOA, or any other technology that 1st comes in flat until the novelty wares off, then becomes taxonomized, categorized, etc. (for agility/adaptability benefits of specialization/seprartion of concerns).</p>
<p>The advent of Process/Activity Services help elevate that coupling to another level so that Entities can be composed without the physical dependency, but Entity Svcs can be just as autonomous as any other services &#8211; even more so by making them business PROCESS-agnostic/using Process Svcs.  An Entity Svc shouldn&#8217;t care HOW it&#8217;s composed, only that it WILL be conmposed, thereby increasing the focus on the standardization (and thus autonomy) of the contract and service itself. Autonomy is served, but that is only 1 of many svc design principles &#8211; the rest of which, I believe Entity Services also adhere to 1 way or another.</p>
<p>Why can&#8217;t services implement the domain model pattern?  It&#8217;s a pattern, and therefore not restricted to a specific technology or implementation.  Entity services should be thought of as core business functionality liberators, not Entity/Business Objects or db front-ends.  </p>
<p>Businesses offer certain information and services; Entity Services are the vehicle that exposes this info &#8211; not fine-grained if you can help it, but that&#8217;s a &#8220;Chunky-vs-Chatty&#8221; issue, not 1 of appropriate DUBF granularity (a subjective term).  Useful is useful.  We also have to consider that services are not just there to facilitate B2C, but B2B, or machine-to-machine communication; a well-known, standard XML schema associated w/ an Entity Svc is the perfect vehicle to facilitate this &#8211; and DOES NOT give up details that the consumer isn&#8217;t already expecting/knows about (sorry for the caps, but no italics capability!).</p>
<p>I hear what you&#8217;re saying, but a DUBF is a DUBF &#8211; to whomever it is useful &#8211; at any level of cinsumption.  I think we have to clear up the Entity Svc misconceptions 1st though.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: [Podcast] Using WCF for Entity and Activity Services to Implement Business Services</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-3273</link>
		<dc:creator>[Podcast] Using WCF for Entity and Activity Services to Implement Business Services</dc:creator>
		<pubDate>Tue, 17 Jul 2007 14:00:38 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-3273</guid>
		<description>[...] Blog post covering a discussion on Entity Services [...]</description>
		<content:encoded><![CDATA[<p>[...] Blog post covering a discussion on Entity Services [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jack van Hoof</title>
		<link>http://www.udidahan.com/2007/06/08/entity-services-rollup/comment-page-1/#comment-2189</link>
		<dc:creator>Jack van Hoof</dc:creator>
		<pubDate>Sat, 09 Jun 2007 12:12:19 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/08/entity-services-rollup/#comment-2189</guid>
		<description>It seems that we are all in agreement now...</description>
		<content:encoded><![CDATA[<p>It seems that we are all in agreement now&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
