Three Is It

Because two isn't enough and four is just too many

Terror is a tactic. We can not wage "war" against a tactic.
Congressman Ron Paul
Home Blogs Genealogy Brad's Bookshelf Subscriptions Contact Sign in
 

About the author

Brad Butts is a .NET developer and architect. He is married with children and enjoys reading, working out, and genealogy is his five minutes of spare time.
E-mail me Send mail
National Debt Clock

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008

TechEd08 Notes: Day 1

Session: Taking Advantage of Microsoft Enterprise Library for Visual Studio
This session was held in one of the conference theaters: a section in the middle of the large conference area floor cordoned by 10' high cubicle walls with seating for about 50 people.  Last year, I found these venues frustrating because of all the noise around the theaters: the main conference area floor played host to not only the theaters, but to tens of booths manned by Microsoft employees on hand to answer questions about specific technologies, the lunch area, the vendor section, and a number of other noise-inducing distractions.  This year, while much of the environment remained the same, I did notice that the theaters seemed better constructed to muffle the outside noise--at least, I could hear the speakers much better this time around.  I'm sure the fact that Microsoft split the conference up into separate Developer and IT editions--reducing the attendance by about half--helped reduce the ambient noise, as well.

One problem solved.  The next problem, though, was seating.  The theaters played host to a number of interesting topics and, as a result, a number of people would show up to these sessions.  If you wanted to get a seat, you had to be at least 20-25 minutes early.  If you wanted to get some room on the carpet, you usually had to be at least 15 minutes early.  Once seat and carpet were full, forget it: you could stare through the glass wall at the back of the make-shift room, but could hear no sound.

As to my thoughts on the session on Enterprise Library?  Well, I arrived at the theater at about 5 minutes before the start of the session.  Better luck next time, I guess.

Session: Messaging, Identity, and Workflow in the Cloud
Since I couldn't attend the session on Enterprise Library, Plan B was to check out this session on Messaging, Identity, and Workflow.  I had no idea what this session was about exactly, but I've been struggling with messaging (.NET to JMS, specifically) and identity (web service authentication, to be exact) at work, so surely this session would offer some value to me in those areas.

Well, this session was all about a new offering from Microsoft: Biztalk Services.  Biztalk Services (not to be confused with Biztalk Server) is an experimental offering to foster better connectivity between service endpoints.  It includes some pretty interesting security and entitlement features to help you secure your services.  I don't see much business value here (for one, this service is an unsupported experiment), but it seems like something that might be fun to play around with.  Presenter Justin Smith played a very entertaining video involving Biztalk Services and robots--that alone made for great session material!

Session: Architect or Developer: Tips and Tricks for Guiding and Supporting Innovation
Boy, it sure would be nice to have a culture of innovation at work.  Sounds like this session is poised to offer me great advice on promoting such concepts at my company.  Unfortunately, the timing of this session gave me only 15 minutes to traverse the conference floor from my previous session, wade through the lunch line, wolf down lunch, and high-tail it to this session.  Oh, and yes, it was being hosted in one of those dreaded theaters.  Guess I'll pass on this one, too, and enjoy my pastry dessert.

Session: Writing Administration Tools for your Applications
This session was presented by Brian Randell in one of those dreaded theaters, again.  I attended one of Brian's presentations last year--don't remember the title.  However, I do remember him making an intriguing statement: something to the effect of, "since we now have Powershell, is there a need anymore to write .NET console applications?"  This statement motivated me to look harder at Powershell as an alternative hosting "UI" for my .NET binaries.  For instance, there has been a revival over the last two or three years in the separation of concerns paradigm in ASP.NET development.  Specifically, we've seen multiple, robust implementations of the MVP and MVC patterns appear recently.  One argument in favor of adopting these patterns is the code-reuse argument: that, if we properly separate the business operations of an application away from its UI, that code base can be reused elsewhere.  So, I should be able to take the code base of an ASP.NET application and front it with a Winform or WPF UI to suddenly turn the application into a desktop app.  Could I not then also take that same code base and front it with a Powershell script and turn the application into a command line driven application or even a batch-based application that I can schedule to run nightly across thousands of records?  But I digress.

Brian began his talk by quoting from the TechEd mini conference guide regarding the nature of sessions that are suppose to occur in these "interactive" theaters:

  • Small and informal (so explain why there was no room for me at the previous theaters I wanted to attend)
  • Interactive and discussion based
  • Chalk talk and white board formats
  • 30-75 minutes in length

Interactive and discussion based.  In other words, "I have no thorough presentation for you based on my research and experience.  Rather, I want to hear what you, the attendees to this session, think should be the solution."  Great.  I was really hoping Brian would share some examples of administrative tools he's written in the past, particularly with Powershell (in reference to his last year's comment).  Instead, he presented a list of important points he felt an administrative tool should address.  When I say administrative tool, I mean a tool you write to administrate your actual solution.  In my mind, this could be a tool to alter configuration settings--perhaps turn on, turn off, or somehow change diagnostic settings, change connection strings, and so on--a tool to view log information, etc.  Even though I was expecting a standard presentation on this topic, Brian still conveyed some interesting information.

