<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Robert  Robbins  : Application Design</title><link>http://weblogs.asp.net/rrobbins/archive/tags/Application+Design/default.aspx</link><description>Tags: Application Design</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Book Review - ASP.NET 3.5 Social Networking</title><link>http://weblogs.asp.net/rrobbins/archive/2009/02/27/book-review-asp-net-3-5-social-networking.aspx</link><pubDate>Fri, 27 Feb 2009 21:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6931245</guid><dc:creator>rrobbins</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rrobbins/rsscomments.aspx?PostID=6931245</wfw:commentRss><comments>http://weblogs.asp.net/rrobbins/archive/2009/02/27/book-review-asp-net-3-5-social-networking.aspx#comments</comments><description>&lt;P&gt;I recently finished reading the book &lt;EM&gt;&lt;A href="http://www.packtpub.com/expert-guide-for-social-networking-with-asp-.net-3.5/book" mce_href="http://www.packtpub.com/expert-guide-for-social-networking-with-asp-.net-3.5/book"&gt;ASP.NET 3.5 Social Networking&lt;/A&gt;&lt;/EM&gt; by Andrew Siemer. I was very interested in this book because I want to build a social networking site designed for vloggers and ASP.NET is my area of expertise. Currently I'm working to customize the &lt;A href="http://www.elgg.org/" mce_href="http://www.elgg.org/"&gt;Elgg&lt;/A&gt; social networking web application using PHP because it is open source and has an active developer community.&lt;/P&gt;
&lt;P&gt;Unfortunately, developing a social networking application is a big project, not something the lone developer can accomplish. It really requires an integrated suite of web applications with modules for blogging, forums, groups, media galleries, etc. Andrew Siemer has done an impressive job of creating the framework of a social networking web application as documented in his book but it is by no means feature complete. There was no mention in the book of any plans to make this an open source project.&lt;/P&gt;
&lt;P&gt;The author has clearly been keeping up with changes in technology and methodology. As far as ASP.NET 3.5 goes, he made extensive use of LINQ to SQL but was unable to use MVC which wasn't available at the time, although he managed to implement a MVP (Model View Presenter) design pattern. He also made use of open source tools like Lucene.NET, MemCached, StructureMap, and NUnit. I don't have any experience with those tools and I'm not up to speed with ASP.NET 3.5 but I considered this a bonus because I learned something new.&lt;/P&gt;
&lt;P&gt;Even though I'm not using ASP.NET on my social networking project I still wanted to read this book to pick up on some tips on how to design such an application. Andrew Siemer provides plenty of explanation for his design decisions including how his database schema is structured according to the project requirements. This can eliminate one of the biggest stumbling blocks to a large project because a lot of time is wasted just figuring out how to design the database. Elgg is using the &lt;A href="http://en.wikipedia.org/wiki/Entity-Attribute-Value_model"&gt;Entity Attribute Value model&lt;/A&gt; for its database and there is some debate over how well this will scale.&lt;/P&gt;
&lt;P&gt;Although Andrew Siemer added considerable complexity to his project by using &lt;A href="http://sourceforge.net/projects/structuremap" mce_href="http://sourceforge.net/projects/structuremap"&gt;StructureMap&lt;/A&gt;, I guess this is wise because a social networking web application needs to be flexible. This design decision would definitely make sense for an open source project. &lt;EM&gt;StructureMap is a Dependency Injection tool written in C# for .NET development. StructureMap is also a generic "Plugin" mechanism for flexible and extensible .NET applications.&lt;/EM&gt; In other words, it allows other developers to replace an object with some other implementation.&lt;/P&gt;
&lt;P&gt;Social networking sites tend to get a lot of feature requests and suggestions from their large community of users. You really have to participate on several sites to get a sense of what the users are likely to need. Although the author anticipated many potential issues and requirements he did neglect to include some standard features. For example, he does not provide a means for members to customize their profile though CSS. Elgg also does not allow users to design their profile page and I know vloggers would miss this as they currently have a lot of fun creating new banners on Vloggerheads. I believe that vlogging is essential to create a really strong sense of online community so I found the media gallery component of the design particularly lacking. But you would need an entire video sharing module to really address that need. That is a huge project in its own right. I've learned that comment threading is really important for social networking sites. Without it you get users typing the @ sign in their comments to indicate who they are replying to and that is just an awkward user hack to work around a serious design flaw in the application.&lt;/P&gt;
&lt;P&gt;Although this is a thick book, 556&amp;nbsp; pages, most of the content is code listings so you won't need to invest too much time in reading it. You may feel a little lost if you haven’t been following the rapid changes in the ASP.NET framework and the additional open source tools require additional work to familiarize yourself with them because they are not part of the ASP.NET framework.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6931245" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rrobbins/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Application+Design/default.aspx">Application Design</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/social+networking/default.aspx">social networking</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/ASP.NET+3.5/default.aspx">ASP.NET 3.5</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/StructureMap/default.aspx">StructureMap</category></item><item><title>Book Review: ASP.NET 3.5 Application Architecture and Design</title><link>http://weblogs.asp.net/rrobbins/archive/2008/12/31/book-review-asp-net-3-5-application-architecture-and-design.aspx</link><pubDate>Thu, 01 Jan 2009 03:24:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6810239</guid><dc:creator>rrobbins</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rrobbins/rsscomments.aspx?PostID=6810239</wfw:commentRss><comments>http://weblogs.asp.net/rrobbins/archive/2008/12/31/book-review-asp-net-3-5-application-architecture-and-design.aspx#comments</comments><description>&lt;P&gt;I recently read a new book published by &lt;A href="http://www.packtpub.com/" mce_href="http://www.packtpub.com/"&gt;Packt Publishing&lt;/A&gt;, “&lt;EM&gt;&lt;A href="http://www.packtpub.com/application-architecture-and-design-for-asp-.net-3.5/book" mce_href="http://www.packtpub.com/application-architecture-and-design-for-asp-.net-3.5/book"&gt;ASP.NET 3.5 Application Architecture and Design&lt;/A&gt;&lt;/EM&gt;” by Vivek Thakur. I've noticed a lot of articles and blog posts about design patterns and domain models in the ASP.NET community but it really mystified me until I read this book. Although many of the blog posts I've read have tried to be an introduction to design patterns, I'd have to say they all did a poor job compared to &lt;STRONG&gt;Vivek Thakur's&lt;/STRONG&gt; book which explains it all in plain English. I learned how application architecture applies to web development and what advantages it is meant to offer. &lt;/P&gt;
&lt;P&gt;For example, the chapter on tiers and layers explains how the business layer, UI layer, and data access layer relates to namespaces and classes you could create to organize your project. The chapter on entity-relationships clarified how the domain model used in the object-oriented system may differ from the logical data model used in the relational database management system.&lt;/P&gt;
&lt;P&gt;I also found good explanations of; &lt;EM&gt;lazy loading&lt;/EM&gt;, to defer the loading of all properties until they are really needed, the &lt;EM&gt;singleton pattern&lt;/EM&gt;, which restricts and controls the number of objects instantiated for a particular object during the application life cycle,&amp;nbsp; the &lt;EM&gt;factory method&lt;/EM&gt;, used to create objects without prior knowledge of the object using interfaces, and &lt;EM&gt;dependency injection&lt;/EM&gt;, which allows you to plug-in an implementation that satisfies the interface requirements. Although I've come across these terms before I had no idea what they meant or how they could apply to ASP.NET. You'll find some really basic examples of how you can write code to use these design patterns. &lt;/P&gt;
&lt;P&gt;If you are an expert on application architecture and expect in-depth coverage of how to apply the factory method in ASP.NET then you'll be disappointed. I'd say this book is more helpful for someone like me, a developer who is completely mystified by what everyone seems to be writing about these days. That is not to say you might not pick up a few tips from the material. For example, page 137 mentions a &lt;EM&gt;lock &lt;/EM&gt;statement that can be used to ensure thread safety and I'd never encountered that before.&lt;/P&gt;
&lt;P&gt;I also appreciated the author's practical approach to design patterns. He does not recommend them for small projects. This kind of lets me off the hook because none of my projects could really justify the additional overhead of a loosely-coupled design. However that is not to say you won't encounter such design patterns in your work. For example, I'm currently trying to customize the Elgg open source web application for social networking and its database schema is a peculiar attempt to incorporate entity relationships directly in the physical data layer. In any event, you are not meant to directly access the database. Instead you should get a reference to an ElggObject and use its properties.&amp;nbsp; &lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6810239" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rrobbins/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Application+Design/default.aspx">Application Design</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/lazy+loading/default.aspx">lazy loading</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/singleton+pattern/default.aspx">singleton pattern</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/dependency+injection/default.aspx">dependency injection</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/factory+method/default.aspx">factory method</category></item><item><title>New Years Resolution - Get Better At Web Application Design</title><link>http://weblogs.asp.net/rrobbins/archive/2007/12/27/new-years-resolution-get-better-at-web-application-design.aspx</link><pubDate>Thu, 27 Dec 2007 18:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5509100</guid><dc:creator>rrobbins</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/rrobbins/rsscomments.aspx?PostID=5509100</wfw:commentRss><comments>http://weblogs.asp.net/rrobbins/archive/2007/12/27/new-years-resolution-get-better-at-web-application-design.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;My New Years resolution for a career goal is to spend more time picking up graphic design tips and tricks. Conversely, I want to spend less time on researching programming and web application development. This may seem like an unwise goal for a web developer but I feel that I need more improvement in this area. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Programming and designing are often considered to&amp;nbsp;require two fundamentally different mentalities. Web developers usually create functional web pages with a blank design. I've seen designers that can't even apply their design to an ASPX page without messing up the page declarations and user controls. I have to admit that while developers can apply a design and make minor changes to graphics, and designers can code CSS and learn some basic JavaScript, you usually don't want to combine both skill sets in one position. While I believe one person can do a little bit of everything, you really have to respect the considerable expertise required by each profession.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I've known programmers to underestimate the skills needed to be a web designer. It requires more than a knowledge of CSS. Only&amp;nbsp;a code centric programmer would make the mistake of&amp;nbsp;considering just the CSS. There are also an enormous number of Photoshop tricks and trips to learn which means working through a lot of tutorials. A designer also needs to know the history of graphic design in order to combine design elements or recreate a retro look. I think it is a full time job to keep your focus on design elements and work through all the tutorials to create various effects.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Unlike a "software engineer" I am not into advanced math and logic. I'm not totally ego invested in being a programmer. I'm also quite confident that I have an artistic side. I'm strongly attracted to creative work and find it easy to identify with anything strange and fantastic. As a matter of fact, I'm surprised that many artists lack confidence in their talent or question themselves. You can be dissatisfied with your work which may not equal your inspiration, but you should find confidence in your imagination's affinity for the sublime.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Recently I came up with a simple way to add some flare to my web applications. Displaying some numbers as a digital readout can really enhance the look of a page. You can get the digital numbers from clock widgets and use them to display &lt;BR&gt;record counts, IP addresses, or temperatures. Replacing numbers with graphics requires some programming which may be why you don't see a lot of designers using digital readouts for real data. I would expect many programmers to balk at using graphics for actual numbers because it adds nothing to the functionality.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Weather with digital readout" style="WIDTH: 309px; HEIGHT: 215px" height=215 alt="Weather with digital readout" src="http://img99.imageshack.us/img99/5916/weatherdb6.jpg" width=309 mce_src="http://img99.imageshack.us/img99/5916/weatherdb6.jpg"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here you can see a digital readout of the temperature which draws the eye to the most important bit of information. It could use a digital "F" to indicate Fahrenheit but this will require editing a digit in Photoshop. A web designer would probably be inspired to make the entire interface resemble a photo-realistic device with a reflective glass cover, plastic molding, etc. &lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5509100" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Web+Development/default.aspx">Web Development</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Application+Design/default.aspx">Application Design</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Widgets/default.aspx">Widgets</category><category domain="http://weblogs.asp.net/rrobbins/archive/tags/Web+Design/default.aspx">Web Design</category></item></channel></rss>