[Link List]Microsoft Application Architecture Guide, 2nd Edition is now complete (Ebook, Print)

.

Microsoft has released a final version of its book “Microsoft Application Architecture Guide, 2nd Edition”.
The book is described as:

imageThis guide is available online here in the MSDN Library and will be available in the Fall of 2009 as a Microsoft Press book, ISBN# 9780735627109, that you can purchase through local and online booksellers.

The guide is intended to help developers and solution architects design and build effective, high quality applications using the Microsoft platform and the .NET Framework more quickly and with less risk; it provides guidance for using architecture principles, design principles, and patterns that are tried and trusted. The guidance is presented in sections that correspond to major architecture and design focus points. It is designed to be used as a reference resource or to be read from beginning to end.

The guide helps you to:

  • Understand the underlying architecture and design principles and patterns for developing successful solutions on the Microsoft platform and the .NET Framework.
  • Identify appropriate strategies and design patterns that will help you design your solution’s layers, components, and services.
  • Identify and address the key engineering decision points for your solution.
  • Identify and address the key quality attributes and crosscutting concerns for your solution.
  • Create a candidate baseline architecture for your solution.
  • Choose the right technologies for your solution.
  • Identify patterns & practices solution assets and further guidance that will help you to implement your solution.

More information about the book in this blog post:

http://blogs.msdn.com/jmeier/archive/2009/11/05/now-available-patterns-practices-application-architecture-book.aspx

The book is:

Available for online reading at:

http://msdn.microsoft.com/en-us/library/dd673617.aspx

Available for free download (PDF Format) at:

http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586

Available in print (to buy hard copy) from Amazon at:

http://www.amazon.com/Microsoft%C2%AE-Application-Architecture-Patterns-Practices/dp/073562710X

Have fun reading,

Videos from NDC 2009: SOLID Principles, Legacy Code, WCF, Software Design,…

Here’s another email from the internal mailing list of Injazat .NET Ninjas (Ninjazat, AKA  as we call ourselves), that I’m sharing with blog readers as well.

Just a place holder, until I move one of my 18 (just discovered the number now – terrifying!) drafts in my Windows Live Writer into a published post, or delete them all!

Subject: [Learning] Some very interesting videos

Some videos from NDC 2009 event (Norwegian Developers Conference 2009) – about software design and related issues:

· NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design

· NDC Video – Robert Martin – Craftsmanship and Ethics

· NDC Video – Robert Martin – Component Principles

· NDC Video – Robert Martin – Clean Code III – Functions

· NDC Video – Michael Feathers – Working Effectively with Legacy Code

· NDC Video – Jeremy D. Miller – Convention Over Configuration

· NDC Video – Michael Feathers – Seven Blind Alleys in Software Design

· NDC Video – Ted Neward – WCF Patterns

· NDC Video: Michael Feathers – Design Sense

For the complete list of videos from this event check videos from:

· Day 1

· Day 2

· Day 3

My favorite topics are (recommendations):

· NDC Video – Robert Martin – S.O.L.I.D Principles of OO class design

· NDC Video – Michael Feathers – Working Effectively with Legacy Code

Of course the other topics are interesting as well.

Enjoy!

 

See you all in dotNETwork May 09 Gathering in Egypt, Lesser known .NET Enterprise Patterns & Practices

 

 

IMPORTANT UPDATE

There was a sudden last-minutes issue with the transportation / flights configuration that prevented me from making it to Cairo. I’ll be unfortunately missing out this event. M. Smay my friend will be a great backup with all the additional details he has to provide about his session content as well as an open session for the convenience of all of you.

Sorry for missing out. I had to. I’m working with dotNETwork to re-organize my session as part of June 2009 gathering, but this is gonna be another story!

 

Most of you already know I have moved recently from Cairo to Abu Dhabi. What only a selected set of you are aware of, is that I am still having my heart all set for the developer community in Egypt and still communicating with many of them via Twitter; not only that developers in Abu Dhabi are not into spending time in gatherings or anything than doing work and surviving, but also because I have made the only long lasting and fulfilling friends relationships with the key persons that I see in the different communities, especially my old friends from Microsoft MDC and ArabTeam2000, Demo Day attendees (who still talk to me since 2007), and – of course – dotNETwork, admins, speakers, and participants (who are much more than just attendees).

Fridays City Stars 23rd of May 10:00 AM – 01:00 PM

