Injecting Your Favorite IoC Into MVC Turbine

Since the release of MVC Turbine, I’ve been getting lots of questions about the design decisions I made around the interaction with the Service Locator that ships with the plug-in.  The two main questions are: Why didn’t you use the Common Service Locator project from CodePlex? Why are we forced/constrained/etc to use generic component registration API? These questions are very valid and could be easily explained if I ever write the documentation for the project (which, I’m working on by the way). So in this post, I hope to...

posted @ Tuesday, December 15, 2009 1:39 AM | Feedback (4)

MVC Application Extensibility with MVC Turbine

The whole purpose of MVC Turbine is to make the development of an MVC application easy and streamlined. This can be done through the use of a new feature of V2 called “Blades”. Essentially, a Blade is nothing more than a component (or slice) of a Turbine application since it provides a layer of abstraction to a concern of the application. For example, a Turbine MVC application ships with three core blades out of the box: MvcBlade – Performs all ASP.NET MVC related work, i.e., setup of Controller factories, View Engines, etc. ...

posted @ Tuesday, November 3, 2009 11:32 PM | Feedback (8)

Multiple View Engines with MVC Turbine

This past weekend while working on my talk for the Heartland Developer's Conference, I toyed with the idea of showing multiple ASP.NET MVC View Engines (VE) ‘co-existing’ within the same application. Why do that? Well, I wanted to show how using open source tools like MVC Turbine, MVC Contrib and Spark within your application, you can assemble some pretty cool stuff.  And most important, it made for a really cool demo. :) Please note that this concept is not anything new. Phil has blogged about a similar topic in the past. However, this approach extends what Phil...

posted @ Monday, October 5, 2009 4:37 PM | Feedback (8)

Autowire IHttpModules with IoC

My original title for this blog post was going to be HttpIoC - Find Out What It Means To Me, as Steven Smith suggested via twitter, but I figured it wasn’t going to be as searchable. :) So I went with the boring title. Sorry Steven! A while back, Tuna Toksoz and I were having a conversation on twitter about how he does registration of any modules his application will need/use.  After playing around with the concept for a little, I was able to get something that will work for our any ASP.NET application with minimal effort. ...

posted @ Wednesday, August 19, 2009 10:45 AM | Feedback (12)

Contextual Sessions with NHibernate – Part 1

As with any piece of software development, there is more than a million ways to skin a cat.  Working with NHibernate in a multi-threaded environment is no different. :)  To help with the illustration of the interaction of NHibernate and ASP.NET, I’ve created a sample application out on Google code.  Please feel free to check it out and run it locally.  The only requirement for the sample is to have a local install of SQL Server Express. The Problem Those of you using NHibernate in a multi-threaded environment (say ASP.NET) have probably written code to maintains an ISession...

posted @ Tuesday, February 17, 2009 8:56 PM | Feedback (7)

Views, Models and ViewModels - Part 1

