Architecture
Architecture

Bob Familiar and I are busting out of our home bases in Massachusetts and taking our long-winded rants and questionable demos on the roads across the Northeast! In the coming weeks, we'll be bringing the latest in developer- and architect-focused content to a town near you.
Join us for a full day of no-fluff deep technical content, plenty of code, 100% guaranteed-to-run demos*, and of course giveaways throughout with a chance to win a Zune at day's end! [* We'll define "run" as we go.]
Roadshow Schedule and Registration
| Rochester, NY | February 27th, 2007 | 8:30am-4:00pm | Click Here to Register! |
| Burlington, VT | March 1st, 2007 | 8:30am-4:00pm | Click Here to Register! |
| Portland, ME | March 6th, 2007 | 8:30am-4:00pm | Click Here to Register! |
| Manchester, NH | March 8th, 2007 | 8:30am-4:00pm | Click Here to Register! |
| Farmington, CT | March 20th, 2007 | 8:30am-4:00pm | Click Here to Register! |
Event Agenda
For this tour, we're focusing on all things .Net Framework 3.0. Here's the agenda:
08:30am – Arrive, check in, grab a nosh and a seat
09:00 – 10:15 – Windows Communication Foundation
Windows Communication Foundation (WCF) is Microsoft's unified framework for building secure, reliable, transacted, and interoperable distributed applications. Learn how to leverage the new features in Windows Communication Foundation (WCF) to make a smooth transition to a service-orientation. The capabilities exposed through this new addition to the .NET framework will enable the core building blocks of connected systems such as data & service contracts, security, reliability, administration, and management
10:15 – 10:30 – Take a break and communicate
10:30 – 12:00 – Windows CardSpaces
Windows CardSpace enables users to provide their digital identities in a familiar, secure and easy way. In the physical world we use business cards, credit cards and membership cards. Online with CardSpace we use a variety of virtual cards to identify ourselves, each retrieving data from an identity provider. Don't struggle with usernames and passwords, just choose an information card! This session will delve into the architecture and implementation of CardSpaces.
12:00-01:00 – Grab a lunch and ponder your identity
01:00 – 02:15 –Workflow Foundation
Workflow Foundation (WF), a component of the .NET Framework 3.0, enables you to quickly and reliably implement workflows and business rules in your applications. WF provides a framework for constructing sequential and state-machine based workflows for any .NET application or service and includes tools to effectively manage and modify those workflows. In this session, we'll introduce the major concepts and purpose of WF, demonstrate the creation and maintenance of workflows with Visual Studio 2005, and show the potential uses of workflows within your applications.
02:15-02:30 – Take a break and go with the flow
02:30 – 03:45 – Windows Presentation Foundation
Windows Presentation Foundation (WPF) is Microsoft’s new strategic User Interface technology designed to provide richer, high-fidelity, applications using an optimized developer/designer workflow. Learn how to leverage the new features in WPF such as XAML to create visually stunning interfaces to enhance capabilities and user experience of your applications.
03:45 – 04:00 – Zune Giveaway
Register using the links in the schedule above. Looking forward to seeing you out on the road!
-Chris
[Cross-posted from
http://blogs.msdn.com/cbowen]
[Blog moved - please update feed to
http://blogs.msdn.com/cbowen]
The latest issue of the Architecture Journal is now available (PDF version here).
Software Factories are the focus of this issue:
- Bare Naked Languages or What Not to Model
- Domain-Specific Modeling
- Measuring Success with Software Factories
- A Foundation for the Pillars of Software Factories
- A GSI's Perspective of Software Factories
- The Perspective-Based Architecture Method
You can subscribe to the Architecture Journal here.
-Chris
[Cross-posted from my new blog at http://blogs.msdn.com/cbowen]
Bob Familiar, my Architect Evangelist counterpart in New England, has posted details of upcoming events related to the arcStream initiative:
- December 11th - arcCouncil meeting on "Composite Application Architecture and User Experience"
- January 11th - arcLab session: "Take a lap around .NET 3.0"
- There are also many arcCasts on a variety of subjects coming up as well.
More details and registration can be found at the arcStreamEast.net site.
-Chris
The Patterns & Practices team at Microsoft are a very busy bunch and it can be difficult to keep up with what they're working on. To help get the word out, Ron Jacobs, Tom Hollander, Eugenio Pace and Don Smith yesterday conducted the first of what will be quarterly "What are we up to?" webcasts.
You can now view the webcast at your leisure by visiting http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=en-us&EventID=1032282437&CountryCode=US
Some nuggets of information from the webcast include the Enterprise Library 2.0 status:
- The current CTP (August) is available from http://practices.gotdotnet.com/projects/entlib
- It runs with VS2005 Beta 2, but not currently wit the later RC builds
- It is missing a few key features and is good for prototyping, but is not recommended for production purposes
- Next release slated to coincide with the November 7th VS2005 launch.
- Expected to be a feature-complete "high-quality preview" release
- Full, final release planned for one month later (early December)
Keep your eyes out for other interesting projects like the Line-of-Business Application Toolkit (expected Mid-2006) and the Web User Interface Process application block. I'm especially interested in the WUIP because it is an updated web-app-only version of the UIP block intended to address the need for web applications to support Model/View/Controller (MVC) pattern. P&P have also indicated it may be based on the Windows Workflow Foundation, recently announced at PDC.
Good stuff! Keep it coming, guys!
-Chris
I just returned from the Microsoft East Region Architect Forum in Washington, DC and enjoyed the trip. There was some excellent content, but equally important was seeing some old friends and meeting fellow architects from other great companies all along the eastern seaboard.
One subject that (all too briefly) came up during a discussion was that one company has been effectively using mailing-list based technology discussion groups. The key to their success was that by using email, people didn't have to context-switch over to another place for discussions, such as a forums application. Having seen my share of discussion ideas start with a bang and fizzle out from lack of use (forums, intranets and internal NNTP groups,) I clearly understand the value keeping discussions front-and-center with employees' daily routines.
The problem with this approach is that mailing lists have no memory. You send an email and it either gets deleted or squirreled away in various recipients' private folders. A new employee comes along, has a similar question and has to send a repetitive email.
What I need is the ability to set up distribution lists that have the ease-of-use of email, but where messages get stored for all users to access at any later point and, more importantly, are searchable.
Have you seen anything that would enable such a scenario? Configurations of or additions to Exchange? Applications of SharePoint? Are there any third-party forum packages that support posting & reading entirely via email?
-Chris
As announced on the Enterprise Library workspace home, the long wait is now over. You can download the Enterprise Library (aka EntLib) 1.0 from:
http://msdn.microsoft.com/library/en-us/dnpag2/html/entlib.asp
If you haven't already heard, Enterprise Library is basically the next generation of the Application Blocks concept from the Patterns & Practices group. Microsoft and Avanade focused on integrating what used to be isolated blocks into a consistent library of features which can be used, ignored or extended as necessary in your particular environment.
You should definitely take the time to download and look through what there is to offer in this release. The package includes all of the code (and unit tests!), so even if you don't plan on using the EntLib, you could certainly gain ideas from the documentation and code for your own implementations.
-Chris
I'm pleased to announce that I am now a member of the Microsoft Patterns & Practices Customer Advisory Board.
As you hopefully know, the Patterns & Practices group has been consistently publishing great stuff - patterns, guides, reference implementations (like ERDA/Shadowfax), webcasts, application blocks, etc. And of course, the Enterprise Library (coming soon!)
The Customer Advisory Board is a group of architects and technology leaders from a diverse set of companies. We will work with the P&P team, providing feedback and offering guidance to help them set priorities.
I will enjoy working more closely with the people in PAG like Ron Jacobs and Tom Hollander to help ensure that their work continues to be relevant, useful and directly applicable to customer needs.
-Chris
As luck would have it, I happened to be at Microsoft in Redmond this week while the local user group, Dot Net Users, was hosting Avanade's Tim Shakarian. Tim gave a very interesting talk about the upcoming Enterprise Library and dove into detail on the Exception Handling Application Block. Tom Hollander (PM on the Microsoft PAG team) was also present to help answer questions.
Here is a summary of my notes from the session:
Enterprise Library
Enterprise Library (EntLib) is a redevelopment of the Application Blocks currently hosted by the Patterns & Practices team at Microsoft. The blocks are “reusable software components designed to assist developers with common enterprise development challenges.” The EntLib is not currently available to the public, as they are now available only to Avanade, Microsoft and select partners (via the Enterprise Library Partner Program.) They are setting expectations that the EntLib will be available no sooner than January. During the intervening months, Avanade is rebuilding their Avanade Connected Architecture for .NET (ACA.NET) framework upon the services of the EntLib. (Note that the two are distinct efforts - EntLib are the free/community-based/open utilities, ACA.NET is a proprietary, more fully-featured framework which Avanade will use on client projects.)
When released, they will be part of the Microsoft Patterns & Practices library, free for use and will include all of the associated unit tests (current count is 1,900+) and documentation/samples in C# and VB.NET.
There is quite a bit of documentation available at GotDotNet. As Tim happily pointed out, the workspace is so popular that you can just go to the main GotDotNet Workspaces directory page and see it there. But here is the link.
The blocks include:
- Caching - It's for, uh, caching
- Security - Authentication, authorization, basic profile management, etc.
- Data Access - SQL Server, DB2 and Oracle will be supported out of the box
- Crypto - Easy-to-use but extensible encryption
- Exception Handling - (Described in detail below)
- Logging - Used individually or by other blocks to log messages to configured targets
- Configuration - Leveraged by the other blocks (see below)
They are all fully extensible, featuring pluggable providers, replaceable block implementations and guidelines on writing new blocks.
They are designed to work together (e.g. the Exception Handling leverages Logging, Security leverages Crypto, etc.), but they can be used individually.
Tim demonstrated the use of a windows-based Enterprise Library Configuration Console, which drives all EntLib settings for an app and modifies the appropriate .config file for the application to work with the proper EntLib settings. The Console can be extended to add your own custom creations.
Two additional versions are in the pipeline for EntLib. Version 2 will include more blocks for AOP and SOA, more community participation and an expanded Partner Program. Version 3 (release to coincide with Whidbey) will ensure the EntLib is compliant will all of the new platform's recommended practices.
Exception Handling Application Block
After the overview of the EntLib, Tim spent the remainder of the session giving an overview of the Exception Handling Application Block.
Here's an example invocation:
if (ExceptionPolicy.HandleException(ex, "MyPolicy"))
throw;
That's it. The power and flexibility lie in the configuration settings.
Basically, you define one or more Exception Policies. A Policy contains one or more Exception Types (e.g. “System.ArgumentException“.) And each Type contains one or more Exception Handlers.
Exception Handlers tell the system what to do when an Exception of the designated Type is received by the Policy. There will be three Handlers shipped with V1:
- LoggingExceptionHandler
- Uses Logging Application Block, but others could be plugged in (e.g. Log4Net)
- Defaults to event log.
- WrapHandler
- Wraps the original exception with a new Exception type, as specified in configuration
- The original Exception will remain available through the InnerExeption property
- ReplaceExceptionHandler
- Drops the original Exception and places a new Exception in its place (as configured)
Handlers always execute in a configured order. Each Handler has the opportunity to take some action upon the Exception (e.g. wrapping it) and the current exception is then passed along to the next Handler in the chain.
Once the configured Handlers have executed, there is a post-handling action which you can specify as one of the following:
- RethrowAction.None - No rethrow should occur
- RethrowAction.Notify - Tells the calling application that the Policy recommends the Exception should be rethrown.
- RethrowAction.Throw - Throws the resulting Exception to the calling application after all Handlers in the chain have executed. (Again, this may or may not be the original Exception.)
This explains why the (simple) code example above is based on an expression, not a fire-and-forget metaphor used with the current Exception Management Application Block.
The Block ships with two Formatters for logging or displaying Exception details: TextExceptionFormatter and XmlExceptionFormatter. The formatters use Reflection to iterate over any members of the Exception and create and output either in Text or XML. This is very similar to what the current Exception Management Application Block does. Note that the use of Reflection helps to automatically log any custom properties of your own Exception types.
You can easily create custom Handlers. Your class simply implements the very small IExceptionHandler interface. If you wish to have your Handler read settings from the configuration, it should also implement the IConfigurationProvider interface. Tim showed an example of this and it seemed very straightforward.
Being an active user of several of the current Application Blocks, I enthusiastically look forward to working with this new suite next year. Many thanks to Tim for a great presentation. I hope Tim will consider giving a similar talk to the Boston .NET User Group should he be in the area in the coming months!
-Chris