Lamont Harrington's Blog

Microsoft Solutions Development, Architecture, and Technology Evangelism

Yesterday during our Worldwide Partner Conference (WPC) being held in Washington, DC, Bob Muglia, President of our Server and Tools Division at Microsoft, announced the limited availability of our Windows Azure Platform Appliance.

Windows Azure™ Platform Appliance is a turnkey cloud platform that customers can deploy in their own datacenter, across hundreds to thousands of servers. The Windows Azure platform appliance consists of Windows Azure, SQL Azure and a Microsoft-specified configuration of network, storage and server hardware. This hardware will be delivered by a variety of partners.

The appliance is designed for service providers, large enterprises and governments and provides a proven cloud platform that delivers breakthrough datacenter efficiency through innovative power, cooling and automation technologies.

To learn more about what the appliance has to offer to your organization, head over to the Windows Azure Portal.




The Microsoft patterns & practices team are up to it again.  Fresh on the heels of releasing the Developing Applications for SharePoint 2010 guidance, they've recently released part 1 of the Windows Azure Architecture Guidance.

What's in the Windows Azure Architecture Guide - Part 1?

 

 

ComponentDescription
The Guide

"Introduction to the Windows Azure Platform" provides an overview of the platform to get you started with Windows Azure. It describes web roles and worker roles, and the different ways you can store data in Windows Azure. It's probably a good idea that you read this before you go to the scenarios.

"The Adatum Scenario" introduces you to the Adatum company and the aExpense application. The following chapters describe how Adatum migrates the aExpense application to the cloud. Reading this chapter will help you understand why Adatum wants to migrate some of its business applications to the cloud, and it describes some of its concerns.

"Getting to the Cloud" describes the first steps that Adatum takes in migrating the aExpense application. Adatum's goal here is simply to get the application working in the cloud, but this includes "big" issues, such as security and storage.

"How Much Will It Cost?" introduces a basic cost model for the aExpense application running on Windows Azure and calculates the estimated annual running costs for the application. This chapter is optional. You don't need to read it before you go on to the following scenarios.

"Automating Deployment and Using Windows Azure Storage" describes how Adatum uses PowerShell scripts and the Microsoft Build Engine (MSBuild) to automate deploying aExpense to Windows Azure. It also describes how Adatum switches from using SQL Azure to Windows Azure Table Storage in the aExpense application and discusses the differences between the two storage models.

"Uploading Images and Adding a Worker Role" describes adding a worker role to the aExpense application and shows how aExpense uses Windows Azure Blob Storage for storing scanned images.

"Application Life Cycle Management for Windows Azure Applications" discusses how to manage developing, testing, and deploying Windows Azure applications. This chapter is optional. You don't need to read it before you go on to the last scenario.

"Adding More Tasks and Tuning the Application" shows how Adatum adds more tasks to the worker role in the aExpense application. In this phase, Adatum also evaluates the results of performance testing the application and makes some changes based on the results.

The companion samples The samples illustrate all scenarios covered in the book. They provide a “single box” experience with minimal infrastructure requirements.

Click here to download the guidance




The Microsoft patterns & practices team has recently released Developing Applications for SharePoint 2010 Guidance.

What's in Developing Applications for SharePoint 2010?

 

 

ComponentDescription
The guide

"Application Foundations for SharePoint 2010" describes approaches you can use to address the challenges of testability, flexibility, configuration, logging and exception handling, and maintainability; it also explains how to use the SharePoint Guidance Library components in these areas.

"Execution Models in SharePoint 2010" provides deep technical insights into the mechanics of the full-trust execution environment, the sandbox execution environment, and various hybrid approaches to executing code in SharePoint applications.

"Data Models in SharePoint 2010" explains new list and external data functionality and data access techniques, key design decision points that can help you to choose between standard SharePoint lists and external lists, and techniques and patterns to address large lists and list aggregation.

"Client Models in SharePoint 2010" provides guidance on how to best use the new client-side functionality to access data and build richer client experiences with Silverlight and Ajax.

Each section also contains a set of how-to topics. These explain how to perform specific tasks that the team found challenging to discover.

Reference Implementations

This release includes eight reference implementations that you can deploy to a SharePoint 2010 test environment. The reference implementations reinforce the key concepts in the guide and illustrate how to build applications that reflect real-world scenarios. Each reference implementation includes a detailed scenario and design overview, an explanation of the design decisions the team faced for the implementation, and an installation script to automate setup. This release includes reference implementations for the following scenarios:

  • Sandboxed solution
  • Sandboxed solution with a full-trust proxy
  • Sandboxed solution with External List
  • Sandboxed solution with custom workflow activities
  • Farm Solution (timer job)
  • SharePoint List Data Models
  • External Data Models
  • Client Application Models
The SharePoint Guidance Library