Not sure how many of you read my first post on my thoughts on Oxite. Well, here's my offering on trying to make things a little closer to MVC by offering my perspective on the code.  Please note that I want to keep these simple refactorings as conversational as possible, so if you see something that offends or upsets you with my interpretation/implementation, PLEASE COMMENT. :) Let's examine the SignIn action under the AccountController: [AcceptVerbs(HttpVerbs.Post)] public ActionResult SignIn(string username, string password, bool rememberMe, string returnUrl) { PageTitle.AdditionalPageTitleSegments = new string[] { "Sign In" }; ...

posted @ Tuesday, December 23, 2008 10:56 PM | Feedback (3)

Microsoft ArcReady

Not sure how many of you know about this upcoming event (tomorrow) 11/06/2008!  If you're going to be around the area, please come check it out!! ArcReady Professional Patterns on the Job You're smart. You deliver. What more could your company want from you?  Why don't they come to you for the big technical decisions? Why won't they listen to your proposals? It seems like everyone has an agenda and they're doing everything they can to kill your great ideas. Join us this quarter as we focus on the soft skills that architects need to master....

posted @ Wednesday, November 5, 2008 9:27 AM | Feedback (1)

Thanks, VSLive Las Vegas and HDC Omaha '08!

For those of you that attended one or both at of my talks at VSLive Las Vegas or HDC Omaha 2008, I just want to say, thank you!  And for the VSLive folks, I do apologize for cutting my open source tools talk short by 10 minutes.  I had to jet out of the Mirage so I can make the plane back to the Midwest! As promised, I upgraded my code to run with Beta 1 of the ASP.NET MVC Framework!  So, if you want to get the latest bits go to: You will find my slide deck as well as...

posted @ Sunday, October 19, 2008 7:05 PM | Feedback (0)

Spaghetti Code Podcast - Ruby, RoR and ASP.NET MVC

A couple of weeks back, I recorded a podcast with, our community MS Developer Evangelist, Jeff Brand for his Spaghetti Code series.  I was informed by Jeff, today that he finally posted it!  I had a heck of a time recording this podcast with Jeff, the hour just flew by!  If yo have the time, download the podcast and check it out! Links: Direct Download - click here Subscribe - click here iTunes - click here

posted @ Tuesday, May 27, 2008 9:00 PM | Feedback (3)

Ask An Expert Live Chat: May 1st, 2008

That's right!  We're having another ASP.NET Expert Live Chat on Thursday, May 1st, 2008 at 6 PM PST.  Here's more info on the event: Get your tough development questions answered by Microsoft MVPs, Regional Directors, and other industry experts. Community experts will be on hand to answer your .NET- and Visual Studio-related questions. No off topic questions please. Please note that questions regarding upcoming products and future product specs might not be answered. Would you like to participate as an expert? Contact Ryan Olshan at Ryan[dot]Olshan[at]strongtypes[dot]com. MSDN Online Chats - Chat Room...

posted @ Saturday, April 5, 2008 12:47 AM | Feedback (3)


Well, we can finally get our hands on the ASP.NET MVC bits!  They're being released as part of the ASP.NET 3.5 Extensions CTP.  This release includes: ASP.NET AJAX Improvements: New ASP.NET AJAX features in the ASP.NET 3.5 Extensions release include better browser history support (back/forward button integration, and server-side history management support), improved AJAX content linking support with permalinks, and additional JavaScript library improvements. ASP.NET MVC: This model view controller (MVC) framework for ASP.NET provides a structured model that enables a clear separation of concerns within web applications, and makes...

posted @ Monday, December 10, 2007 9:14 AM | Feedback (6)

PDC 2008 Announced

That's right, PDC has been rescheduled to Oct. 27-30 2008 in Los Angeles, California.  Here's the info from their site: PDC 2008 October 27–30, 2008 Pre-conference October 26, 2008 Los Angeles, California OK, OK. We are delighted to announce the date and location of the next Microsoft Professional Developers Conference (PDC): October 27–30, 2008 at the Los Angeles Convention Center. PDC is the definitive Microsoft event for software developers and architects focused on the future of the Microsoft platform. Mark your...

posted @ Friday, December 7, 2007 3:18 PM | Feedback (0)

Tulsa TechFest: Unable To Present

I would like to apologize for those who wanted to attend my presentation on Software Factories at Tulsa TechFest, but unfortunately due to technical difficulties, I missed my stand-by flight into Tulsa.  When I spoke with the nice people at American Airlines they couldn't guarantee me making into Tulsa into sometime late this evening. However, for those of you wanting my slides, you can download them from the link at the bottom of this post.  Also, as I mentioned on my HDC post, I will be doing a webcast series on the Software Factories on Code To Live.

posted @ Friday, October 19, 2007 2:17 PM | Feedback (4)

Software Factories at Heartland Developer Conference

First, to all of you that attended my HDC presentation on Software Factories, THANK YOU!  I hope that as promised, the "Ah, Ha!" factor was high.  Also, I would like to apologize for the issues I ran into with the VPC and the demos.  I had tried the demo before with only two VS2005 instances running and had no issues with it...Apparently, four instances of VS2005 running concurrently is too much for VPC. Right after my presentation, I confirmed with Steve Loethen, a co-host of Code To Live, about coming up with the webcast series on Software Factories. I still to work out...

posted @ Thursday, October 18, 2007 8:01 PM | Feedback (2)

Microsoft Releases Popfly Public Beta

Today Microsoft is announcing that Popfly will be going into public beta.  So for those you that had requested to sign up for the beta, no worries!  You can automatically login without a hassle! (Pretty sweet, huh?) And for those of you that haven't signed up or don't know anything about it, just to go and login with Passport. Here's a brief description of what Popfly: It's a Silverlight 1.0 application to create a really slick UI that allows you to use drag-and-drop tools to build some cool things.  It also includes support for Vista Sidebar and Live Gadgets.  For those...

posted @ Thursday, October 18, 2007 6:45 PM | Feedback (0)

IronRuby: .NET Type Inheritance Via Extension Classes

A while back, I blogged some examples on how you can use .NET types within your IronRuby (IRuby) applications.  So after playing around with it a bit, I wanted to do something pretty basic, inheritance.  Here's what I tried:# Basic inheritance from a dynamic type # to a static type. class MyForm < System::Windows::Forms::Form end When you try running this through the interactive console, you get this error: System.InvalidOperationException: superclass must be a Class (DynamicType given) Nice and descriptive, huh?  Well, essentially this means that your superclass needs to be a type that IRuby can understand, that is a class-type of DynamicType.  While looking around at the source...

posted @ Tuesday, July 31, 2007 10:46 AM | Feedback (4)

How Many Classes Does It Take To Fully Represent A Real World Object?

Anybody?  Let's start this conversation and see where it goes?  David, I'm really interested on what you have to say about this!

posted @ Friday, July 27, 2007 12:46 PM | Feedback (4)

Is Your Project Suffering From An NCA?

A Non-Coding Architect (NCA) can be detrimental to the success of a project.  These Word/IvoryTower architects can be pretty dogmatic when it comes to standards and back-in-the-day methods.  A couple of weeks ago, I read this really great post that outlines ways you can spot out the dreaded NCA and gives you some pointers on how you can help alleviate the situation. It's a pretty good read so go check it out! Before I forget, the blog author, Frank Kelly, is a java developer so he uses some J2EE that you might not be familiar with and should check out if you...

posted @ Tuesday, July 10, 2007 3:31 PM | Feedback (0)

Heartland Developer Conference Presentation Submitted!

I submitted the title and abstract for my HDC presentation.  Here's the info: The Taming Of the Oracle: A .NET Developer's Guide to Working With Oracle In this session you will learn how you can use the Oracle Data Provider for .NET, Oracle Providers for ASP.NET, and Visual Studio tools to get the most out of your experience with Oracle.  If you're a .NET developer that needs to work with Oracle as your primary database, this is a session that will getyou up and running in time for your project. Is there anything else you guys want to find...

posted @ Friday, July 6, 2007 11:23 AM | Feedback (0)

Heartland Developer Conference, I'll be there. Will you?

That's right, I received word from Phil Wolfe earlier this week that I've been accepted to be a speaker (this is my third year!) for the Heartland Developer Conference in Omaha, NE on Oct. 18-19th.  If you check out the speakers page, you won't see my info there but I'm sure it's coming.  For those of you that like my presentations,  here's a list of topics I've been kicking around: .NET Tooling for Oracle - There's some applications out there that need talk with Oracle.  How do I make things as easily as possible to get my work done?...

posted @ Friday, June 15, 2007 11:43 AM | Feedback (0)

Quick Poll: Unit Testing Entities And DTOs

Alright, how many of you when unit testing your entities and Data Transfer Objects (DTOs), provide an interface for them?  For example, if you have the Person entity, do you have a corresponding IPerson interface?  Or do you leave the type as is?  I'm just curious to see what people are doing out there while doing TDD/Unit Testing. Please use the comment section to post your responses!  Thanks!

posted @ Friday, June 15, 2007 11:34 AM | Feedback (4)

eScrum for Team System

I just ran into this pretty nice tool called eScrum for end-to-end Scrum management that runs on top Team Foundation Server (TFS).  Pretty nice for those of you out there doing (or trying to do) Scrum and have adopted TFS.  Here's the info from the download page: eScrum is a Web-based, end-to-end project management tool for Scrum built on the Microsoft Visual Studio Team Foundation Server platform. It provides multiple ways to interact with your Scrum project: eScrum Web-based UI, Team Explorer, and Excel or Project, via Team Foundation Office Integration. In addition, it provides a single place for...

posted @ Friday, June 15, 2007 10:20 AM | Feedback (0)

A Software Architect's Duties

I've been reading the blog entitled, Coding the Architecture, for quite sometime now and I really enjoy the its content (you should definitely check it out).  Recently there are two entries dealing with responsibility and authority (from an SA's point of view) which hit close to home.  Unfortunately for me, I have responsibility without authority ... which as some of us know, that's not a good combination.  How can you be responsible for something you have no saying (authority) over what happens to it? Do any of you out there suffer from the same fate?

posted @ Thursday, May 24, 2007 3:07 PM | Feedback (0)

Silverlight Add-In for Reflector

Yesterday, Levi sent me a link to this add-in for Reflector that disassembles a Silverlight applications and shows your the JavaScript to run it.  I must say, it's a pretty nice little add-in (that includes its source) for Reflector.  Below is a picture of the disassembled Silverlight Airlines demo given at MIX '07: Check it out if you have the time, it's pretty sweet!

posted @ Tuesday, May 22, 2007 9:45 AM | Feedback (0)

Support for Subversion on CodePlex

