And my favorite for last… I want this as a T-Shirt!
And my favorite for last… I want this as a T-Shirt!
Magic Unicorn.. I think so!
Definitely a good coder background :-)
Sorry for the delays guys. I’m in the middle of switching career paths (EXCITED) and trying to get this Tumblr blog to some sense of reasonable readability. I am working out the next post which is how to structure your MVC stack and what benefits are gained through each design piece but it’s slow going. My initial goal of 3 posts a week was apparently a little high but I should still be able to get 2 in for this week.
So I figure a great place to start out the real meat of my new code blog would be what is my current favorite design methodology for an N-Tier web application and some of the best practices to adhere to when starting out. First I would like to start out by saying a firm foundation of any application is paramount to the future success of that application. You will often talk to developers, myself included, who skimped on up front design and paid for it for the duration of the project. This is critical on any project because even a small quick hit can often turn into a huge monster with scope creep and sufficient lack of foresight.
So lets kick this off with technologies for part 1 shall we?
Presentation Layer - This is what serves your web pages. At the time of writing this MVC3 is king with a looming heir to the throne on the horizon being MVC4. All the same great features we have come to know and love about MVC3 with a few new ones surrounding device targeting, improved Inversion of Control support, scaffolding, HTML5 native support, and more. We augment this with the latest version of JQuery, JQuery UI, JQuery validate, Modernizer, and depending on need Knockout (Which might I add these all come pre-loaded in your scripts folder but all too annoyingly are frequently many versions out of date.) Resource to get you started: http://www.asp.net/mvc
Service Layer – This is where the guts of your application lives and is comprised of 3 main segments itself. Which if you are talking about N-Tier application development this solution file will house the final 2 tiers in a 3 tier architecture.
Service Endpoints – WCF hands down wins for exposing your functionality across the wire. This should be kept simple and clean and will interact with your domain project, persistence through an interface defined in your domain project, and handle the translation between data bound entities and your Data Transfer Objects (further referred to as DTOs) using a nice little utility called AutoMapper. Some resources on this:
Business Logic – We will call this your “Domain” model, which anyone familiar with DDD is already smiling. This is where ALL of your business logic lives and the interfaces that define the external concerns like persistence and auxiliary dependencies (for example: an external service reference to say Melissa Data for address validation) lives.
Domain Driven Design: http://domaindrivendesign.org/resources/what_is_ddd
Persistence Layer – EF 4.3 is the current version of Entity Framework out and hands down the POCO or Code First model for EF is amazing. I would suggest digging into Fluent configuration over annotations due to the agility that can be gained using fluent EF configuration.
Disk Storage – This is the final main piece of the “application”. This is your actual write to disk means of storage. Using .NET you really only have one viable choice which is SQL Server. SQL Server 2008 is a must as it comes loaded with code completion and as a developer this will save you a ton of time. For anyone using 2005 or lower I strongly encourage you to at least grab the developer bundle from Red Gate which gives you some of the nicer, in my opinion, features of 2008.
I know this is a bit entry level for most but I’m going to try to start out simple and work up to more complex scenarios and concepts. My hope is for a entry level developer with isolated understanding of software design will be able to read this and grow in skill as the posts progress.
This concludes Part 1 of Preferred Software Architecture and Standards. Next up we will dive into building out an MVC application, Service Adapters, and the importance of creating view models for projecting the DTOs into. I don’t have all the parts planned out yet so please bear with me. This will likely end up being a fairly daunting series that covers a lot of ground. Check back often or subscribe, shooting for at least 3 posts a week to start and see where we can go from there!
Well to anyone who knows me knows that I have written quite a few blog engines and spooled up a number of my “own blogs” which after a period of time I get annoyed with and take down.
I won’t make any lofty promises that this won’t be any different HOWEVER we shall give it a spin. First and foremost.. Google Prettify, lets kick the tires and see how well this works. I’m not going to say this will all be about code but a LARGE chunk of it will be. Just like my life, a significant portion of my day is spent on a keyboard for both work and fun.
Another thing I will give props to Tumblr for is giving us the capability of re-pointing a domain at their servers or even a sub-domain without using domain masking. Pretty neat feature. I have also heard that this RTE isn’t entirely pointless for search targeting so I guess we shall see on that front as well.
So lets get started right and put some code in this post.
Prettify Your Code on Tumblr
1) Go to Customize Your Layout
2) Click the teeny tiny “edit html” link
3) Smile because their layout editor actually doesn’t suck
4) Put the code below into your blog and follow the instructions in comments
NOTE: Remember to update the paths to the prettify.css and prettify.js files to the static file links for your tumblr account. After enough of us put this in our blog they’ll likely add hard paths for us to use but until then… Modify the URL’s!!!
Now the crappy part is after you make these changes through the very nice and robust layout editor when you go to make your first “syntax pretty” post you have to go into HTML mode. Unlike their awesome layout editor that allows tabbing and has rudimentary syntax highlighting their HTML editor for a blog post does not. Suffer through it as will I.. and shortly I’ll build a plug-in for their RTE if one isn’t already out there.
To post an entry with pretty print capabilities you can use a <code class=”prettyprint”>…</code> or <pre class=”prettyprint”>…</pre> tag.
Also remember all instances of < you have to manually turn into < and all instances of > you have to manually turn into > or it’ll just post as straight HTML and you won’t see any of your code in the post! Oh No!
Ok this post is complete I think and it’s time to move onto other things for the night! Until next time!