Sharepoint Best Practices Seminar Series

I would like to announce the Sharepoint Best Practices Seminar Series. The SharePoint seminar will be followed by a Silverlight Bonus track presentation.


Sharepoint Best Practices Seminar
Are you interested in "getting more" from the investments you've made in MOSS 2007?
Have you implemented all the capabilities in MOSS 2007 that benefit your company?

Join us for a complimentary 1/2-day seminar that will feature:
· MOSS 2007 best practices overview
· Proven tips on deployment and customization
· A discussion of server set-up to optimize performance
· Advice on management and governance

We will also cover business issues, search capabilities, extensibility, and much more!
Register now: Reston, VA | Washington, D.C. | Baltimore, MD

Silverlight Bonus Track
Advanced SharePoint User Experience with Silverlight
Learn how Microsoft Silverlight 2.0 can be leveraged with SharePoint 2007 for delivering the next generation of .NET-based media experiences and rich, interactive user experiences.
(Lunch will be provided. This session will immediately follow the MOSS presentation and will last approximately 30 minutes.)


For this and other events please visit
RDA Events.

Making the move to Microsoft Azure (CTP)

As more information becomes available about the Azure CTP release, there have been a lot of questions about making the switch from local software and services to the Software plus Services (S+S) model embraced by Azure. What types of applications fit in Azure? Do I have to completely re-architect my solution?

(An overview of what Azure provides can be found here.)

First, what is S+S? Very simply, S+S encompasses applications that may be installed locally, but rely on cloud (or internet) based resources for some/all functionality. Consider your favorite tax preparation software (2 big ones come to mind). How do you get yearly updates? How do you file your return? In my case, I downloaded the current version of the application, installed it locally and then it connected to an internet service to check for and download updates. I then, locally, filled out all of the necessary information to file this year’s return. Once complete, the application again connected to an internet service to electronically file my return. This is a great example of S+S in action. A local application containing at least partial logic connected to an internet based service to provide complete functionality. If this software didn’t provide up to date forms, laws and regulations and current validation routines, would you use it? If you still had to print and mail your return instead of filing electronically would you still use the software? I wouldn’t.

Why should I care? Microsoft views S+S as a fundamental shift in the way we build, manage and deploy software for the enterprise. Today’s technology is reaching the point where our applications can take advantage of internet/cloud based processing and storage without giving up security or performance. The ability to off-load processing and storage to the cloud can provide great cost savings through reduced capital and maintenance costs plus the fact that a cloud based service can be versioned and updated without having to affect any client machine.

What types of applications fit in Azure? I’d like to answer the inverse of this question; what types of applications don’t fit in Azure? There are a variety of potential reasons not to place an application in the cloud, but here are some of the common ones I’ve run into:

  • The application would require firewall changes to allow access to internal systems and those firewall changes are unlikely to be approved or pass a security audit.
  • The application requires extremely low latency or cannot be updated to be able to recover from transport errors or retries.
  • Other security or audit concerns (HIPAA, Federal regulations, etc) which have not yet been addressed by Azure (CTP remember?)
  • Internet connectivity is not possible or is not allowed by some local policy.
  • Very small, self contained applications that fit within an existing server infrastructure that will simply not be going away regardless of where this small application is hosted. (meaning Azure would at no time eliminate the need for those servers)