The library is a collection of reusable classes delivered as source code that address common challenges in application development for the SharePoint platform. This release improves on the previous release of the library by adding support for sandboxed solutions and taking advantage of new SharePoint features. The SharePoint Guidance Library consists of three key components:

  • SharePoint Service Locator. This provides a simple implementation of the Service Locator pattern for SharePoint applications. The service locator enables you to isolate your code from dependencies on external types, which makes your code more modular, easier to test, and easier to maintain.
  • Application Settings Manager. This provides a robust and consistent mechanism for storing and retrieving configuration settings at each level of the SharePoint hierarchy, from individual sites (SPWeb) to the entire server farm (SPFarm).
  • SharePoint Logger. This provides easy-to-use utility methods that you can employ to write information to the Windows Event log and the SharePoint Unified Logging Service (ULS) trace log. It also enables you to create custom diagnostic areas and categories for logging.

Click here to download the guidance




I was recently contacted through my blog with a question on how to dynamically hide/show a web part on a web part page based on a user's selection of a UI element on the page.  While there's several methods you could employ to perform this task, one nice, neat implementation that you could leverage is posted up on our CodePlex site called the SharePoint Web Part Visibility Filter Web Part.

Through the implementation of this web part, you have the ability to accomplish the following scenario:

You have a standard SharePoint list containing a listing of items that offer selection options and a 'Item Detail' part, which happens to be an implementation of the Visibility Filter Part, that will show detail information based on the user selection from the list above it.

In the screenshot below, upon making a different selection from the list of items, a new details web part is now displayed showing details for the selected item.

Now this implementation is built upon concepts that have been around SharePoint for quite some time, like connected web parts, however, this is a decent implementation that addresses the requirement for being able to dynamically hide and show web parts based on some dynamic criteria.

Head over to CodePlex and take a look at this project.  Pretty interesting!

