<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Architecture</title>
        <link>http://jamescbender.com/bendersblog/category/15.aspx</link>
        <description>Architecture</description>
        <language>en-US</language>
        <copyright>James Bender</copyright>
        <managingEditor>james.c.bender@live.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <item>
            <title>Is WCF the Death of .NET?</title>
            <link>http://jamescbender.com/bendersblog/archive/2008/11/04/is-wcf-the-death-of-.net.aspx</link>
            <description>&lt;p&gt;I had the good fortune to attend the PDC pre-conference and was able to attend a day-long WCF session with Juval Lowy and Ron Jacobs.&lt;/p&gt;
&lt;p&gt;Juval went first and spoke for most of the day. Juval has been working closely with Microsoft for quite some time, and his COM(+) roots were showing big time. Essentially, Juval is of the opinion that WCF is a .NET killer and should be the way ALL applications are written from here on it.&lt;/p&gt;
&lt;p&gt;As Juval has extensive expertise with COM, I think he tends to see everything in terms of that model, and he may have a point. As a result, he made the bold statement in the pre-conf session of referring to WCF as a .NET killer. &lt;/p&gt;
&lt;p&gt;While I'm not prepared to follow Juval in claiming .NET dead at the hands of WCF, he makes some good points. If you think of the communication between objects in a system analogous to the communication of services in an architecture, WCF provides some cool abilities that the traditional model in .NET does not. &lt;/p&gt;
&lt;p&gt;Services provide metadata about what they are and how to use them. .NET classes do not. WCF allows developers to provide a rich security model around their services. .NET classes have some security abilities, but they are based around determining if a user has specific permissions at runtime. WCF allows you to set timeouts for a service call. The service dies, your application goes on. Calling a method on a .NET class that dies means your entire app dies. WCF allows the way services communicate to be configured at runtime. Reflection makes that possible in .NET, but be ready to build lots of plumbing to implement this. MEF makes this WAY easier, but WCF still has it beat as an out-of-the-box solution. Want to distribute your components on multiple tiers? WCF inherently allows this. Heck, it's WCF's "thing." You can do this in .NET too, if you use WCF. There's more, but those are the big wins for most developers.&lt;/p&gt;
&lt;p&gt;Yeah, WCF does offer some advantages. So much so that Juval claims that every class from here on out MUST be a service from now till the end of time. &lt;/p&gt;
&lt;p&gt;So why hasn't the development world fallen in line? &lt;/p&gt;
&lt;p&gt;WCF offers metadata about it's services and classes don't. True, but let's be honest; if .NET classes did offer that level of metadata how often would it really be used? In most cases I've found having the class implement a contract is sufficient. Presumably, if good naming standards are used, I know what the class does and what methods are available to me. Security in services is great. Security is important. But let's face it; security slows systems down. I'm a big believer of checking security ACL's in every method call (ESPECIALLY if it's a web app!) but that call is relatively cheap compared to how the comparable model in WCF security is implemented. The configuration stuff could be very useful, but one of the biggest complaints I hear about WCF is that the configuration, even with the WCF configuration tool, is difficult and generally a pain to deal with. And any facility to do this with .NET classes would be just as painful.&lt;/p&gt;
&lt;p&gt;And let's not forget the two biggest dings&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Performance. A WCF call with the named pipes binding can be VERY fast. But it's still not going to beat inter-process call to an object in the same app domain. Sure, not by much and it would be almost imperceptible to the user, but it's there. Add that to the up-front time needed to spin up a service host and establish connections (especially if security is being used) and it's definitely something to think about. &lt;/li&gt;
    &lt;li&gt;Complexity. One of the biggest obstacles to widespread WCF adoption is that it's still perceived as a more complex solution to ASMX web services and .NET Remoting. To be sure, WCF gives you an abundance of options. But having too many options can make things more confusing. And have you ever seen a production WCF configuration file? It's ugly! No argument there. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don't know which is better. This is because I've never actually built an application the way Juval suggests. But I'm curious to see what an application built in the manner would look like. It goes without saying that it would be designed and developed very differently from the traditional .NET applications we all use today. For every design consideration I can think of sitting here writing this, there are several more that haven't occurred to me yet. In the end the adage holds true: You don't know what you don't know.&lt;/p&gt;