This Saturday isA I’ll be giving a session that relates to one of my beloved topics in development. Here is the information of the session:

Session Title

Lesser known .NET Enterprise Patterns & Practices

Tag Line

Is your mind ready? Booting up journey in enterprise patterns & practices in .NET

Session Summary

Through an illustration and a thoughtful discussion we are going to see how to go with our applications to the next level, leveraging ease of maintenance, integration points, and scalability out of the box; showing sample enterprise patterns and best practices that are very popular in many development platforms but are rarely used or even known for typical .NET developers

The session will be like April’s session in Fridays City Stars, Nasr City. If you want to know what that is, this is because the Canadian University in Egypt  has stopped all activities in Saturday temporarily for reducing cost; you know, the crisis!

 

Agenda, date and location

  • Lesser known .NET Enterprise Patterns & Practices
    by Mohamed Meligy – Information Analyst, .NET Technologies – (Injazat Data Systems, Abu Dhabi)

  • A lap around Visual Studio 2010
    by Mohamed Samy – Technical Architect (iSource Egypt)

Fridays City Stars 23rd of May 10:00 AM – 01:00 PM

 

Have you noticed something? Yes, my closest friend and one of the most lasting / oldest friend in this life, and in the field of course, Mohamed Samy, will be giving a session the same day. HE is such a true guru, and I fear everything ‘m going to say may look very pale compared to what he has to say about VS 2010.

 

By the way, the attendance will require you to only pay 19 EGP or so– for a sandwich or meal that YOU eat (they have discounts for attendees). This is the host requirement and dotNETwork has NOTHING to do with it. After all, the only available host is now a commercial place. If you can help dotNETwork host the sessions in a completely free place, please contact anyone from dotNETwork and help get that done. PLEASE.

Anyway, I think 20 EGP for something YOU get within the day is not very little but not much also. I saw guys paying the same to the cafe near the University when it was hosted there.

 

Please be there. I know everybody was too busy to do right publicity of this event, and I myself am writing this very shortly before the event day, but, I’ll not be able to come back to Egypt even every few months, so, this time is very rare for me. Please let me meet the most of you who can make it. This is a personal request, to my true friends. period

 

Related Sites

 

dotNETwork CodeCamp ‘09: Framework Design Guidelines & Managed Extensibility Framework (MEF) Slides Available

First off, thank you all so much who have attended the very special gathering of dotNETwork user group, Code Camp ‘09, that took place in the British University in Cairo (BUE) during last Thursday and Friday. This has been one of the biggest events I have been talking in, and that was a great honor.

You can find the slides for the sessions I have been giving below:

Framework Design Guidelines

Download (PPTX File):

Managed Extensibility Framework(MEF)

Download (PPTX File):

(Note: Links to the source code are in the last slide)

Notes On The Event

image
The speakers and dotNETwork Team

The event went with a similar theme to Microsoft Middle east Developer’s Conference, MDC, which became Egyptian Developers Conference, EDC, which used to take place annually in the beginning of February, but, is yet to happen this year. I’m not sure whether I should be happy or sad for the fact that many attendees came to the event thinking it’s organized by Microsoft as another replacement to MDC/EDC. To make this clear, Code Camp is organized by an independent user group of 11 organizers, known as dotNETwork group (I mentioned a lot in my blog), and was sponsored by Microsoft Egypt, and number of international companies (sponsoring foreign speakers transportation), and the British University in Egypt (BUE, hosting the event). All speakers (foreigners and Egyptians) are volunteers.

Within tow days, with over 300 attendees, and over 10 speakers from both Egypt and world wide, and a great variety in topics, dotNETwork has excelled to make this a GREAT experience for everybody. This is one of the best events I have attended ever in general, which  compares with great improvement to the other best events/sessions I have ever attended/delivered: MDC 2005 (if you skip the Bill Gates pat!) and SilverKey Demo Day II.

Thank you very much dotNETwork and great attendance for the true nice time!

PS. I have notes from the other sessions I have been to as an attendee not as a speaker. Those will be available by the ened of the week or beginning next week (God Willing). Hopefully this time I’ll make it in schedule.

Related Sites

dotNETwork 7th: Design Patterns Via C# 3.0 Slides and Demos

Design Patterns Via C# 3.0

View SlideShare presentation or Upload your own. (tags: design patterns)

