SilverLight 4 – Out in beta with lots of new features

The new SilverLight release was previewed on Microsoft PDC. It will get full connectivity with SharePoint 2010.

New key features:

  • 200% faster (?)
  • Support for web cams and microphones
  • Official Google Chrome support
  • C# and CLR code without recompile (dynamics?)
  • 60 customisable and styleable components (rich text box, data grids etc)
  • Right-to-left support and localisation for 30 new languages
  • Multi-touch support

Get the beta and more information at http://silverlight.net/getstarted/silverlight-4-beta/

Working with SharePoint 2010: The “Developer Consultant”

From all the new features in SharePoint 2010, most seem to be focused around developers and development productivity. There are lots of talk about the new Visual Studio 2010 tools for SharePoint, the “Business Connectivity Services” and sandboxed web parts.

Does this mean that we will spend more or less time writing actual code?

At the SharePoint Conference in Las Vegas, I sat in on the “best practises” session where few new topics were covered. 90% of the material was taken from existing SharePoint guidance documentation and sandboxed solutions were touched upon. However, one single line stuck in my mind - “developers, know your platform”.

I have time after time seen developer-heavy implementations of solutions that could have been created using configuration of existing components in SharePoint. At the same time, I have seen solutions where one or two features of SharePoint have been used (and abused) to encompass all scenarios. This is simply because the implementation has been done by someone who has limited knowledge about SharePoint as a platform.

From a developer’s point of view, here are the major changes in SharePoint 2010:

  • Less code and more configuration
  • Less hand-hacking of definition files and more exports of prototypes into solution packages
  • Less custom solutions and more reliance on out-of-the-box solutions combined with empowered end users

As an example: I recently had very similar requests from two very different clients. They both wanted “powerful” reporting across data sources and against multiple criteria. It also needed to be easily reconfigurable to fit future needs. Both clients mentioned analysis and data mining in loose terms around “dimensions”. This could easily have been steered into a long and expensive project with OLAP data warehouses, reporting models, Excel Services and Performance Point Server, and the developer in me started talking about this approach on both occasions. However, when I demonstrated what could be achieved by connecting Excel and Access directly to the SharePoint list data and performing pivot reports against the data, both clients were more than happy. In the end, I ended up proposing more time on end user training and configuration and hardly any custom development.

The same story can now be applied to requirements surrounding accessibility, standards compliance, integration of line-of-business systems and external data and workflows.

SharePoint 2010 does empower the developer, but more importantly – it makes the development cycles shorter, provides better tools for packaging prototypes into solutions and further empowers end users to interact with the platform with rich client tools.

Out: Large development teams. In: Developer consultants!

Microsoft to offer “Application Marketplace” in SharePoint 2010

Microsoft will offer an application marketplace in SharePoint 2010, where third-party suppliers can publish applications into “The Gallery” (think Windows Marketplace/Apple App Store etc), a feature in SharePoint 2010 that serves as a central place for templates.

RIght now there are very few details about the rules and regulations surrounding the marketplace, but I bet that the lines of sandboxed solutions won’t be too far off.

Read the full article at ReadWrite Enterprise.

The new OpenXML SDK

I have spent the last couple of weeks creating a Word report based on SharePoint data that spans over a hundred pages using tables and custom graphs.

To do this, I used OpenXML. The file format (.docx) is basically a ZIP file containing a bunch of XML files. I did this using LINQ, XSLT and System.IO.Packaging to compress and order the XML sections into a .docx file.

The OpenXML SDK version 1 allows you to manage the packaging side and relationships of the “parts” (XML files).

The new SDK allows you to manage the entire document directly using LINQ which would have bypassed my 60+ XSLT library that I had to create for the original conversion to work. The structure of the program would have been the same but could have saved me a lot of code lines!

When creating OpenXML documents you often end up with corruption. The file is missing a relationship between a diagram and the underlying data, and ID of a part is repeated and so forth. Opening the file in Word will give you a nasty error without any detailed information. You are now left to open the document and manually figure out where the corruption could have occurred. The SDK now contains a class called OpenXmlValidator which will validate the entire package and give you a detailed error report. Again, this could have saved me hours and hours of debug time.

To make things even better, the SDK contains some fantastic tools. My favourite is the Document Reflector which opens an OpenXML document from a template and will give you the full code for how to generate that document using the SDK. Now, I don’t even want to begin to estimate how much time THAT would have saved me.

As a final nail in my coffin, SharePoint 2010 introduces REST for Excel Services. My report contained 50+ graph reports which had to be created using 6 different XML parts. This can now be done by inserting the graph generated directly by Excel services using SharePoint 2010.

The final version of the new SDK will be released together with Office 2010.