&lt;p&gt;So my plan is to pit both of these approaches against each other and see what happens. Over the course of the next few weeks, as time allows, I'm going to write the same application twice. Once as a traditional .NET application and again using the approach Juval is advocating. Here are the ground rules:&lt;/p&gt;
&lt;p&gt;This will be a simple application. It will not necessarily mirror and real-life business case. It's sole purpose is to demonstrate each architectural approach in a variety of everyday business situations. That's right, I'm living many a developers dream; using technology for the sake of using technology. Mmmmmm...... self-indulgence....&lt;/p&gt;
&lt;p&gt;Both applications will be developed using TDD to the extent that my TDD chops allow. In addition to improving my TDD chops, using  the same unit and UAT test for each application will help ensure parity. Each application must pass ALL tests to ensure that each is delivering the same features. I will be the primary tester, but if anyone would like to volunteer help out that would be great!&lt;/p&gt;
&lt;p&gt;Each application will have a standard UI tier (WPF), business tier and data store. Additionally, each application will utilize one service within the application that will mimic and internal Enterprise service and one publicly available web service (TBD)&lt;/p&gt;
&lt;p&gt;I'll be posting my progress as I go. Please feel free to add any suggestions or ask any questions in the comments section&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fjamescbender.com%2fbendersblog%2farchive%2f2008%2f11%2f04%2fis-wcf-the-death-of-.net.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fjamescbender.com%2fbendersblog%2farchive%2f2008%2f11%2f04%2fis-wcf-the-death-of-.net.aspx" /&gt;&lt;/a&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/33.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2008/11/04/is-wcf-the-death-of-.net.aspx</guid>
            <pubDate>Tue, 04 Nov 2008 18:10:46 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/33.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2008/11/04/is-wcf-the-death-of-.net.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/33.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Just a reminder...</title>
            <link>http://jamescbender.com/bendersblog/archive/2008/10/10/just-a-reminder.aspx</link>
            <description>&lt;p&gt;... the the second meeting of the Columbus Architects Group (ColARC) will be Wednesday October 15th at the Quick Solutions office at 440 Polaris Pkwy Suite 500 in Westerville.&lt;/p&gt;  &lt;p&gt;This months topic is "The Architect as a Leader." More information can be found at &lt;a href="http://www.colarc.org"&gt;www.colarc.org&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In other news, ColARC also has it's own Twitter feed! You can start following ColARC at &lt;a title="http://twitter.com/ColARC" href="http://twitter.com/ColARC"&gt;http://twitter.com/ColARC&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you all there!&lt;/p&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/25.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2008/10/10/just-a-reminder.aspx</guid>
            <pubDate>Sat, 11 Oct 2008 01:50:05 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/25.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2008/10/10/just-a-reminder.aspx#feedback</comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/25.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Architects of the World Unite!</title>
            <link>http://jamescbender.com/bendersblog/archive/2008/08/18/architects-of-the-world-unite.aspx</link>
            <description>&lt;p&gt;Howdy!&lt;/p&gt;  &lt;p&gt;Long time no post.&lt;/p&gt;  &lt;p&gt;But I've been busy.&lt;/p&gt;  &lt;p&gt;And not just with XBox, drinking beer and napping. Although to be fair, there has been some of that...&lt;/p&gt;  &lt;p&gt;What I've been working on is the creation of the Columbus Architects Group. &lt;/p&gt;  &lt;p&gt;ColARC is a community user group for Architects and aspiring Architects to get together and share knowledge, experience and opinions. We are not bound by platforms and any Architect (or aspiring Architect) who is passionate about their craft is invited to attend.&lt;/p&gt;  &lt;p&gt;The topic for the first meeting is "What is an Architect?" The format for most meetings will be a fish bowl meeting, but there may be panel discussions and speakers at some meetings.&lt;/p&gt;  &lt;p&gt;Our first meeting is Wednesday September 10th at Quick Solutions in Westerville. We start at 6:00.&lt;/p&gt;  &lt;p&gt;Normally, we will meet the second Tuesday of the month, but there was a conflict this first month so...&lt;/p&gt;  &lt;p&gt;And yes, I know COJUG meets the same night. We're working on...&lt;/p&gt;  &lt;p&gt;Check it out at &lt;a href="http://www.colarc.org"&gt;www.colarc.org&lt;/a&gt; and hope to see you all there!&lt;/p&gt;&lt;img src="http://jamescbender.com/bendersblog/aggbug/24.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>James Bender</dc:creator>
            <guid>http://jamescbender.com/bendersblog/archive/2008/08/18/architects-of-the-world-unite.aspx</guid>
            <pubDate>Mon, 18 Aug 2008 22:55:18 GMT</pubDate>
            <wfw:comment>http://jamescbender.com/bendersblog/comments/24.aspx</wfw:comment>
            <comments>http://jamescbender.com/bendersblog/archive/2008/08/18/architects-of-the-world-unite.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://jamescbender.com/bendersblog/comments/commentRss/24.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>