He noted that the Visual Studio 2008 IDE could be deployed as a shell--without all the code editors and other tools and plug-ins you normally get with your license, I guess.  This makes sense because that's how the Team Foundation "fat client" deploys.  Normally, you access TFS from a TFS plug-in in Visual Studio; however, if you want to access TFS from a machine in which Visual Studio is not installed, you can install the TFS fat client, which is just the Visual Studio shell plus the TFS plug-ins.  Brian mentioned that admin tool option could be writing a Visual Studio plug-in and then deploying your plug-in with the Visual Studio shell.

He mentioned that tool developers should consider the different UI options: command line, Winform, Web and even devices.  Specific technologies could include Powershell, WPF, and even the Microsoft Management Console (MMC).  On MMC, he said that for older versions, writing your snap-in was difficult.  Typically, you'd have to write your snap-in in C++ or VB6.  However, the new version of MMC, version 3.0, apparently allows for greater extensibility options.  Brian mentioned that the February 2007 Windows SDK (and greater, presumably) includes support for MMC 3.0 snap-ins and samples.  MMC 3.0 will only work on Windows XP SP2 and Vista.  Will it work on Windows 2003?  Don't know.

Other considerations could include support for COM so that admins would have the option of scripting the tool from within VBScript or JScript.  My thought: forget that.  Isn't this another reason we now have Powershell?  Someone in the crowd mentioned that Powershell templates in Visual Studio made it easier to write Powershell scripts.  I wonder if he was referring to this

Finally, I noted some of Brian's thoughts around leveraging WMI for administrative management.  He mentioned that Visual Studio 2008 makes it easier than ever to take a look at the types of data published to WMI.  In the Server Tool, there's a node labeled as Management Classes and another labeled Management Events.  These nodes let you take a peek at the WMI world on your machine.  Right-clicking either node gives you more options.

Session: Decoupling Contract from Implementation: Microsoft .NET Interface-Based Programming End-to-End
Juval Lowy is a man on a mission: hide your implementations behind interfaces always and all the time!  And what's this crap about Microsoft's increasing use of abstract base classes?  Abstract base classes are too lenient in that deriving classes are not required to provide implementations for every method and so on.  Interfaces are the way to go.  Juval covered some very interesting tricks you can leverage for explicit implementations of interfaces and casting.  I'm definitely going to have to pull down and go over this presentation again when the TechEd media comes out. 

Session: From Zero to N-Tier in 75 Minutes
Paul Sheriff presented this session.  Paul's a fairly prolific writer in a few of the technology journals out there.  I do remember seeing his name on particular articles from time to time.

So, what is a Tier and what is a N-Tier architecture?  In most circles, technologists will tell you that a Tier is associated with a physical layer of an application.  For instance, you could host business processing components on an application server.  You would probably call that the Application Tier.  An application's database is usually hosted on a physically separated server called the Database server.  This would be known as the Data Tier. 

Tier is contrasted with Layer: most technologists will tell you that a layer is a logical separation of certain components.  For instance, good development practice would insist on separating all business processing code away from the user interface.  The user interface components--ASPX pages and such--would live in a UI layer while the separate business processing code would live in a Business layer.  The Business layer itself would be further broken down such that code used to access data repositories would be separated out to yet another layer traditionally called a Data or Infrastructure layer.

So, with this kind of understanding, I was eager to see what Paul would come up with:  would he advocate an SOA approach to N-Tier architecture by demanding that all business processes live behind WCF services in an application farm?  If so, what kind of bindings would he recommend?  What kind of security would he recommend and would he discuss caching of security credentials to improve performance?  If not WCF, would he recommend .NET remoting?  I've done very little with remoting, so it would be very interesting to hear what arguments he might have for .NET remoting in a WCF world.  Aside from WCF and .NET remoting, what other considerations should we take into account when architecting a .NET, N-Tier solution?  Would Biztalk Server fit somewhere in here?

Unfortunately, Paul didn't present a discussion on an N-Tier solution.  Rather, he presented an N-Layer solution discussion.  Interestingly, he acknowledged that he knew the differences between the two terms in one of his first slides, yet his entire presentation was about taking a flat .NET solution and refactoring it into multiple logical layers. 

I found this pretty frustrating: there are hundreds of posts on the internet on how to construct an N-Layer solution.  What is not so widely discussed are the pros and cons of an N-Tier solution and recommendations for how to proceed with such an endeavor.  Here's Rocky Lhotka's thoughts on the topic (and David Hayden's).  I probably should have left and looked for another presentation--perhaps that one on multi-core development or that one on WPF data templates.  I guess I stayed hoping that he would, at some point, jump into the N-Tier discussion.  Alas, he did not.  What's more, his refactoring efforts included no discussion of interfaces, MVP, or MVC, nor did he discuss other separation concepts like ORM.  Moral of the story: don't just rely on the session title to tell you what concepts will be discussed.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:
Categories: Technology Blog
Posted by Brad on Thursday, June 12, 2008 4:27 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Related posts

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

Thursday, November 20, 2008 6:41 PM