Geographically distributed deployments of SharePoint 2010

SharePoint 2010 brings a large amount of improvements for geographically distributed SharePoint installations.

SharePoint deployments can be categorized in the following segments:

  • Uni-centric deployments
    SharePoint is installed on a single data centre with a geographically dispersed user base.
  • Multi-centric deployments
    SharePoint is installed on multiple data centres across regions/continents and clustered user bases close to the data centres.
  • Hybrid deployments
    SharePoint is installed on multiple data centres with a geographically dispersed user base.

Globally dispersed users can be categorized into the following segments:

  • Local/LAN users
    Users with high bandwidth, 1mb connections and up and low latency at less than 50ms per roundtrip
  • Continental latency
    Users with high bandwidth (ADSL, cable) but higher latency at up to 125ms per roundtrip
  • Global users
    Users with high bandwidth but with even higher latency at up to 300ms per roundtrip
  • Low bandwidth users
    Users in developing countries, satellite links, mobile connections. These users would have low bandwidth and very high latency – too disperse to estimate

Out of these figures we can estimate WAN performance. These figures show degradation in time for the first page to load (PLT1) over different segments assuming that LAN users are the starting point at X seconds:

Segment PLT1 Example
LAN X 3 seconds
Continental 2X-4X 6 to 12 seconds
Global 4X-8X 12 to 24 seconds
Low band ?? Very hard to estimate

 

SharePoint 2007 deployments

The vast majority of SharePoint 2007 deployments used the uni-centric deployment as network related issues were too great to overcome. This is due to the nature of a farm, where all servers communicate with each other as a “single entity”. The farm has a “shared services provider” which is a site on the farm that contains services that are shared between web applications on the farm. These include searching and user profile storage and management.

SharePoint 2007 can be installed over separate databases during a global deployment so that team/department site databases can reside closer to its intended user base, but the shared services and farm configuration database must still be shared. This causes a lot of communication over global connections and keeping these at high speed and low latency is both costly and difficult.

New capabilities in SharePoint 2010

  • Cross-farm/multiple instance Shared Services
    The “shared service provider” is not obsolete. Services are provisioned per web application and can be hosted either on the same farm or on a remote or “master” farm. The services can also be configured in multiple instances (for simultaneous access over load balancing) or customised per web application. Remote shared services, i.e. published services, also involve caching between farm instances for performance optimization. The most common shared services are user profile storage, managed meta data services (farm/cross farm shared content types and taxonomy), search and BDC/BCS connectivity services.
  • Uninterrupted log shipping
    Creates read-only farms by using SQL log shipping of the entire farm. This can be very useful for creating local copies of content for users on remote continents. Log shipping sends a diffs (differential data packets) of the data and is therefore very fast. As an added bonus, you can use the read-only farm as a disaster recovery platform where you can turn off the read-write farm and make the read only farm the master read-write farm.
  • FSSHTTP
    This catchy acronym stands for “File Synchronization via SOAP over HTTP” and works by reading/writing diffs between the SharePoint server and Office 2010. When reading a file, a checksum is sent to the server. If there are any changes, then only the change diff is downloaded to the end user. This will drastically reduce network usage when working with large documents and/or large numbers of documents.
  • ODC
    Another acronym that stands for “Office Document Cache”. This application lives on the client machine and manages diff replication of documents between the client and the server. Normally, when saving a document, the Office application will wait for the document to finish saving. With ODC, the document is saved to the “save queue” and is synchronized in the background. This also allows for offline access of already opened documents as well as "offline saving”. Multi-master merges are solved by the ODC engine.
  • SharePoint Workspace
    This is the new version of “Groove”, an application that looks like any other Office application but contains an explorer-like view of the SharePoint data. You can synchronize documents and lists for offline viewing and editing.
  • Office Web Applications
    Documents can be viewed/previewed and edited directly in the browser using client script and AJAX. Not only does this mean that users do not need the full Office client on their local machine but it uses much less bandwidth.
  • Mobile Access View
    The mobile version of SharePoint has been vastly upgraded and now covers the entire site collection. It can be customized as in the previous version but also includes Office Web Applications. The mobile view can be used with standard browsers as well. Documents can be viewed as text only or as image snapshots. In a demonstration I saw a comparison of a document at 432kb using up only 14kb when viewed in mobile view.
  • Windows 7 Branch Cache
    This works as a content proxy for any asset such as documents and images. Branch caching can work in peer-to-peer mode, where computers in the workgroup are queried for a document before going to the server. You can also install a dedicated branch cache server using Windows 2008 R2 on the network. The branch cache is again diff aware and can greatly increase performance on satellite worker hubs.