<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Shawn Recinto</title>
	<atom:link href="http://srecinto.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://srecinto.wordpress.com</link>
	<description>Its all about Me.  Me Me Me.</description>
	<lastBuildDate>Fri, 13 Nov 2009 20:53:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='srecinto.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Shawn Recinto</title>
		<link>http://srecinto.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://srecinto.wordpress.com/osd.xml" title="Shawn Recinto" />
	<atom:link rel='hub' href='http://srecinto.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Simple 3-Tier Architecture</title>
		<link>http://srecinto.wordpress.com/2009/11/13/simple-3-tier-architecture/</link>
		<comments>http://srecinto.wordpress.com/2009/11/13/simple-3-tier-architecture/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 20:53:05 +0000</pubDate>
		<dc:creator>srecinto</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[3 Tier]]></category>
		<category><![CDATA[3 Tier Architecture]]></category>
		<category><![CDATA[Business Logic]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[DAL]]></category>
		<category><![CDATA[DAO]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[Domain Model]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[N Tier Architecture]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[SDLC]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://srecinto.wordpress.com/?p=13</guid>
		<description><![CDATA[A brief over view of what an 3-Tier architecture is and how to set one up independent of the technology platform.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=13&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am going to write a short series of articles related to N-Tier architecture.  After many years of consulting and helping my clients fix messes that have been created due to lack of standard architectural design and also as an aid to the students I teach, This information can be used as a reference or guide for developers to help reduce risk in their projects as well as make scalable applications that are highly maintainable.  Utilizing an architectural approach when developing software is technology/platform independent and can be applied across any software project from small to enterprise scale.  Why go with a 3 or more tier architecture?  Having 3 or more tiers promotes separation of concerns, leads to better OO development practices and reuse, provides a standard approach on a project reducing risk and lends to an enterprise approach.</p>
<p>I will go over more later but for now we will start with a simple 3 tier architecture (See Diagram Image Below):<br />
<div id="attachment_16" class="wp-caption alignnone" style="width: 310px"><img src="http://srecinto.files.wordpress.com/2009/11/3tierarchitecture.png?w=300&#038;h=231" alt="A Simple 3 Tier Architecture Diagram" title="Simple 3 Tier Architecture Diagram" width="300" height="231" class="size-medium wp-image-16" /><p class="wp-caption-text">A Simple 3 Tier Architecture Diagram</p></div><br />
<div id="attachment_38" class="wp-caption alignnone" style="width: 310px"><img src="http://srecinto.files.wordpress.com/2009/11/3tierarchitectureconcrete.png?w=300&#038;h=231" alt="A 3 Tie rArchitecture Concrete Diagram" title="3 Tier Architecture Concrete Diagram" width="300" height="231" class="size-medium wp-image-38" /><p class="wp-caption-text">A 3 Tier Architecture Concrete Diagram</p></div></p>
<p>We will go over each tier and how they relate to one another with some concrete examples.</p>
<p><strong>VO / DTO</strong><br />
Sometimes called VOs (Value Objects) or DTOs (Data Transport Objects) The purpose of this segment of the architecture is to provide a common way to move data through all the tiers.  The implementation of a VO is basically similar to a Struct C++ object, a POJO in Java, a PONO in .Net, etc. which in OO (Object Oriented) Geek terms means it is an Object with attributes only; plain old accessors and mutators (getters and setters).  Additionally, per the diagram, these objects have no dependencies on any of the tiers but can have interdependency with in the VO segment. i.e. VOs have no clue about what is in the presentation, domain or DAO tiers but can have relationships with other VOs.  VOs also tend to have a one to one mapping with entities in the repository and mirror the fields as attributes.  i.e. An Employee table with a field definition of FirstName would have a corresponding EmployeeVO with an attribute &#8220;FirstName&#8221;</p>
<p><strong>Presentation / UI Tier</strong><br />
The Presentation or UI (User Interface) Tier is responsible for anything to do with the display and interaction of the system.  The presentation tier its self can consist of its own set of architectural patterns such as MVC (Model View Controller) and is dependent on the Domain tier to handle any validation rules as well as retrieving  the correct data and mapping it out for display.  It is important to note that no business logic should be baked into this tier, only logic related to handle display.  i.e. The Presentation tier is responsible for formatting and display currency correctly while the Domain would be responsible for calculating the amount of currencly available.  This tier may use the Domain as a proxy to the DAO tier but should never call the DAO tier directly.    i.e. if there is no business logic required, use a pass through call from the Domain Object to the DAO for a quick look up value but not calling the DAO directly.  Since this is a 3tier architecture, transaction management also usually occurs here.</p>
<p><strong>Domain / Business Logic Tier</strong><br />
The Domain or Business Logic tier is where where rules/calculations and behaviors related to the application/enterprise.  These objects tend to directly related to the main entities in a domain model or use case diagram.  The domain objects have a dependency on the DAO tier (may consist of multiple DAOs) for the persistence and retrieval of data as well as the VOs for applying calculations, validation and manipulating the data to satisfy the business needs.  So why have this extra tier?  Why not include the business logic in the presentation tier and save on code?  If you place the business logic in the UI then you lose the ability to have code reuse as well as increase the risks of impact if you need to extend, enhance or scale out your application.  One example is if you have an employee management screen that allows you to add, edit and delete employees from your system and the business decides to expose the system to a 3rd party HR vendor it is important to have the 3rd party vendor subject to the same add, edit and delete rules that your systems entry has in order to stay consistent with the business requirements.  Placing these rules in the Domain tier allows both the UI and the service calls to reuse the same set of rules as well as have a single point of maintenance if the business decides to change the rules.</p>
<p><strong>DAO / DAL Tier</strong><br />
The DAO (Data Access Object) or DAL (Data Access Logic) tier is responsible for interaction with the actual persistence of data and should not contain any business logic.  It only performs CRUD (Create, Read, Update, Delete) logic by mapping data to and from the VOs.  The only dependencies the DAO tier has are the physical repository (usually one or more Databases) and the VOs. *NOTE: You could still use the DAO tier for batch processing but you may incur a performance hit if marshaling data to and from VOs.  In the case of batch processing I recommend taking direct persistence calls such as SQL.  DAOs tend to have a one to one mapping with Entities in the repository and only return VOs of that Entity type.  i.e. an Employee table would have a corresponding EmployeeDAO which performs CRUD operations on only EmployeeVOs</p>
<p>This post is just a brief overview of a simple 3-Tier Architecture and its make up of Tiers (Presentation, Domain and DAO with VOs as the Data Transport)  If you find this post useful, please let me know and I will continue to post more.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srecinto.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srecinto.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srecinto.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=13&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srecinto.wordpress.com/2009/11/13/simple-3-tier-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac554170f3188c81a8d6377625cc161d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">srecinto</media:title>
		</media:content>

		<media:content url="http://srecinto.files.wordpress.com/2009/11/3tierarchitecture.png?w=300" medium="image">
			<media:title type="html">Simple 3 Tier Architecture Diagram</media:title>
		</media:content>

		<media:content url="http://srecinto.files.wordpress.com/2009/11/3tierarchitectureconcrete.png?w=300" medium="image">
			<media:title type="html">3 Tier Architecture Concrete Diagram</media:title>
		</media:content>
	</item>
		<item>
		<title>Near Future Plans</title>
		<link>http://srecinto.wordpress.com/2009/11/13/near-future-plans/</link>
		<comments>http://srecinto.wordpress.com/2009/11/13/near-future-plans/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 16:20:26 +0000</pubDate>
		<dc:creator>srecinto</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Martial Arts]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Hapkido]]></category>
		<category><![CDATA[Kali]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[taekwondo]]></category>
		<category><![CDATA[Video Games]]></category>

		<guid isPermaLink="false">http://srecinto.wordpress.com/?p=8</guid>
		<description><![CDATA[Once this semester of teaching winds down, I am looking to rejoin my martial arts school as well as wrap up my Headline Games (http://www.headlinegames.com) project.  I am hoping to use my blog to show you the process I took to implement my game project as well as my journey to finally get my black belt (have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=8&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Once this semester of teaching winds down, I am looking to rejoin my martial arts school as well as wrap up my Headline Games (<a href="http://www.headlinegames.com">http://www.headlinegames.com</a>) project.  I am hoping to use my blog to show you the process I took to implement my game project as well as my journey to finally get my black belt (have have been training in various martial arts since I was 10 as well as competed and won first place in weapons but have never took my black belt test)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srecinto.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srecinto.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srecinto.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=8&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srecinto.wordpress.com/2009/11/13/near-future-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac554170f3188c81a8d6377625cc161d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">srecinto</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://srecinto.wordpress.com/2009/09/10/hello-world/</link>
		<comments>http://srecinto.wordpress.com/2009/09/10/hello-world/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 13:57:57 +0000</pubDate>
		<dc:creator>srecinto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ahh the infamous &#8220;Hello World&#8221; post&#8230;  The developers initial test code haunts us even to this day.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=1&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahh the infamous &#8220;Hello World&#8221; post&#8230;  The developers initial test code haunts us even to this day.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srecinto.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srecinto.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srecinto.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srecinto.wordpress.com&amp;blog=9418513&amp;post=1&amp;subd=srecinto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srecinto.wordpress.com/2009/09/10/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ac554170f3188c81a8d6377625cc161d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">srecinto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