Yesterday was my 2 part session about Design Patterns as part of dotNETwork 7th gathering. Thank you all guys for being there, There was so much interesting stuff about the audience. The conversation we all had even before the session starts, the interaction with all parts of the session, and the great questions.

Thank you all.

 

You can find the slides for the 2 parts combined in single downloadable file.

Download the Presentation Slides

For the code examples/demos, you can find them in single ZIP file as well.

Download the Code Samples

 

I hope you enjoyed the session.

 
Related Links

dotNETwork 7th Gathering: Delivering Design Patterns via C# 3.0

dotNETwork, the most active offline user group in Egypt is having its 7th gathering next Saturday, August 30, which will have two parallel tracks for the first time in the group gathering. BizTalk Introduction, and C# 3.0 Design Patterns, which I will be delivering!

Facebook Event

If I were you to attend the event, it would have been a hard choice too (unless you go simply for BizTalk) ! BizTalk beginner introduction as a topic was not delivered in public sessions before. The only BiTalk sessions I know of were either advanced ones or introducing newer version to those familiar with old version. If you are my friend or you are pretty much into patterns, you may want to give what I have to say a look.

The session parts were primarily intended to be in a couple of dotNETwork gatherings. Now that dotNETwork decided to try out the parallel tracks model having two sessions in the same topic in each track (which is a decision I really like, except that I’d love more distinction between the topics), it was logical to have them in the same gathering / track. I have been thinking whether this should go for the simplest level possible ever, then, decided to stick to the original plan, and even use the long time available for the presentation (1:30h for each part) to go say more about related topics, as I have so much interest in delivering this in certain way for long time now.

About the Session

I’m still messing around with the agenda / exact sequence of the components to be delivered in the session, but I’m going for making an intro to so many topics. The session is meant to target a very wide range of developers. Pretty much anyone who knows a little about C# 2.0+. I’ll start by identifying what a "pattern" means, and then go talking about different object oriented design principles, meaning things like OCP "Open Closed Principle", not "what’s the different between class and interface?" or "what are abstraction, polymorphism ?" stuff) assuming basic knowledge of the latter but still going through it.

I’ll present around 2 examples of each category of the gang of four object oriented design patterns, and probably a couple more from other sources, highlighting few C# 3.0 features using examples from O’reilly "C# 3.0 Design Patterns" book. Building on the object oriented patterns and principles, I’ll go introducing some enterprise patterns (yeah, pretty much Martin Fowler work), and end with a small introduction to "Domain Driven Design", which I plan to deliver in a long session (may another two part one, with dotNETwork or maybe ITWorx CuttingEdge Club or public SilverKey DemoDay – if any) with respect to ASP.NET MVC framework in similar manner to Rob Conrey’s StoreFront series.

This can move the range of fresh and classic developers knowing just the basic language features and getting that to work in small project to see the trends in the software industry world wide, and in the same time provide some exciting topics for the experienced developers willing to know more about the rarely discussed topics in Egypt developers community. Needless to say, the key to the session is audience interactivity. I’m dying for questions and discussions from now already.

Of course this is not going to be fully covering any of the topics. After all, this is still a presentation, not a course!

About the Day

The event will be next Saturday, August 30th at the Canadian International College, in "El-Tagamo3 El-5ames".
There will be buses at Nady El-Sekka (11:00 AM – 11:30 AM)
Remember, this is a FREE event.

Agenda:

12:00 – 13:30

Tec-Talk Wiz BizTalk (Part 1)
Tamer Mohammad Fathy AL-Khouly,
Mohammad Yousri El-Farsi.

Design Patterns via C# 3 (Part 1)
Mohamed Ahmed Meligy.

13:30 – 14:00

Break

14:00 – 15:30

Tec-Talk Wiz BizTalk (Part 2)
Tamer Mohammad Fathy AL-Khouly,
Mohammad Yousri El-Farsi.

Design Patterns via C# 3 (Part 2)
Mohamed Ahmed Meligy.

Sessions will be video recorded. Good that I’m not missing the BizTalk track completely :).

Related Links

Note

Please drop me a comment here or email via blog contact page if you intend to come and have certain tip / suggestion for the session.

Foundations of Programming, AKA, the ALT.NET FREE Book!!

“Foundations of Programming, Building Better Software” is a new eBook by Karl Seguin. The book does not say in its introduction that it’s all ALT.NET-ish, it starts by introducing what ALT.NET is, it’s goals etc, afterwards, all the topics the book covers are inspired by ALT>NET frequent topics. This includes Domain Driven Design (DDD), Dependency Injection (DI), Object Relational Mapping (ORMs), Mocking, etc…