A few caveats to keep in mind (taken from the notes on the project's CodePlex page):

  • The web part needs to render itself before the web part(s) that may be affected by it (hidden or unhidden), so you need to place it in a web part zone above the potentially affected web parts.  Web parts are rendered in order of their zone indexes, and then their index within each zone.  If a web part is rendered before the Visibility Filter Web Part that affects it, its visibility will not appear to have changed because it was already rendered.  In other words, your Visibility Filter web parts should probably be placed at the top of your page, before all other web parts.
  • This web part does not actually generate any visible HTML output to the page (it affects other web parts) but can emit Javascript to the page. By default, when it is placed on a page, its visibility is automatically set to Hidden. The Javascript it generates is to modify the titles of web parts that it is unhiding (if any). SharePoint adds the string "(Hidden)" to any web parts that are initially hidden and that remains even if this web part unhides them, so it generates Javascript to find the titles of those unhidden web parts and removes the "(Hidden)" string from their title.
  • You may need to include multiple instances of this web part on a page to selectively hide/unhide web parts.
  • Although this web part can dynamically hide other web parts, those web parts will still internally "render". They are hidden using the SharePoint web part API (not via CSS or Javascript on the page) so the data from the web part will not be generated on the page at all, but SharePoint will still "execute" the web part code, so hiding it will not reduce any significant load on the server. In other words, if you have a web part such as a Data View Web Part that queries a SQL database, it will still query the database even if this web part hides it, although the result of the rendering will not be output to the browser. That is to say, if you have 10 web parts on a page and this web part hides 5 of them, except for the time it takes to load the page in the browser, the page will not render much faster because those 5 web parts are hidden. From the server side, it would be as if all 10 web parts were still on the page.

 Enjoy!




One of the cool aspects of working at Microsoft is the opportunity to work on some fantastic projects.  It’s truly been a pleasure working on some great internet facing SharePoint websites that showcase the platform’s ability to service some of the internet’s most demanding websites and show it’s effectiveness as a web content management platform. 

Today, the newly redesigned/re-architected Recovery.gov website that’s running completely on SharePoint Server 2007 was launched!

Recovery.gov

Recovery.gov is a government website designed to provide transparency in to how stimulus funds provided by the federal government are being allocated and spent on various stimulus related projects across the US.  On February 13, 2009, Congress passed the American Recovery and Reinvestment Act of 2009, who’s main goals are to:

  1. Create and save jobs
  2. Spur economic activity and invest in long-term economic growth
  3. Foster unprecedented levels of accountability and transparency in government spending

To that end, SharePoint Server 2007 was chosen as the platform to deliver on the requirements for the Recovery.gov site and will deliver compelling features and functionality that provides deep insight into how stimulus funds are being spent.  Head on over to Recovery.gov and check it out!




p_n_p

The Patterns & Practices team has recently released new guidance around building collaborative applications on the SharePoint platform.

The goal of this release is to help customers understand how to develop large scale, content-driven SharePoint applications that extend the value of existing line of business systems.  It essentially focuses on three primary objectives:

  1. Large Scale – Show customers how to build a large scale SharePoint application.  This includes guidance on building in the manageability, configurability, and performance expected from large scale applications.
  2. Content Driven – More advanced SharePoint applications often include many sites and combine custom coded logic with created content.  The guidance demonstrates areas like custom navigation and publishing, composing web parts with published information, and managing a consistent UI.
  3. Extend LOB Systems – SharePoint can aggregate and extend information from Line of Business systems to end users, enhancing structured business process with informal processes through collaboration.  The guidance shows how to integrate security considerations into business services, and demonstrate how to create collaborative sites that help manage business events like incident escalations and order exceptions.

lob_integration This release integrates new guidance with the original release of the SharePoint Guidance – November 2008 guidance (now retired) into a single download.

 

 

The guidance package contains the following components:

Component Description
SharePoint Guidance Library A set of reusable components that helps developers manage configuration, build repositories for SharePoint lists, log traces and events, and use service location.
Guide The documentation includes a variety of topics, such as how to use design and application patterns, how to integrate LOB systems with SharePoint applications, building scalable applications, upgrading SharePoint applications, and using SharePoint capabilities to create, and deploy content. It also includes the design decisions made for the Partner Portal and Training Management applications and explanations of their implementations.
Contoso Partner Portal Reference Implementation This SharePoint application shows how Contoso created an extranet where it can interact with its partners. Among the items demonstrated are techniques for building manageable and scalable enterprise applications, and how to incorporate publishing and page composition features, flexible navigation, collaboration sites, and LOB integration. It includes more advanced techniques than the Training Management reference implementation and requires Microsoft Office SharePoint Server 2007 with Service Pack 1 or Service Pack 2.
Contoso Training Management Reference Implementation This SharePoint application illustrates how the Contoso Human Resources department manages its training course offerings. It shows how to solve many basic SharePoint challenges that you might encounter when you develop your own applications. Windows SharePoint Services 3.0 is required.

To download this release, click here.




 

Windows Azure Platform  Project Riviera is a comprehensive code sample to demonstrate how to develop multi-tenant highly-scalable line-of-business application on Windows Azure Platform, built by a cloud ISV partner, Cumulux.

Cumulux is a Microsoft partner who’s built their business around  delivering solutions that leverage cloud computing and are keenly interested in making Azure their primary platform for delivering custom solutions for customers.

The reference application been published to the MSDN code gallery at http://code.msdn.microsoft.com/riviera.  You can also see a brief video, architectural slides and related material here (http://cumulux.com/riviera.html)

The main tenants of Azure demonstrated by Riviera Include:

  • Federated Security (using custom STS, .NET Access Control Service and Windows Live ID)
  • Multi Tenancy (On demand provisioning, Tenant Management, extensible metadata)
  • Extensibility  (using Silverlight 3, Workflow)
  • Scalability (using Azure Queues , Async patterns)
  • Flexible SLAs (using SQL Azure / Azure storage partitioning)



BizSpark_Incubation_Week

Sanjay and our ISV Team are at it again and is putting on another great incubation event.  This time it’s around Windows 7!

If you’ve enjoyed the Dynamics CRM Incubation weeks Sanjay and our ISV Team have put on (in Reston and Boston), you’re certainly in for a treat!

windows7 For those of you out in the blogsphere who're local to the Reston, VA area and has a startup business, or is contemplating building competencies around the delivery of solutions on our latest and greatest Windows release, I welcome you to attend the inaugural Microsoft BizSpark Incubation Week for Windows 7, to be held in at the Microsoft Technology Center in Reston, VA the week of August 24th, 2009.  The event will cover the following:

  • Learning and building next generation applications utilizing new and unique Windows 7 capabilities with help from onsite advisors and off-shore development teams
  • Getting entrepreneur coaching from guest speakers and a panel of industry experts
  • Generating marketing buzz for your brand
  • Creating an opportunity to be highlighted at the upcoming Windows 7 launch

My colleagues, Sanjay Jain and Ashish Jaiman, and the ISV Evangelism Team is hard at work putting this outstanding event together.  To get more details about this event, head on over to Sanjay's Blog or e-mail him or Ashish directly to nominate your team.

To learn more about how Microsoft can help startups, head over to the Microsoft BizSpark Website.




The April Update of the Azure Services Training Kit has released and is ready for download. Below is a brief overview (taken from the download site) of what's included in the latest release.

Overview
The Azure Services Training Kit includes a comprehensive set of technical content including hands-on labs, presentations, and demos that are designed to help you learn how to use the Azure Services Platform. The April release includes the following updates:

  • New Presentation for SQL Data Services
  • 2 additional hands-on labs for WIndows Azure PHP and Native Code support

This technical content covers services including: Windows Azure, .NET Services, SQL Services, and Live Services.




The final March 2009 CTP for the Visual Studio 2008 Extensions for SharePoint (v1.3) has now been recently released.  Head on over to Paul Andrew's Blog (Paul is a Technical Product Manager on the SharePoint Team) for a rundown of the new capabilities available in this CTP.  Also with this release, we released a set of ten fresh new themes for SharePoint built as VSeWSS projects. Here’s a thumbnail of the new designs available to VSeWSS SharePoint Developers now.




Calendar

<<  August 2010  >>
MoTuWeThFrSaSu
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

View posts in large calendar

Disclaimer

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

© Copyright 2009, Lamont Harrington.