From the looks of it (via Phil Haack), CodePlex will be supporting SVN (both svn.exe and TortoiseSVN) for all of their projects.  Here's the converstaion Jim Newkirk and Phil had: Haacked wrote Mon at 8:24 PM So I can download svn.exe from and manage my CodePlex source code repository, yes? So are you rolling out Subversion? Or a Subversion facade into TFS? Anything you can reveal? :) jimnewkirk wrote Mon at 7:41 PM To clarify: it's our intention to support the functionality of the command-line Subversion client as well as TortoiseSVN. jimnewkirk wrote Mon at 7:40 PM Phil,...

posted @ Tuesday, May 22, 2007 9:13 AM | Feedback (5)

ArcReady: Des Moines, Iowa

I would like to thank Denny, our breadth AE, for doing a great job at our first ArcReady event last Friday in Des Moines.  During the event, Denny mentioned that Des Moines will be a regular stop on the quaterly ArcReady visits.  If you would like to attend, please post your email on this post (through comments) and I'll make sure that Denny gets you added to the list.  Also, after the event, we held our first ArcCouncil event.  ArcCouncil is an open forum were we discuss various topics dealing with software development.  For example, the meeting started by...

posted @ Monday, May 21, 2007 11:11 PM | Feedback (0)

New Release of ASP.NET Futures CTP

