Interesting articles on software architecture

Some interesting looking articles on the topic of Software Architecture. Via Vasters Clemens Blog I liked all of the presentations Clemens did at Tech-Ed 2003 (except the AOP one which I haven’t looked at yet). His “back to basics” approach on process models and distributed computing made a lot of sense to me, As did the idea of layering different elements from the microsoft developers tool-bag (an web service interface to an enterprise services component for example) to combine the best aspects of different technologies. »

GDI+ FAQ

MVP Bob Powell has a useful looking GDI+ FAQ located here http://www.bobpowell.net/faqmain.htm George Shepherd form Syncfusion has a very comprehensive Windows Forms FAQ with some GDI+ stuff also http://www.syncfusion.com/FAQ/WinForms/ . »

DotNetWidgets

I got an email from Tim Dawson today. Tim is the author of a number of cool windows forms controls which he makes available on his web site at http://www.divil.co.uk/net/ . The reason for Tim’s email is somewhat embarassing. It seems that in one of my codegen apps I have neglected to mention the DotNetWidgets UI library of Tim’s which I have used (it’s part of the license agreement that you include a mention in your app’s about box, or help file, and I did neither). »

Stored Procedures vs. Dynamic SQL

I’ve read a couple of arguments for and against stored procedures vs. dynamic SQL.

http://weblogs.asp.net/rhoward/posts/38095.aspx

http://weblogs.asp.net/fbouma/posts/38178.aspx

http://weblogs.asp.net/RHoward/posts/38298.aspx

http://dotnetjunkies.com/WebLog/seichert/posts/3698.aspx

Here is my take.

Stored procedures are your methods against the “database” object. You write stored procedures for all the same reasons you add methods to objects (rather than manipulating the object internals themselves). If you want to change some aspect of the internals of the database, the only place you have to look to see what impact this will have is in your stored procedures. It gives you encapsulation and abstraction. Simple CReate-Update-Delete statements are generated for you. Wrapper classes for your stored procedures are generated. When you write a new procedure you re-generate your data tier. The only place where stored procedures fall down a little is writing performant ones that allow you to search tables on a large number of criteria, however there are code generation ways around this too. As I said in my comments on Rob Howard’s orriginal post I love stored procedures and couldn’t really imagine writing database driven apps without them, so I might be biased. 

Comments

Iwan Bel
Doesn’t CRUD stands for Create Read Update Delete?

So what about simple select statements?

Iwan
18/11/2003 5:33:00 PM
JosephCooney
Iwan - Yes, SELECT statements are missing from that list and can be generated like the others. Thanks for keeping me honest.
19/11/2003 6:43:00 AM
Skin
Doesn’t CRUD stands for Create Read Update Delete?
26/02/2004 4:27:00 AM

»

My templating code generator is up on GotDotNet

My latest “fun” project has been a templating code generator that hosts the ASP.NET runtime, and uses XML as it’s native data format. It took a long time to get it from “proof of concept” to working properly, but it is done now and up on GotDotNet. It’s called m3rlin (like the wizard, but with a high-tech name). It basicly loads an XML document, passes the XML to the ASP.NET runtime, runs your template (an ASP. »

Miguel on the PDC

Miguel’s PDC Notes are available here. I admire and respect the MONO guys, but I cannot think that it would be somewhat disheartening to see all this new stuff coming out, and knowing that you’re going to have to try and re-implement it all with 1/10th of the developers or less (I’m only guessing at the numbers here). After reading a couple of posts a while ago on Monologue about porting DasBlog to MONO I’ve started to try to be more “MONO-aware”, like using System. »

MCAD Tests...could Chris Sells pass one?

Snip from Rory Blyth’s entry about the recent Portland Nerd Dinner. I think the best quote of the night, though, goes to Jim. We were talking about various MS certifications when Chris (Developmentor, MS, author, etc.) with his bubbling enthusiasm asked, “So, what about me? Could I pass these ‘MCAD’ tests?” Jim looked at Chris with a solemn eye. “Well,” he began, with the paternal look of concern for a wayward son on his face, “there’s a lot of real world stuff in those tests…” Chris let his gaze drop to his lap, where it remained for a moment before conversation continued, albeit a little uneasily. »

Separating UI code from everything else

For some time now I’ve been trying to improve the seperation of my application code from the user interface (sometimes with more success than others). This is a known good practice, and yet I regularly see code (yes, even code that I’ve written) where business logic has “leaked” into the UI.  A useful “thought experiment” I often use is “How much of this code would I have to change if I wanted to re-write this as a console application?” (or whatever UI type I’m NOT using in the current app I’m writing). A number of times I think this has helped put things in perspective for me, or at the very least be more explicit about my assumptions. Recently I finished working on a small-ish utility of my own and decided it would be useful if there was a command line version. I was fairly pleased with the results - I ended up moving one method from the UI (which really didn’t belong there) down into the “business” tier. I was equally pleased when I saw almost no duplicated code between the console UI and WinForms UI. I would reccomend it to anyone who would like to REALLY see how de-coupled their UI is from their business objects.

Comments

Mark
Agree. This is a "best practice" that we try to stick to as much as we can. If time is an issue, at least put the business logic in another class within the same project. This will give the option of separating the business tier out later on.
10/11/2003 9:37:00 PM
Paul
Hi, Joseph. Try the Microsoft User Interface Application Block. It uses the Model-View-Controller pattern and it really rocks
11/11/2003 9:52:00 AM
JosephCooney
Yes Paul, I’ve been meaning to check that one out for a while now. Until I do I can’t say how much it helps keep the seperation explicit, altho I’d hazard a guess that it will still take developer vigilance to keep the two seperate.
11/11/2003 10:02:00 AM

»