Fowler Architectural Patterns

I read the 1st couple of sections of Fowler’s Patterns of Enterprise Application Architecture.  I had trouble grasping his description of Transaction Script so I went ahead and built a project in C#.  I noticed a coupld of things.
 
1) APplication architecture is more about interfaces.  For example, the complex business logic in the Domain Logic Layer is found in RecognitionService.CalculateRevenueRecognition.  Instead of coding the logic in an Select…Case phrase, you can call a stored procedure and have the logic calculate on the database.  Is the application no longer Transaction Script?  If the function’s interface did not change, I would think it is still TS.  Hwoever, the logic is actaully on the data layer – or can part of the data tier have the domain logic?  I don’t see why not because the UI tier often holds the Domain Logic in fat-windows solutions.  ALso, I carved out the domain logic classes from the UI project to it’s own project in the solution.  Did I change the application architecture?
 
This got me thinking about 2-tier and n-tier use cases:
 
UI & DL & DB | SPS & DT where SPS only does CRUD to DT = n-tier
UI & DB | SPS & DT where SPS does CRUD and DL = 2-tier
UI & DB | SPS for CRUD, SPS for DL, & DT = 2-tier
 
Also, I am looking for patterns about types of Business Logic.  Fowler defines Domain Logic and Application Logic.  I don’t know to put rules regarding security  – is that another area, or layered in these 2 buckets.
 
More questions than answers at this point
 
 
 

LINQ To SQL – Part 01

I started playing around with LINQ to SQL This AM.  I tried to enumerate all of the running processes on my machine using the following LINQ:
 

var

query =

from p in System.Diagnostics.Process

.GetProcesses()

select new

{p.SessionId.ToString(), p.ProcessName};

ObjectDumper.Write(query);

  

and I got the following error:
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
An anonymous type must be declared with a member assignment, simple name, or member access.

Apparently, you need to have real variable names for each property you create (note the bold):

 

select

 new {sessionId = p.SessionId.ToString(), p.ProcessName};

Did the trick

 

Christmas Project Part 3

I did not complete the project – spent my December studying for MCPD Upgrade exams.  I am now offically a
 
So I have 2 exams in 2009 to upgrade to 3.5.   This means less time for fun coding and more time on WF/WCF/WPF and LINQ.  Oh well, if I get back to the project, I will post progress here