I'm not sure how many of you out there are aware of the ASP.NET Futures section of the ASP.NET website.  Here's the description of the section from the website: ...contains an early developer preview of features providing a wide range of new functionality for both ASP.NET and Silverlight. The Futures release includes early experimental versions of features currently being considered for future versions of ASP.NET and the .NET Framework. The May 2007 Release contains the following components: ASP.NET AJAX Futures Silverlight Controls for ASP.NET Dynamic Data Controls for ASP.NET ASP.NET Application Services Dynamic Languages Support for ASP.NET (sans IronRuby,...

posted @ Thursday, May 17, 2007 6:30 AM | Feedback (0)

Technical Currently-Reading List

Ok, so I've just posted my current non-technical reading list so now here's my techinical currently-reading list: Programming Ruby: The Pragmatic Programmers' Guide, Second Edition - Dave Thomas, Chad Fowler and Andy Hunt I've been playing around with Ruby for quite some time now but I need a good reference book for it.  What other book to read than main source of Ruby knowledge out there!  After the announcement of the DLR (which I've downloaded already), I can't wait to do more of Ruby natively on .NET! Programming WCF Services - Juval Lowy Another great master work by Juval.  If you're currently doing WCF...

posted @ Monday, May 14, 2007 10:14 PM | Feedback (0)

Can We Build It?

Yes, we can! (Thanks, Bob!) ... this is a typical answer from project teams that get too involved with the how of their project.  To me, as a member of many good & bad projects, I care more about these questions: For who are we building it? Why are we building it? Are we fullfilling the needs of the customer?  Who's going to maintain it? As a developer/designer/architect/team member, we should be caring more about the needs & requirements of the customer than the way we use tools (Agile, .NET/Java, etc.) to try to solve the problem.  The moment we lose...

posted @ Saturday, May 12, 2007 11:17 AM | Feedback (2)

Converting Custom Collections To and From DataTable

Alright, so for our applications we have a couple of forms that use the DataGridView control to display tabular data (kinda of a common scenario for many business applications).  The data is returned from our services as an IList<T> in which we can just then bind directly to the grid by using the grid's DataSource property.  Pretty easy task...unless when it comes to sorting.  From the looks of it, Ayende has the similar problem that he's trying to overcome... At that point, our IList<T> doesn't cut it.  You could say, well, use an BindlingList<T> and override the ApplySortCore...

posted @ Wednesday, May 9, 2007 1:59 PM | Feedback (57)

Who's My Customer?

As an architect/developer/software professional I strive to produce the best product I can create within my environment.  In particular, I see myself as having two customers to please: the person who will use the product and the one that will maintain it. The person that will use the product day-in and day-out (should) cares about: The product meets her/his expectations Usability (is it easy to use?) Has little (or no) flaws/errors during operation It is delivered to them within the expected time Are involved with feature priorization & negotation As for the person that will maintain the product (should) cares...

posted @ Tuesday, April 17, 2007 10:28 PM | Feedback (0)

Third ASP.NET MVP Expert Chat: April 19th, 11:30 PST

That's right, we're at it again!  We're signed up to answer your ASP.NET related questions for two hours on April 19th at 11:30 PST (1:30 CST). The chat format is as follows:  You post your questions and the panel of experts answers them.  We're using the Microsoft Chat Software (MVP’s only, sorry!) to grab questions and answer them.  The first chat did not have this software working well and was kind of chaotic (MSN Messenger & Conference Call).  The software is now working, so it should be a very smooth flow of questions and answers.  We're still doing the conference call so that when...

posted @ Thursday, April 12, 2007 9:33 AM | Feedback (0)

WCF Performance Benchmarking

I've been meaning to blog about this for a while, but for some reason I keep forgetting (sorry, I've been busy at work).  If you're wondering on how WCF compares performance wise to existing distributed communication technologies (ASMX, WSE, Enterprise Services, .NET Remoting) you should definitely check out this white paper on MSDN: A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies

posted @ Tuesday, April 10, 2007 7:21 PM | Feedback (0)

ClickOnce and .NET Framework 3.0

We have this document generation app that uses WCF for connecting to our middle-tier server.  In order for users to run the application, they need .NET Framework 3.0 installed on their machines.  To accomplish this task, I decided to use ClickOnce since it will download the pre-requisites during the installation process.  However, when I tried publishing the application, to our intranet, I ran into this issue with the process: No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3.exe' in item '.NET Framework 3.0'. No 'PublicKey' or 'Hash' attribute specified for file 'NETFX30\Dotnetfx3_x64.exe' in item '.NET Framework 3.0'. Yeah,...

posted @ Tuesday, April 10, 2007 7:18 PM | Feedback (3)

ArcReady Tour Coming To Des Moines

That's right, if you're interested in learning about becoming a more effective architect, you should check out the ArcReady event that will at the Embassy Suites on May 18th (5/18/2007).  The theme for this ArcReady is entitled "Architecting for the User Experience", how does the role of user experience take part in architectural designs?  More specifically, how you can use WPF, WPF/e, XAML and the Expression suite to enhance your applications. If you have the time, you should check it out.  I'll see you there!

posted @ Friday, April 6, 2007 9:23 PM | Feedback (0)

COM Interop And WCF Services

Today, I spent the better part of my morning trying to troubleshoot a problem with COM interop within a WCF service. Here's the situation...  We currently have a legacy COM (VB6) component that creates a CSV file containing data needed to generate a PDF.  Unfortunately, we don't have the time to re-write this component to .NET, so we have to make due for now.    I first tried the component within a standard WinForm, and I was able to create/invoke it with no problems.  With this success, I proceeded to use said component within a WCF service so it could be exposed within our intranet (netTcpBinding). ...

posted @ Monday, April 2, 2007 5:11 PM | Feedback (4)

Microsoft Acquires TeamPlain

I know this is old news, but I'm extatic that Microsoft has acquired DevBiz and consequently, TeamPlain for TFS.  You can read more about it over at Brian Harry's blog. Back when I was evaluating TFS for work, I installed TeamPlain and was pretty amazed what the application did.  Back then, the licensing was ~$100 per client, but now that MS has acquired it, it's now FR-EE!! Check out the screen shot below to see TeamPlain's coolness:

posted @ Wednesday, March 28, 2007 10:51 AM | Feedback (0)

Too Busy

So, as some of you have noticed, I haven't blogged in about 10 days...and that's a little unsual for me.  After getting back from the MVP Summit, I tons of work that had piled up during my absense plus the work that I need to get done that week.  Needless to say, I was pretty swamped. To make matters worse, an enhancement that I had deployed prior to leaving for the summit had stopped working and no one could figure out why.  So, alas I spend the first half of Monday trying to dig through all the failed steps to...

posted @ Sunday, March 25, 2007 11:34 AM | Feedback (0)

TDD, I Think I Love You

So, a couple of days ago while sitting at the lobby of my hotel for the MVP Summit, I decided to come up with a simple Smart Client shell for the LOB Windows application my company uses. So there I am minding my own business when along comes Jean-Paul Boodhoo, James Kovacs, David Laribee, DonXML and ask what I was working on.  After some explaining of my intentions for replacing our legacy VB6 application with a brand new .NET one, JP couldn't resist the opportunity to do some TDD and Pair Programming. I must say, that I've always been of the...

posted @ Saturday, March 17, 2007 9:52 PM | Feedback (0)

Thanks, Paul Sheriff!

I would like to thank Paul Sheriff for taking the time to speak to our user group.  He did an excellent job on presenting an intro to OOP. In case you were not there, he has offered a free eBook for our UG members.  Go here, to get it. Once again, thanks Paul!

posted @ Wednesday, March 7, 2007 9:49 PM | Feedback (0)

Architecture: Why Use Workflow Foundation?

I was asked today if there's a metric for determining whether an business application should use Windows Workflow Foundation (WF) or roll its own workflow plumbing.  Here's my extended answer... As far as a metric of qualification, I can't say there is one (or that I have found one).  Besides deciding whether or not to  use a technology (or any type of plumbing) as an aide for development can't be (and shouldn't be meausered) by a number.  It's not the number of lines of code, methods, classes, assemblies, etc. that decide whether or not you should use workflow.  It all comes down to...

posted @ Monday, February 26, 2007 9:44 PM | Feedback (4)

ASP.NET MVP Chat Tonight!

By the way, I posted about this chat a while back.... but if you don't recall and are free tonight from 7-8 PM CST (8-9 PM EST, 5-6 PM West Coast Time), come check out our ASP.NET MVP Public Chat!  Check out the line-up of MVPs that are ready to answer your ASP.NET questions! You can join the chat by going to the MSDN Chat Center.

posted @ Friday, February 16, 2007 12:46 PM | Feedback (5)

IADNUG: Billy Hollis on Smart Clients

Last night, we had the privelege of having Billy Hollis present about Smart Client design at our monthly UG meeting.  We were able to book Billy through our membership with INETA. The presentation was pretty good since he covered alot of spects of smart client design, development and deployment.  The crowd was somewhat interactive and over all had a good time. Thanks Billy for talking to our group!

posted @ Thursday, February 8, 2007 11:47 AM | Feedback (0)

Currently Reading

Here's the list of books that are currently on my nigh stand: Godel Escher Bach: An Eternal Golden Braid Douglas R. Hofstadter Yep, it's that time again.  I read GEB  once a year to keep in touch with my inner ComSci geek.  If you're interested in theoritical concepts of Computer Science, then you definitely check it out! Joel on Software: And on Diverse and Occasionally Related Matters that will Prove of Interest to Software Developers, Designers, and Managers, and Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity Joel Spolsky I've been...

posted @ Sunday, January 28, 2007 3:29 PM | Feedback (0)

MSI Fun!

So, this is an 'archaic' method of doing a silent MSI install/uninstall but it worked for us! We have an "updater" VB6 applications that checks files on our test server and compares them to the files on your hard drive.  If the application detects a change, then it updates your file with the version on the server. This application only deals with OCXs, EXEs and DLLs.  Since our new environment is all .NET, I needed to add MSI packages to the list (I know I could've done a straight copy but I need to do some COM registration for interop). ...

posted @ Thursday, January 25, 2007 5:48 PM | Feedback (6)

DDD: Date Driven Design

When system design is based on the can we get it done in the given time factor.  Common conversations start out like If we only had a week to design the system, how would I... Nick posted a really good read that covers some of the same topics.  I particular like point that Getting Real makes on building half a product, not a half-ass product.

posted @ Thursday, January 18, 2007 4:42 PM | Feedback (1)

ScottGu on WPF/E, Orcas and IIS7

Check out this cool Channel9 video interview with Rory and ScottGu.  Should help light up some of the future paths the technology (ASP.NET and other MS Web Techs) are taking on the near future.

posted @ Sunday, January 14, 2007 6:46 PM | Feedback (1)

VS 2005 Add-in: Modeling Power Toy

I just downloaded the PowerToys for the Visual Studio 2005 Class Designer and Distributed System Designers.  The Class Designer has the following enhancements: Export Diagrams for Web Display Xml Comment Command Documentation Tool Window Filtering Appearance Filtering Lines Filtering Members Fast Navigation Interface Lollipop Labels Commands Inheritance Visualization Commands Show Type Command Association and Inheritance Line Dongles Type Creation Commands Add Member Commands View Class Diagram Command Improvements Go download this powertoy and start enjoying its goodness!

posted @ Thursday, January 4, 2007 10:14 PM | Feedback (3)

IADNUG Meeting: SQL Server 2005 is for Developers

Come join us tomorrow at our monthly .NET User Group meeting!  We'll have Richard Hundhausen, Team Foundation MVP & RD, present on SQL Server 2005! Also, we'll be discussing on severals ways the UG can get involved in helping keep the memory of Eric Jacobs alive. Hope to see you there!

posted @ Tuesday, December 5, 2006 8:53 PM | Feedback (3)

IList<T> or Collection<T>?

Not sure how many of you guys have experienced FxCop Rule# CA1002 : Do Not Expose Generic Lists through out your coding ventures.  I'm not sure what to think of it... In one hand, I see the flexiblity of returning the IList<T> type since there could be x-number of things that could implemented.  Thus not tying me up with a specific implementation such as List<T> or Collection<T>.  On the other, Collection<T> does allow you to override functionality and also implements IList<T>. The rule does mention that List<T> (IList<T>) is designed for performance and Collection<T> is designed for inheritance... What are your thoughts on...

posted @ Wednesday, November 29, 2006 1:09 PM | Feedback (8)

Vista and Office 2007 Downloads

If you have the time, check out these great downloads add-ons for VS2005. I already have .NET 3.0 framework installed on my laptop and ready to play with WF and WCF...this is just sweet!

posted @ Monday, November 20, 2006 2:13 PM | Feedback (27)

Design By Committee What's your take on it?

posted @ Monday, November 20, 2006 2:05 PM | Feedback (21)

Currently Reading

Essential Windows Workflow Foundation This is book is a really, really, really good read.  The authors (both architects of WF) do a really great job of breaking down the concepts of what "makes up" a program...a basic approach they took into consideration when designing WF.  If you're planning on using .NET 3.0, this is a worthy investment.

posted @ Tuesday, November 14, 2006 9:30 PM | Feedback (6)

Oracle Database Provider & NUnit

While trying to get our ci build to work, we ran into problems with the Oracle .NET Provider and NUnit.  For some reason, there seems to be a threading issue with the provider and the way TestDriven .NET and UnitRun execute unit tests. In particular, the OracleConnection object, when you specify the string to be null or empty, an InvalidOperationException should be thrown.  However, this is not the case...the exception is never thrown!  If you run the unit test by it self, then the exception is thrown as expected.  Weird. Have any of you run into this issue with the Oracle...

posted @ Tuesday, November 7, 2006 10:34 PM | Feedback (1)

.NET Framework 3.0 RTM

That's right, if you're planning on doing some development with the .NET Framework 3.0, you don't have to use CTPs, any more!  They've shipped the product!  This is the beginning of a brand new approach of application development for the Windows platform.  Great job, teams!

posted @ Tuesday, November 7, 2006 9:39 PM | Feedback (12)

Heartland Developer Conference

First and foremost, thanks to all of you that attended my presentation!  We had a great crowd that was eagered to learn more about the inner workings of ASP.NET.  Second, I would like to apologize for my buggy demo.  Like I mentioned during the error, I moved the database file containing the content from my desktop to a folder under the C-drive so my connection string got hosed.  I didn't take the time to check the demo to its entirety before showing it.  My apologies. If you would like to get the demo code for the presentation, you can do...

posted @ Monday, October 30, 2006 11:45 AM | Feedback (7)

Pragmatic Architecture

Ted Neward is creating a new colun on MSDN that outlines the content of his presentation on Pragmatic Architecture.  You can check out an intro for the series, here. I was able to see this presentation at TechEd this past summer and it was pretty good.  If you would like to see the webcast, you can do so here.

posted @ Thursday, October 26, 2006 9:01 PM | Feedback (330)

Oracle OpenWorld: Oracle Develop

Oracle Develop is the "developer"part for the OpenWorld conference.  Remember, when I blogged about it couple of days ago?  Yeah, I was pretty much in the same room for hours listening on how I can use their .NET tools to make things easier for developers.  Verdict?  Un-impressed.  Why?  Well, most of their content was the same content you can find on their website.  The only things that made it ok was that I was able to talk with the developers of the product and discuss some of the issues/enhances with the product.  I was also pleased to find out that they're planning...

posted @ Thursday, October 26, 2006 9:00 PM | Feedback (4)

Oracle OpenWorld: A Stranger In A Strange Land

So, I'm at Oracle OpenWorld in San Francisco this week to learn more about how we can leaverage our Oracle backend through .NET.  As some of you might now, MS provides a "built-in" Oracle ADO.NET provider within the .NET Framework.  If you didn't know, Oracle also provides their own managed ADO.NET provider that communicates natively with your Oracle db resources.  They also provide something called Oracle Tools for VS.NET (OTDN), that is a series of add-ins for VS2005|2003 that allow you to connect, modify, debug and query your Oracle database.  The ADO.NET provider and OTDN are free for download. So,...

posted @ Tuesday, October 24, 2006 11:59 AM | Feedback (7)

The Onion

So yestereday I'm reading my daily RSS feeds when I encounter Ted Neward's post on a comment that Scott Hanselman made during the p&p Summit in Redmond.  After reading this post, I shot Nick a message asking him to read it and see what his toughts were on can find his response here. I couldn't agree more with Scott, Ted and Nick.  Here's why ... In my old Java dev days, we utilized a lot of open source technologies (Http Commons, log4j, Bouncy Castle, etc.) to help speed up our writing of code (just as Scott did with log4net).  The company I...

posted @ Wednesday, October 18, 2006 1:28 PM | Feedback (2)

Types, Generics and Enums

Mike Stall has a really sweet post in he discusses some differences between conventional calls using the Object type and generics to casting for you within factory methods (Type CreateType() ).  Worth the read if you're using generics beyond the traditional collection samples.

posted @ Tuesday, October 10, 2006 9:14 PM | Feedback (2)

Unit Test Framework Comparison

Roy Osherove has a great comparison of the popular unit test frameworks for .NET (MbUnit, NUnit and Team System Unit). I have to agree that for general testing purposes the standard is NUnit.  Once you've grasped NUnit, MbUnit is a logical transition.

posted @ Saturday, September 23, 2006 9:58 PM | Feedback (2)

Surround SCM & CruiseControl.NET

Quick question: Are any of you using Seapine's Surround SCM along with CruiseContro.NET within your CI solution?  Just want to know if there are some things I should look out for if going with this approach. Thanks!

posted @ Saturday, September 23, 2006 5:37 PM | Feedback (2)

Hanselminutes: Mock Objects

Well, looks like Nick beat me to the post! If you're doing Unit Testing or TDD, this is a great installment of Hanselminutes you should not miss!  Scott has always done a great job with putting just the right amount of content to keep the listener interested and productive.  This is not just me saying it, but Chris Sells too! If you want to learn more about unit testing and being test driven, you should also check out this other Hanselminute.

posted @ Thursday, September 14, 2006 12:22 PM | Feedback (2)

CruiseControl.NET Configuration Tool

I just stumbled into this project, CCNETConfig, while looking through CodePlex earlier this evening.  I have not looked into this tool (since I don't have CC.NET installed on this laptop) but seems like something that could be very useful to those using CC.NET at their shops.

posted @ Wednesday, September 13, 2006 9:53 PM | Feedback (2)

Deleting Projects from Team Foundation

I've been doing a lot of playing around with Team Foundation for the past couple of weeks and in the mean time I've created a lot of test* Team Projects. When I decided to clean up some of these test project, I thought the logical thing and went to delete them through Team Explorer.  Well, as soon as you do that, you will run into this nice little message: Use the Project Creation Wizard in Team Explorer to create a project or the TfsDeleteProject tool to delete one. Being a huge fan of the command line, this is not an issue for me. ...

posted @ Wednesday, September 13, 2006 1:55 PM | Feedback (3)

Continuous Integration with Team Foundation Server

Today I started to setup Continuous Integration (CI) with Team Foundation Server (TFS).  Unfortunately, TFS does not support it out of the box; however, it does support functionality for you to hook-up into event sinks for comment server operations (Checkin, WorkItem assignment, etc).  So, I Googled for "continuous integration team foundation" and ran into two really good posts by Jeff Atwood [post] and Daniel Cazzulino [post]. I particurlaly like solution that Jeff's post gives you, because he has added the page that kzu (Daniel) created and incorporated into his CI webservice.  I wanted to take the solution even further by adding the automatic addition...

posted @ Monday, September 11, 2006 9:49 PM | Feedback (3)

Team Foundation Tooling on CodePlex

I ran into Buck Hodge's post on TFS tools on CodePlex and I must say that I'm pretty impressed with the selection of free tools out there. In particular, I like the Code Review Workflow and Automaton offer.  I played with Automaton today and for what is "there" it's not too bad.  There is still some room for improvement but it gives implementers a pretty nice start to allow developers to kick start a build.  As for Code Review Workflow, that's on the books for another day. Another two projects to look at and consider are Source Code Tree Browser (this is...

posted @ Friday, September 8, 2006 2:19 PM | Feedback (2)

Quick Poll: Team Foundation Server

How many of you out there are running Team Foundation Server?  If you are, have you done anything to customize work items, policies or processes?

posted @ Thursday, September 7, 2006 8:52 PM | Feedback (2)

Design Question: Business Logic

Where does/should it live?  Middle tier (.NET/Java/Other technology) or data tier (SQL Server/Oracle/DB2)? Talk amongst yourselves.  I'm curious to find out what you have to say!

posted @ Wednesday, August 30, 2006 9:45 PM | Feedback (5)

SOA and Reuse Opinari

David Chappell has posted his latest opinari entitled SOA and the Reality of Reuse.  Over all a pretty good read since it helps to demystify theoretical SOA from applied SOA.  While reading the opinari, I came to the realization that people considering SOA should we asking the question: what are you really trying to do now? As an added bonus, David Ing has posted his own thoughts on the opinari; also a very good read.

posted @ Wednesday, August 30, 2006 6:13 PM | Feedback (1)

OO Overview and Static vs Instance Methods

My good friend Tim Gifford has a pretty nice write up on object-orientation and the always popular, "static vs. instance" methods.  Here's something I would like to comment/add-upon to his post: Tim mentions, Because when you're agile, you must be able to make changes quickly without affecting the system. In order to do that, you need to reduce (or eliminate) duplicate code and minimize coupling. I will have to say that this statement holds true for more than just agile developers.  If you're doing any type of component based development or have incorporated some higher-level abstractions into your code,...

posted @ Monday, August 28, 2006 9:09 PM | Feedback (2)

Modeling Tools

Currently in the process of looking at different modeling tools (data, objects, applications, etc.) that we can use for the development of our new system.  What type of tools have you used to create your data, domain and business process layer?  Any input is appreciated!

posted @ Friday, August 25, 2006 8:45 PM | Feedback (3)

Calling VB6 Dlls from .NET Clients

Last week at work, I was asked about how one would go about displaying forms that are hosted within a VB6 ActiveX DLL.  The first thing that went through my mind was, “Why would you?” … well, the DLL was “legacy” code that couldn’t be ported to .NET due to time constraints.  So, how do you do it? Well, if your DLL displays any forms (aka calls the Show method on them), you will throw a COMException.  What’s the COM exception for?  The issue outlined in this KB Article.  Here’s a quick summary of the issue from the KB article: Modeless forms displayed...

posted @ Monday, August 7, 2006 10:27 PM | Feedback (2)

Currently Reading

Here’s a list of the books I’m currently reading: Technical – Developer Professional .NET Framework 2.0, Joe Duffy, WROX Press I previously posted about this book...yeah, I'm still reading it. Been busy with the baby. Technical – Architect Applying Domain-Driven Design and Patterns: With Examples in C# and .NET, Jimmy Nilsson, Addison-Wesley I really enjoy reading Jimmy's blog and knew about the book for quite some time. While at BN, I saw it and started reading it. After a while, I realized that I was already halfway done with chapter one. I just had to have it. Pretty great read specially if you're read the PoEAA...

posted @ Sunday, July 23, 2006 11:03 PM | Feedback (0)

Service Versioning in WCF

Here’s a really good post (with a flow chart!) in which Craig McMurty describes the steps and scenarios you should consider when making changes to your WCF contracts (service, message or data).

posted @ Sunday, July 23, 2006 9:35 PM | Feedback (0)

Interested in learning the different disciplines of system architecture as well as perspectives on building successful systems?  Check out!  Ron Jacobs has created an excellent resource to help aspiring architects get training and good reading. I first found out about Skyscrapr while attending Ron’s presentation at TechEd this year.  Check it out!

posted @ Wednesday, July 19, 2006 9:43 PM | Feedback (0)

IADNUG Post-It Discussions

Tonight we had our first Post-It discussing meeting.  Here’s the jist of it from our member’s email We're trying something a little different for this month's meeting. At the beginning of the meeting, you will be given a post-it note and asked to write down 3 topics that you're currently interested in and would like to discusss. We'll collect the post-it notes and form discussion groups based on their content. Anybody interested in the related content is encouraged to discuss/learn/share within the group. Also, each discussion group will have a recorder that will write the ideas discussed within the group. These ideas will...

posted @ Wednesday, July 12, 2006 10:27 PM | Feedback (0)

IsOneWay Property for WCF Operations

Kenny Wolf has a very good post on which he describes the reasons for setting the IsOneWay property of your OperationContract attribute to true.  If your operation has void return type, mark it with IsOneWay so … The service will release the connection (or complete the HTTP request/response by replying with null, etc) before dispatching to user code. If the operation is not marked with IsOneWay then our Dispatcher won’t reply until the Operation has completed An important thing to know if you’re want to your application to perform well by using the old “fire and forget” idiom.

posted @ Friday, July 7, 2006 9:49 PM | Feedback (2)

CRINETA Presentation: .NET Enterprise Services - Post Mortem

I would like to thank the CRIneta Admin group for allowing me to come and speak to their fine group.  Nick tagged along for a night filled with pizza, demos and prizes.  Thanks for the great time, guys! During the meeting, Greg asked for information on performance between .NET Remoting and Enterprise Services, I told him of an article on MSDN that covered that topic (actually, I found two): .NET Enterprise Services Performance Performance of Web Services, Enterprise Services, and .NET Remoting.

posted @ Tuesday, June 6, 2006 10:05 PM | Feedback (0)

CRINETA Presentation: .NET Enterprise Services

I will be presenting an overview of .NET Enterprise Services at the Cedar Rapids .NET User Group (CRINETA) this coming Monday, June 5th.  If live around the Cedar Rapids area, stop by and check out the show. Due to time constraints, I will have to cut short (if not all out) some of the demos I did for the IADNUG meeting this past month.

posted @ Wednesday, May 31, 2006 10:41 PM | Feedback (0)

CSS Control Adapter for ASP.NET 2.0

Should it blogged about it last night!  ScottGu has a great post on the new CSS Control Adapter Toolkit for ASP.NET 2.0.  This control adapter gives CSS-friendly capabilities to pre-excisting ASP.NET controls (Menu, TreeView, DetailsView, FormView and DataList). Pretty nice way to hook into the new Control Adapter Architecture for ASP.NET 2.0. Check it out if you got the time.

posted @ Wednesday, May 3, 2006 3:00 PM | Feedback (3)

MSF Agile Process Guidance

For those who care about MSF (not, it’s not Spiral + Waterfall anymore!), you can download the MSF Agile Process Guidelines and see how Team Foundation Server helps you to align your development process to MSF Agile or a Scrum process.

posted @ Monday, March 27, 2006 8:17 PM | Feedback (19)

Scrum for TS v1.0 Released

For those of you out there that are Scrum fans, check out the Scrum for Team System download from Conchango.  It’s free and from the looks of it, pretty cool.

posted @ Monday, March 27, 2006 7:17 PM | Feedback (6)

Nice Software Factories Write Up

Found this really good write up on Software Factories (SF).  If you have the November 2005 CTP Release for Visual Studio 2005, you can build the sample in the article.  This is pretty good implementation of a SF.

posted @ Tuesday, March 21, 2006 8:59 PM | Feedback (7)

Are you SPOILed?

Ok, that was a stupid title.  But hey, I’m not a comedian. Just finished looking through the Stored Procedure Object Interface Layer (SPOIL) write up on MSDN’s Solution Architecture Center.  SPOIL allows you to declaratively link a method with the same signature as the stored procedure (except using BCL types) together.  For example,  take this stored procedure sample: CREATE PROCEDURE [dbo].[SendLog_Update] (@BatchId uniqueidentifier,@PartnerId nvarchar(50),@Mailbox nvarchar(50),@RootName nvarchar(100),@Directory nvarchar(100),@StartPackaging datetime,@TotalBytes bigint, @SendBytes bigint) … To something like this in code: [SqlCommandMethod(CommandType.StoredProcedure, "SendLog_Update")]public int SendLog_Update(    Guid BatchId,    [SqlParameter(50)] string PartnerId,    [SqlParameter(50)] string Mailbox,    [SqlParameter(100)] string RootName,    [SqlParameter(100)] string Directory,    DateTime StartPackaging,    long TotalBytes,    long SendBytes){ ... } Kinda different, huh?  Check it out and let me know what you guys think!

posted @ Tuesday, March 21, 2006 8:50 PM | Feedback (17)

Visual Studio Team System Server (VSTS) Released

Those of you with an MSDN subscription can now download the workgroup edition of VSTS!  And if you’re wondering, yes it runs on a P3 900 Mhz with 512 RAM.  ;-)

posted @ Monday, March 20, 2006 9:54 PM | Feedback (2)

Integration for Applications

How many of you out there have to deal with integration within your applications?  By integration, I mean either logic or data.  When it comes to logic integration, your application calls a local/external service to perform logic that’s not part of the system.  For example, in your business process, you call an external web service to perform a computation with your data.  As for data integration, your application takes data that’s been processed and moves it to necessary data stores (database, files, etc.) that need it.  An example of data integration is the replication of data accross data stores or the...

posted @ Wednesday, March 8, 2006 10:43 PM | Feedback (9)

.NET Pet Shop v4: ASP.NET 1.1 to 2.0 Migration

The new version of the .NET Pet Shop shows you how to migrate a v1.1 application to v2.0 of ASP.NET.  Cool conversion features are the use of System.Transactions instead of Serviced Components, strongly typed collections to generic collections and extending the new membership modules. You can dowload an MSI to install the source and the related databases. Pretty good stuff!

posted @ Tuesday, February 14, 2006 9:26 PM | Feedback (18)

Design Patterns: Yahoo! Style

To me (the web developer) this is pretty sweet.  I like how they apply a design name for features found accross websites.  For those web developers out there, what do you guys think? They should submit these to PatternShare!

posted @ Tuesday, February 14, 2006 8:14 PM | Feedback (10)

WCF and WS-ReliableMessaging

This is a pretty good read from the WCF Forums.  Check it out.

posted @ Wednesday, February 8, 2006 9:18 PM | Feedback (3)

Do you use a framework?

How many of you out there (in the Des Moines area) use a framework/architecture to simplify your development efforts? Just trying to do a quick poll.

posted @ Thursday, February 2, 2006 8:28 PM | Feedback (5)

Another Book On My List

I need to add this book to my “to-read” list…

posted @ Thursday, January 26, 2006 10:10 PM | Feedback (11)

Service Orientation Tenet #1: Share schemas and contracts, not types and classes

I’ve been answering some questions on Google Groups dealing with ASP.NET web services. In some of the questions, people asked, “How do I send a <insert-user-defined-type-here> that’s in <insert-language-here> to a <insert-another-language-here> client?” Or, “Should I send a DataSet/XmlDocument/String to my client for my complex type?”. Clearly, there’s some confusion (or misunderstanding) about how types are represented in the service world. The purpose of this post (along with the proceeding three) is to share the basics principals outlined by the tenets of Service Orientation. I will present the tenets in no particular order…the reason I started with Share...

posted @ Friday, January 6, 2006 3:07 PM | Feedback (2)

Computing Bricks

Jimmy Nilsson has posted some good information about the coping of extreme loads and extreme scalabily.  Check out his first of may Computing by Bricks.

posted @ Tuesday, January 3, 2006 9:07 PM | Feedback (0)

No Longer Professional...

…but Architect. Booyah!

posted @ Friday, December 23, 2005 11:02 PM | Feedback (2)

WCF to SCA Comparison

Looks like Jeff has beat me to the post.  For those interested, David Chappel has posted a really, really good comparison between WCF and Service Component Architecture (SCA).  Hopefully this should simplify the creation of web services on the Java platform by providing a platform/technology all vendors can agree on.

posted @ Thursday, December 22, 2005 8:51 PM | Feedback (2)

Google Groups: Software Architecture

I created a new Google group called Software Architecture.  It’s purpose is to be used as a place on which we can share ideas abouts design patterns, development methodologies, design processes and new trends in software development. If you’re interested in joining, check it out!

posted @ Friday, December 16, 2005 10:24 PM | Feedback (2)

New Software Factories Book

Jack Griendfield, Keith Short and Mauro Regio are planning on writing a book called, Software Factories Applied.  This book will be a complement to the original Software Factories book and will show how to create SFs with the DSL Tools, GAT and VSTS. I can’t wait to read it!

posted @ Friday, December 9, 2005 8:10 PM | Feedback (2)

Channel9 ArcTalk: DSLs and Software Factories with Steve Cook

For those of you out there that are fans of Channel 9, have you seen their new line-up of shows?  I checked out this conversation between Ron Jacobs and Steve Cook about DSLs and Software Factories.  If you’re wondering what software factories are and if they can make your life easier, check the podcast out.

posted @ Monday, December 5, 2005 10:13 PM | Feedback (0)

Enterprise Service Proxies

According to GoF a proxy is a surrogate or placeholder for a another object to control access to it.  The text later goes on to explain that a reason for controlling access to an object is to defer the full cost of its creation and initialization until we actually need to use it.  Makes sense doesn’t it?  A proxy is nothing more than a light weight way of accessing an object (regardless if it lives in the same address space as the caller). Recently, for one of our work projects, we’ve been using a lot of Enterprise Services (ES) in order to...

posted @ Tuesday, November 22, 2005 10:07 PM | Feedback (7)

AOP: A .NET Remoting Version

A while back, Nick posted how you can use the Spring .NET Framework to have Design by Contract with AOP.  I’ve been talking to him about you can do the same thing using a .NET remoting proxy to your object and intercept the calls to your objects.  To do this, I needed three classes: An attribute to initialize the attaching at class level for wiring the AOP guts, a class that wires up the AOP guts and a sink that performs the interception.  This is a modified version of Nick’s code: using System;using System.Reflection;using System.Runtime.Remoting.Activation;using System.Runtime.Remoting.Contexts;using System.Runtime.Remoting.Messaging;namespace Lozanotek{        public interface IEvaluator    {        bool Evaluate(object arg);    }    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]    public class PrologAttribute : Attribute    {        private int index;        public IEvaluator evaluator;        public PrologAttribute() { }        public PrologAttribute(int index, Type evalType, params object[] args)        {            this.Index = index;            Object obj = Activator.CreateInstance(evalType, args);            if (obj != null)                this.evaluator = obj as IEvaluator;        }        public IEvaluator Evaluator        {            get { return evaluator; }            set { evaluator = value; }        }        public int Index        {            get { return index; }            set { index = value; }        }        public bool Evaluate(object arg) { return evaluator.Evaluate(arg); }    }    public class StringLengthEvaluator : IEvaluator    {        private int min = 0;        private int max = 0;        public StringLengthEvaluator(int min, int max)        {            this.min = min;            this.max = max;        }        public bool Evaluate(object arg)        {            int len = arg.ToString().Length;            return (len <= max) && (len >= min);        }    }    [AttributeUsage(AttributeTargets.Class)]    public class AOPClassAttribute : Attribute, IContextAttribute    {        public void GetPropertiesForNewContext(IConstructionCallMessage msg)        {            msg.ContextProperties.Add(new AOPProperty());        }        public bool IsContextOK(Context ctx, IConstructionCallMessage msg) { return false; }    }    internal class AOPProperty : IContextProperty, IContributeServerContextSink    {        public AOPProperty() { }        public void Freeze(Context newContext) { }        public bool IsNewContextOK(Context newCtx) { return true; }        public string Name         {            get { return "AOPProperty"; }         }        public IMessageSink GetServerContextSink(IMessageSink nextSink)         {             return new AOPMessageSink(nextSink);         }    }    internal class AOPMessageSink : IMessageSink    {        private IMessageSink next;        public AOPMessageSink(IMessageSink next) { = next; }        public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { return null; }        public IMessageSink NextSink         {             get { return next; }         }        public IMessage SyncProcessMessage(IMessage msg)        {            bool proceed = true;            if (msg is IMethodMessage)            {                proceed = Invoke(msg as IMethodMessage);            }            return (proceed) ? NextSink.SyncProcessMessage(msg) :                new ReturnMessage(null, null, 0, null, (IMethodCallMessage) msg);        }        private bool Invoke(IMethodMessage msg)        {            bool results = true;            MethodBase method = msg.MethodBase;            Type attrType = typeof(PrologAttribute);            PrologAttribute[] prologs = method.GetCustomAttributes(attrType, true) as PrologAttribute[];            if (prologs != null)            {                foreach (PrologAttribute pl in prologs)                {                    if (pl != null)                    {                        IEvaluator eval = pl.Evaluator as IEvaluator;                        if (eval != null)                        {                            object[] args = msg.Args;                            results = eval.Evaluate(args[pl.Index]);                            if (!results) { break; }                        }                    }                }            }            return results;        }    }    [AOPClass]    public class Person : ContextBoundObject    {        [Prolog(0, typeof(StringLengthEvaluator), 0, 5)]        public void SayHello(string name)        {            Console.WriteLine("Hello {0}", name);        }    }    class Program    {        [STAThread]        static void Main(string[] args)        {            Person p = new Person();            p.SayHello("Javier");            p.SayHello("Jav");                        Console.ReadLine();        }    }} If you have any questions or comments, let me...

posted @ Monday, October 31, 2005 10:19 PM | Feedback (3)

Software Architecture: What's your take on it?

I like software architecture (sa).  Why?  Because it really makes you think about your current problem domain (requirements) and how you should go about solving it through the use of abstractions (models, diagrams, documents, source code, etc.).  When thinking about sa, you should not attach a tool (a language, framework, pattern) to a name (C#, Java, .NET, J2EE, MVC, etc).  Just keep it simple and abstract.  I don’t want to get preachy about it, just sharing my point of view. What got me thinking this way?  Well, it all started with this site.  After getting addicted to the content, I bought this...

posted @ Friday, October 28, 2005 7:00 PM | Feedback (0)

Generic Code: Continued...

Ok, well first and foremost, I would like to apologize for my delay of this post. Lately work has been sucking my brain dry!! When I get home, I just want to stare at a wall and pretend the pain is gone.  Don’t get me wrong, I love what I’m doing right now, but I get so deep into it that it even haunts my dreams!! What is this haunting?  Well, it’s Enterprise Services.  I’ll get to the reason in just a bit.  The code I posted a while back asked a simple question, what does the code output?………Bueller? Bueller? Bueller?...any one?...

posted @ Tuesday, September 6, 2005 10:24 PM | Feedback (0)

Article On Performance For ASMX, ES and .NET Remoting

While doing some of my ES research, I bumped into this article by Richard Turner, PM for Distributed Systems Group, and Ingo Rammer from thinktecture.  This is a great read for those of you that are evaluating which technologies to use for their enterprise.  They also compare the passing of [Serializable] objects and DataSet objects across your services. Ok, on a side note why would you want to pass a DataSet across your layers?  Let me see…Oh yeah! I want my performance to suffer due to the extra work serializing all of the internal objects!!

posted @ Monday, August 22, 2005 9:38 PM | Feedback (0)

Principles Of Service Design Articles On MSDN

John Evdemon has posted a series of articles covering different aspects of Service Design.  The first article entitled, Service Patterns and Anti-Patterns covers the basic SO tenants and patterns and anti-patterns for effective web service design.  The  second article, Service Versioning talks about versioning schemas for your web services.  Good reads all around!

posted @ Monday, August 22, 2005 9:18 PM | Feedback (0)