<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://soapitstop.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>A Service Oriented Geek - All Comments</title><link>http://soapitstop.com/blogs/soageek/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>re: It is official,  I am a Microsoft Premier Field Engineer!!!!</title><link>http://soapitstop.com/blogs/soageek/archive/2007/12/15/its-official-i-am-a-microsoft-premier-field-engineer.aspx#194</link><pubDate>Sat, 15 Dec 2007 17:21:28 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:194</guid><dc:creator>anachostic</dc:creator><description>&lt;p&gt;Congratulations!&lt;/p&gt;
&lt;p&gt;Honestly, I'm surprised. &amp;nbsp;I thought your blood had turned green for life, but I guess you're not ready to fall back in the hammock.&lt;/p&gt;
&lt;p&gt;If you're having a goodbye lunch/dinner, I'll drop by.&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=194" width="1" height="1"&gt;</description></item><item><title>re: The Seven Deadly Sins of SOA</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#186</link><pubDate>Fri, 09 Nov 2007 16:33:48 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:186</guid><dc:creator>tom.fuller</dc:creator><description>&lt;p&gt;pkr,&lt;/p&gt;
&lt;p&gt;I think I sort of shor-circuited what I mean by do not design for just the hear and now. &amp;nbsp;What I wanted to impart is the benefit of delivering to the broadest interoperability spec from the get go. &amp;nbsp;I also like to look at things like flexible data responses that can be changed by the consumer (think option enumeration that says get me order or orderwithdetails). &amp;nbsp;I also don't mean you have to implement every branch of this when you begin but you have to think about that logic as being something that other consumers will want to modify. &amp;nbsp;This is a big contract/interface first type rant really. &amp;nbsp;Just be sure you aren't limiting your ability to evolve your contract without dramatically breaking all of the existing consumers. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;On top of that, &amp;nbsp;I am always frustrated by those that believe their application requirements have somehow figured out the only way this code will ever be called for eternity. &amp;nbsp;Very often I am in design &amp;quot;discussions&amp;quot; about building logic into a central component that could someday be exposed as a service and there's this immediate pushback that this logic won't be used in an OLTP type fashion. It's only for batch processing ... ever ... I know it for sure ... the soothsayers up at the top of the hill told me so it must be true.&lt;/p&gt;
&lt;p&gt;That's where I think there's big mistakes being made. &amp;nbsp;If you don't at least consider how to factor your code to look at making that component useful to non-batch oriented processes then you've just delivered a one off piece of code that is legacy as soon as you install it. &amp;nbsp;I guess that's what I mean. &amp;nbsp;It's more of a consider the long term vision for the key business components/processes whenever you're delivering anything and if you can deliver it as a something that is service oriented ... do it. &lt;/p&gt;
&lt;p&gt;I think this is different than what you were thinking I was recommending. &amp;nbsp;I don't believe you go out and guess how to implement requirements that don't exist but you do have to be prepared to evolve in that direction. &amp;nbsp;Does that answer the question?&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=186" width="1" height="1"&gt;</description></item><item><title>re: The Seven Deadly Sins of SOA</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#185</link><pubDate>Fri, 09 Nov 2007 16:33:27 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:185</guid><dc:creator>tom.fuller</dc:creator><description>&lt;p&gt;anachostic,&lt;/p&gt;
&lt;p&gt;In response to your first point about whether or not a consumer should be able to access the business object directly. &amp;nbsp;I think there's been a lot of evidence collected that steer designers away from exposing business object behavior directly. &amp;nbsp;Now from a layering perspective that may just mean you're building a business services layer (aka business workflow) on top of the business component. &amp;nbsp;The next quesiton is do you also put a layer in front of that which can abstract the technology choice you make for distributing your code. &amp;nbsp;Now this is where I have admittedly &amp;quot;softened&amp;quot; on my opinion. &amp;nbsp;In the past I've been a hardliner that said just make it a web service. &amp;nbsp;ASMX is not going to kill your performance enough for you to avoid it so just do it and that way you've used the most reusable technolgy mechanism from the start. &amp;nbsp;Well, &amp;nbsp;this always come under heavy attack/scrutiny (even though I believe the performance issues we're talking about here are insignificant). &amp;nbsp;So this is where I will now say you can make direct calls to a service interface that is implemented as a simple set of public methods that another consumer can reference. &amp;nbsp;This is your &amp;quot;direct call&amp;quot; model. &amp;nbsp;The problem that comes now is how do I manage versioning and deployment. &amp;nbsp;I am now forced to deploy that DLL to numerous locations and attempt to keep them in sync. &amp;nbsp;This is why I would also build the service interface that implements any number of WCF bindings and if the consumer can migrate to the central version some day then they're much better off.&lt;/p&gt;
&lt;p&gt;Now on to your comment about performance. &amp;nbsp;This once again comes back to how you feel you want to manage and scale your business logic. &amp;nbsp;If you feel comfortable making the &amp;quot;direct call&amp;quot; approach an option then you have to be prepared to scale each of those applications depending on their user demands. &amp;nbsp;If you decide you'd like to have a single location to version and scale your business logic (imagine you have a fat client, web client, and mobile client all using the same business logic) then you can take advantage of more robust hosting and load balancing technologies centrally. &amp;nbsp;This is more of a &amp;quot;to distribute or not distribute question&amp;quot;. &amp;nbsp;If you look at some of the stuff from Fowler he'll say the first rule of distributed component design is &amp;quot;don't distribute your component&amp;quot;. &amp;nbsp;I struggle with this because of the complexity of managing multiple versions in multiple applications. &amp;nbsp;I personally like the idea of maintaining all of my model code and business process code in one place. &amp;nbsp;I just feel like that'll more than pay for itself when you consider the churn that that type of code will go through (after all isn't that the stuff we want to be very agile with, &amp;nbsp;isn't that the stuff that can provide immediate business value?). &amp;nbsp;The hit to start up IIS and do a DNS lookup and deal with wire level transformation is somewhat moot in my opinion. &amp;nbsp;If you decide to distribute your objects then you're dealing with some form of this (even low level RMI/RPC stuff has to marshal things). &amp;nbsp;It's just how much are you willing to spend to get the benefit of centrally managed code.&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=185" width="1" height="1"&gt;</description></item><item><title>The Seven Deadly Sins of SOA : J2EE Technology Blog</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#183</link><pubDate>Mon, 05 Nov 2007 04:33:11 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:183</guid><dc:creator>The Seven Deadly Sins of SOA : J2EE Technology Blog</dc:creator><description>&lt;p&gt;Pingback from &amp;nbsp;The Seven Deadly Sins of SOA : J2EE Technology Blog&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=183" width="1" height="1"&gt;</description></item><item><title>re: The Seven Deadly Sins of SOA</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#182</link><pubDate>Tue, 23 Oct 2007 10:27:05 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:182</guid><dc:creator>pkr</dc:creator><description>&lt;p&gt;Great read, however I have a question about one specific area. In (6) you describe that should always strive to consider what else could use a specific component and not design simply for the here-and-now. I agree with that however it does pose a dilemma. In my experience this can lead to a confusing code-base. When you write code that isn't immediately been used then you run the risks of; the code remain unused and languishes in the code-base becoming the ever uttered, &amp;quot;why do we have this, why do we have to maintain this&amp;quot;, designers navel gaze about the possibilities, and you &amp;nbsp;&amp;quot;needlessly&amp;quot; increase your surface area. Having said all that I do appreciate what you are saying but I find it difficult to argue for it.&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=182" width="1" height="1"&gt;</description></item><item><title>Link Listing - October 17, 2007</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#178</link><pubDate>Thu, 18 Oct 2007 07:55:55 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:178</guid><dc:creator>Christopher Steen</dc:creator><description>&lt;p&gt;Modular schemas, include, and tooling support [Via: Anil John ] The Seven Deadly Sins of SOA [Via:...&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=178" width="1" height="1"&gt;</description></item><item><title>Link Listing - October 17, 2007</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#177</link><pubDate>Thu, 18 Oct 2007 07:54:31 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:177</guid><dc:creator>Christopher Steen</dc:creator><description>&lt;p&gt;Link Listing - October 17, 2007&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=177" width="1" height="1"&gt;</description></item><item><title>re: The Seven Deadly Sins of SOA</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/07/the-seven-deadly-sins-of-soa.aspx#172</link><pubDate>Tue, 09 Oct 2007 01:31:09 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:172</guid><dc:creator>anachostic</dc:creator><description>&lt;p&gt;#3 and #7 strike a chord with me, you'll no doubt recall.&lt;/p&gt;
&lt;p&gt;Regarding layering applications: &amp;nbsp;It sounds like you've reversed or at least softened your stance that the business layer must be accessed via web service. &amp;nbsp;Or you've decided that the business layer must be accessed by a WCF protocol. &amp;nbsp;I still hold my beliefs that services - web or otherwise - should be treated like another UI. A UI to be consumed by other applications versus the standard human UI. &amp;nbsp;The service would expose a full or restricted API on the business object it is fronting. &amp;nbsp;Oh wait, you said that. &amp;nbsp;My point is, I think the UI should be able to use the business objects directly.&lt;/p&gt;
&lt;p&gt;Seguing into performance: &amp;nbsp;My sticking point with web service calls is not serialization, it's all the other web stuff: request/response, DNS lookup, port connections, the spin-up of an IIS app if it's been idle, blah, blah. &amp;nbsp;That compromise can be made for infrequently-connected clients, but for the primary application, why should it have to suffer? &amp;nbsp;In the name of consistency? &amp;nbsp;The old argument has been updated now that WCF allows binary transports, but that conflicts with #5, right? &amp;nbsp;Maybe not, since I'll bet you can expose a service on multiple protocols.&lt;/p&gt;
&lt;p&gt;Merging back with layering: &amp;nbsp;If you treat the business objects as the point of consistency and the human UI loads the objects in-process and the application UI (WCF services) loads the objects in-process, they should both get adequate performance. &amp;nbsp;Further, you have the option to only expose methods that are safe for other applications to use, &amp;nbsp;e.g., the human UI needs a delete method which is present on the business object, but you don't want all other applications seeing/using this method. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;In closing, I always find your views informing and interesting. &amp;nbsp;I continue to argue that SOA should not be a golden hammer. &amp;nbsp;It should be an extension of the enlightenment of coding in such a way that business logic is encapsulated. &amp;nbsp;Woah, even I don't understand that. &amp;nbsp;2nd try: &amp;nbsp;If you're not building reusable business objects, SOA won't help you. &amp;nbsp;If you are building business objects, SOA &amp;lt;i&amp;gt;could&amp;lt;/i&amp;gt; help you. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I'll shut up for now. &amp;nbsp;Get Jeff and Robert back in on this.&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=172" width="1" height="1"&gt;</description></item><item><title>re: My Love/Hate Relationship with the XMLSerializer</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/06/my-love-hate-relationship-with-the-xmlserializer.aspx#170</link><pubDate>Sun, 07 Oct 2007 13:31:11 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:170</guid><dc:creator>tom.fuller</dc:creator><description>&lt;p&gt;We decided to update the orchestration to do exactly the same thing the xml deserializer does. &amp;nbsp;It wasn't too hard to just add it to the map as a functoid. &amp;nbsp;If I was starting over, &amp;nbsp;I would eliminate the use of the character type from the web service. &amp;nbsp;Or course that would potentially impact a lot of other consumers (proxy regens, regression testing, etc...).&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=170" width="1" height="1"&gt;</description></item><item><title>re: My Love/Hate Relationship with the XMLSerializer</title><link>http://soapitstop.com/blogs/soageek/archive/2007/10/06/my-love-hate-relationship-with-the-xmlserializer.aspx#169</link><pubDate>Sun, 07 Oct 2007 03:16:18 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:169</guid><dc:creator>anachostic</dc:creator><description>&lt;p&gt;Great troubleshooting. &amp;nbsp;I remember those days.&lt;/p&gt;
&lt;p&gt;So was it decided to change the service to use string or to change the orchestration to use chr()?&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=169" width="1" height="1"&gt;</description></item><item><title>Link Listing - July 17, 2007</title><link>http://soapitstop.com/blogs/soageek/archive/2007/07/16/materials-from-quot-using-behaviors-to-flex-your-wcf-muscles-quot-posted.aspx#43</link><pubDate>Fri, 20 Jul 2007 05:47:18 GMT</pubDate><guid isPermaLink="false">c84fe871-9be4-49f2-9abc-6118b8cda40a:43</guid><dc:creator>Christopher Steen</dc:creator><description>&lt;p&gt;Link Listing - July 17, 2007&lt;/p&gt;
&lt;img src="http://soapitstop.com/aggbug.aspx?PostID=43" width="1" height="1"&gt;</description></item></channel></rss>