Here’s what Channel9 had to say about it (which is how I originally found it too):

Karl Seguin recently released a great free 79 page eBook for .NET developers covering design patterns, unit testing, mock objects, memory management, object relational mapping, and more.  Get it while it’s free!

Now, if I did my job well getting your interest, then you may want to get to the best part:

Foundations of Programming, Building Better Software – EBook Download

IF you’re not interested yet, I know this must get your most interest in the book, the table of contents (highlighting chapter titles in bold):

About the Author ……………………………………………………………………………………………………………….6
ALT.NET …………………………………………………………………………………………………………………………..7
Goals ……………………………………………………………………………………………………………………………8
Simplicity ………………………………………………………………………………………………………………………8 YAGNI…………………………………………………………………………………………………………………………..8
Last Responsible Moment………………………………………………………………………………………………….9
DRY ……………………………………………………………………………………………………………………………..9
Explicitness and Cohesion ………………………………………………………………………………………………….9
Coupling ……………………………………………………………………………………………………………………….9
Unit Tests and Continuous Integration …………………………………………………………………………………9
In This Chapter……………………………………………………………………………………………………………..10
Domain Driven Design………………………………………………………………………………………………………..11
Domain/Data Driven Design……………………………………………………………………………………………..11
Users, Clients and Stakeholders ………………………………………………………………………………………..12
The Domain Object ………………………………………………………………………………………………………..13
UI ………………………………………………………………………………………………………………………………15
Tricks and Tips ………………………………………………………………………………………………………………16
Factory Pattern ………………………………………………………………………………………………………….16
Access Modifiers ………………………………………………………………………………………………………..17
Interfaces ………………………………………………………………………………………………………………..17
Information Hiding and Encapsulation …………………………………………………………………………….18
In This Chapter……………………………………………………………………………………………………………..19
Persistence……………………………………………………………………………………………………………………..20
The Gap ………………………………………………………………………………………………………………………20
DataMapper ………………………………………………………………………………………………………………..20
We have a problem …………………………………………………………………………………………………….23
Limitations……………………………………………………………………………………………………………….24
In This Chapter……………………………………………………………………………………………………………..25
Dependency Injection ………………………………………………………………………………………………………..26
Sneak Peak at Unit Testing……………………………………………………………………………………………….27
Don’t avoid Coupling like the Plague ………………………………………………………………………………….28
Dependency Injection……………………………………………………………………………………………………..28
Constructor Injection…………………………………………………………………………………………………..28
Frameworks……………………………………………………………………………………………………………..30
A Final Improvement …………………………………………………………………………………………………..32
In This Chapter……………………………………………………………………………………………………………..33
Unit Testing…………………………………………………………………………………………………………………….34
Why Wasn’t I Unit Testing 3 Years Ago?………………………………………………………………………………35
The Tools …………………………………………………………………………………………………………………….36
nUnit ………………………………………………………………………………………………………………………36
What is a Unit Test …………………………………………………………………………………………………………38
Mocking ……………………………………………………………………………………………………………………..38
More on nUnit and RhinoMocks………………………………………………………………………………………..41
UI and Database Testing ………………………………………………………………………………………………….42
In This Chapter……………………………………………………………………………………………………………..42
Object Relational Mappers ………………………………………………………………………………………………….43
Infamous Inline SQL vs. Stored Procedure Debate …………………………………………………………………43
NHibernate ………………………………………………………………………………………………………………….46
Configuration……………………………………………………………………………………………………………46
Relationships …………………………………………………………………………………………………………….49
Querying …………………………………………………………………………………………………………………50
Lazy Loading ……………………………………………………………………………………………………………..51
Download ……………………………………………………………………………………………………………………52
In This Chapter……………………………………………………………………………………………………………..52
Back to Basics: Memory ……………………………………………………………………………………………………..53
Memory Allocation………………………………………………………………………………………………………..53
The Stack …………………………………………………………………………………………………………………53
The Heap …………………………………………………………………………………………………………………54
Pointers …………………………………………………………………………………………………………………..55
Memory Model in Practice……………………………………………………………………………………………….57
Boxing …………………………………………………………………………………………………………………….57
ByRef………………………………………………………………………………………………………………………58
Managed Memory Leaks ……………………………………………………………………………………………..61
Fragmentation …………………………………………………………………………………………………………..61
Pinning ……………………………………………………………………………………………………………………62
Setting things to null …………………………………………………………………………………………………..63
Deterministic Finalization ………………………………………………………………………………………………..63
In This Chapter……………………………………………………………………………………………………………..63
Back to Basics: Exceptions …………………………………………………………………………………………………..64
Handling Exceptions ……………………………………………………………………………………………………….64
Logging……………………………………………………………………………………………………………………65
Cleaning Up ………………………………………………………………………………………………………………65
Throwing Exceptions ………………………………………………………………………………………………………67
Throwing Mechanics …………………………………………………………………………………………………..67
When To Throw Exceptions ………………………………………………………………………………………….68
Creating Custom Exceptions …………………………………………………………………………………………….69
In This Chapter……………………………………………………………………………………………………………..72
Back to Basics: Proxy This and Proxy That……………………………………………………………………………….73
Proxy Domain Pattern …………………………………………………………………………………………………….74
Interception…………………………………………………………………………………………………………………75
In This Chapter……………………………………………………………………………………………………………..77
Wrapping It Up ………………………………………………………………………………………………………………..78