Do I have to completely re-architect my solution? Do you have to? Not entirely, but you certainly might want to in order to take advantage of what Azure provides. Here are some questions you can ask yourself to get an idea of the scope of an Azure conversion:

  1. Can my application run under medium trust? (The Azure CTP runs under a security model equivalent to medium trust. Not sure? Change the trust level in IIS for your application and test it! If it fails you will have to make some changes for Azure.)
  2. Does my application make use of the ASP .Net membership provider? (You will have to replace it with something compatible with the Azure Access Control system or fully custom. The Azure SDK includes samples for some new cloud-enabled providers.)
  3. Does my application require access to local network resources that are not available outside the firewall? (You might have to write services to bridge the gap, check out the Azure Service Bus in .Net Services.)
  4. Are my presentation and business tiers separate? How do they communicate? (Could your business tier logic run as a worker role in Azure? Inter-role communication can be accomplished through Queues and other Azure local storage.)
  5. How do I use state in my application? What if state were lost in the middle of a user’s session?
  6. How does my application store and retrieve data? (Traditional ADO .Net is not supported in Azure, you will have to convert to another storage mechanism or a solution similar to #3 using the Service Bus.)

Simple, stateless ASP .Net applications that can run under medium trust may be candidates for a direct port to Azure. The sticking point will be your data access. Azure supports ADO .Net Data Services (Astoria) but does not currently support traditional ADO .Net. You may find that you will need to swap out your storage providers for Azure storage or SQL Services. Most other applications will require some level of coding to function under Azure, and might benefit from some architectural changes to take full advantage of Azure.

Some beneficial architecture changes worth considering:

  1. Break your application into web and worker roles. Offload processing (asynchronously if possible) to the worker roles using queues. This could provide significant performance improvements over a single web role doing all of the work. This also allows for scaling of your presentation and worker tiers separately.
  2. Instead of a custom data layer, make use of the REST support in Azure storage and Sql Services. Complete entities can easily be read and searched using REST and full CRUD support is also available.
  3. Convert your security model over to the .Net Services Access Control. This can allow AD integration, use of Live id’s or various other combinations of user authentication.

In closing, I’d like to share some (random) interesting tidbits about Azure that I’ve picked up recently.

  1. The Azure CTP is currently hosted in a single, west coast data center. Additional data centers are under construction in the US and more are planned internationally.
  2. Each data center is a significant investment for Microsoft. I’ve heard on the order of $500 million per data center.
  3. There is no official release date for Azure, but rumors are that it will be sometime in 2009.
  4. Interesting use case #1: use cloud-based storage for archival data. Need to keep data forever? Stuff it in the cloud and get rid of those pesky (and expensive) disk arrays that sit idle most of the time.
  5. Interesting use case #2: have a site with flat demand/usage 9 months out of the year or have seasonal spikes in usage? Stick your application in the cloud during your high usage periods; keep it local the rest of the time. Your users will never know and you can eliminate the local infrastructure necessary to support those spikes. (fewer servers, lower power consumption, free up some of that rack space!)
  6. Even though the CTP says it is by invitation only – all you have to do is apply for an invitation. For Azure and Live Services tokens it seems to be about a 1-2 week delay. .Net Services and Sql Services are taking longer right now. You don't need a token to start developing locally though - the SDK includes a local developer fabric that simulates a full Azure deployment.
  7. You can use Windows Server 2008 for your local development environment if you don’t want to install Vista SP1. Don’t try to run the developer fabric under Windows 7 Beta though! (ok, there may be unsupported workarounds, but I’m not covering those here)

Prism 2.0 Release is Live

I would like to share the recent Prism 2.0 release announcement from Microsoft's Patterns & Practices team. It was a great experience working in an advisory role again for the team. The first release of Prism came out last July providing support for WPF applications. Release 2.0 provides support for SilverLight, allowing applications to share much of their code base while providing greater reach in deployment. The announcement and Prism details are provided below.


Composite Application Guidance for WPF and Silverlight v2.0 (PRISM)


What’s PRISM Goals Getting Started Videos & Presentations About patterns & practices


What’s PRISM?
The Composite Client Application Guidance is designed to help you more easily build modular Windows Presentation Foundation (WPF) and Silverlight client line of business applications.
These types of applications typically feature multiple screens, rich, flexible user interaction and data visualization, and role-determined behavior. They are built to last and built for change. This means that the application's expected lifetime is measured in years and that it will change in response to new, unforeseen requirements. This application may start small and over time evolve into a composite client—composite applications use loosely coupled, independently evolvable pieces that work together in the overall application.
Included in this release:
· Composite Application Library
· Reference Implementation (Stock Traders application in WPF and Silverlight)
· Quick starts (9)
· How-Tos (26) and
· Lots of documentation for everything you want to know about UI patterns and client architectures
Click here to download this release.
Quick Links

http://www.microsoft.com/compositewpf
http://www.codeplex.com/prism

Download here


Goals of This Release
Prism 1.0 shipped in July 2008 with support for WPF. This release takes the composite line of business scenarios and provides guidance on how to extend the scenario to Silverlight by:

· Providing guidance on building modular and composite Silverlight applications.
· Simplifying the composition of the user interface.
· Providing guidance and light tooling on reusing code between Silverlight and WPF.



Getting Started
The Composite Application Guidance is for building modular applications using WPF or Silverlight. You should consider using the Composite Application Guidance in any of the following scenarios:
· You are building a application that presents information from multiple sources through an integrated user interface.
· You are developing, testing, and deploying modules independently of the other modules.
· Your application will add more views and more functionality over the coming years.
· You must be able to change the application quickly and safely to meet emergent business requirements.
· Your application is being developed by multiple collaborating teams.
· Your application targets both WPF and Silverlight, and you want to share as much code as possible between the two platforms.
The following topics
may help in understanding the guidance and how it applies to your scenarios:
· When to use this guidance
· Intended audience
· Evaluating the Composite Application Guidance
· Modularity design concept
· UI composition design concept


Videos and Presentations
Channel 9 videos
(http://channel9.msdn.com/shows/Continuum/Prismv2/)
( http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/)



About patterns & practices
The Microsoft patterns & practices (p&p) team is responsible for delivering applied engineering guidance that helps software architects, developers, and their teams take full advantage of Microsoft’s platform technologies in their custom application development efforts.

Our goal is to help software development teams be more successful with the Microsoft application platform. We do this by delivering guidance that:

· Helps to simplify the Microsoft application platform.
· Provides solution guidance to common problems.
· Helps development teams grow their skills and learn.

For more information:
http://msdn.microsoft.com/practices