The book cover has the www.codebetter.com URL, the community blogs whose owners originally started ht ALT.NET movement (I wrote about it very early back). I suspected it even before reading the table of contents!

Oh my. This is the book I always wanted to either read or write. Now I only have one option!!!

Microsoft’s IoC Container is no longer BETA – Please Welcome the Unity 1.0!

One Line Statement

Microsoft’s IoC container Unity, hosted on CodePlex as an Application Block for Enterprise Library is now released in ver. 1.0.

Introduction

If you do not know what IoC is, you might want to check sample articles:

I have been interested in Dependency Injection (DI) and Inversion of Control (IoC) for few months, and I brought other guys interested too such as Mohamed Nour :D. I’m not going to discuss when I believe those strategies should be used, and how they relate to each others (at least not in this post).

The usual story

If you know about IoC, you’d know that there’re few big players in the field that are speaking .NET. I’ll not compare them here. I’m not even talking about them with relevance to time order, but I like to see how the "vendors / characteristics" map looks like.  For comparisons, check the end of this section.

The usual story, a player coming from Java world, moving from Java’s Spring to .NET’s Spring.NET. As you’d expect, this is the one mostly in love with XML configurations – too much of them sometimes, but, it’s the most mature one.

Then, as for everything coming from other worlds, Castle group/project was interested. They had their own player, Windsor. Windsor is of course less XML-ish, and as you may expect, it fits best in combination with other Castle stuff. As usual with Castle, the documentation is way far from complete, however, a funny joke about it is someone saying that a big feature of Windsor is that Ayende blogs a lot about it!

Also as usual, there had to be an individual player who tries to do the thing from scratch. That was StructureMap.

For a true comparison between those players, check the following articles:

Here comes Microsoft

As happened with AJAX and unit testing frameworks, when Microsoft decided to create it’s own game into the scenes, Microsoft has come to this ground as well to make its standard flavor, going with the relatively recent strategy of not trying to kill the existing players (The proof is approving supporting them in ASP.NET MVC Framework).

Microsoft IoC container as usual had a unique characteristic, and as usual, the unique thing is related to integration with more MS stuff. The Unity IoC container is actually an Enterprise Library Application Block. It’s meant to be part of Enterprise Library 4.0. Although Enterprise Library 4.0 is not "released" yet, The Unity Application Block itself is done 1.0, and available to download and use.

Being part of the Enterprise Library (and being an IoC container in general actually – LOL), it didn’t escape the XML configuration hassle. Again, that’s (unfortunately) a necessity for any IoC. For more information and examples on using Unity, check any of the following articles:

Create you own (Just for fun!!)

If you want to see how this thing from inside looks like, and you do not have time to investigate the source code of a sophisticated IoC container from any of the big players, check Ayende’s Building an IoC container in 15 lines of code article. But do not expect that to make you one more player :D.

You can also check how you can try achieving very basic functionality with the existing components of the BCL – that was before Unity of course :).

Link List: SOA / Architecture + Bonuses

This is the email I sent to SilverKey Tech. Egypt dev team yesterday, sharing here as usual.

Bonuses (AKA, unrelated links – definition)