Skip to main content
Joe's Blog

Joe's Blog

Go Search
  

Joe Homnick Blog
Developer Opportunities with SharePoint Online
I have been working with the new Microsoft Business Productivity Online Suite (BPOS) lately which a Cloud Computing offering.  Cloud Computing is basically delivering Software as a Service (SAAS) and moving all server infrastructures online instead of on-premise.  BPOS is made of SharePoint, Exchange, Communications Services and Live Meeting.  If anyone has worked with setting up server infrastructures knows the time and expense required to install and configure SharePoint, Exchange and Communications Server.  
 
Of course, by moving the infrastructure to the Microsoft servers, you need to play by their rules and therefore have some limitations on what types of developer customizations are allowed.  I have worked up a presentation on what you can and cannot do with the SharePoint Online offering related to Developer customizations.  I will be presenting this at Florida Users Groups over the next couple of months, so check http://GCUsersGroup.org for  a meeting in your area.  The following is the session abstract.
 
All versions of SharePoint 2007 have many hooks for developers to extend and add valuable customizations with.  These opportunities include creating customizations with SharePoint Designer, Web Parts, Web Service API, List/Library manipulation and Content Management.  Since SharePoint Online is a managed service by Microsoft, some customizations like Feature deployment and code behind is not supported.  However, there is still a wealth of customization opportunities available.  This session looks at what is available for Developer customization in SharePoint Online and contrasts it with the opportunities available with an on-premises solution.  This session is an excellent source of what can be done with SharePoint customization in both online and on-premise implementations.
 
Below is a handy chart to see what features are available in the SharePoint Online versions and on-premises versions.
 
SharePoint Online Features
Online Infrastructure – The Future of Software like SQL Server and SharePoint
Microsoft is launching a series of online software offerings they call Software as a Service.  You might have heard the term “Cloud Computing”, which basically means all infrastructure is online.  Under this scenario all those things related to infrastructure, such as the buying, configuring and maintenance of servers along with the installing and maintaining of the software is borne by Microsoft for a flat fee.  The thing that Microsoft is doing that differentiates from other online infrastructure offerings such as SalesForce is that there is a compelling offline component to the service along with strong developer support for customizations.
 
I’m doing a new presentation at the Florida Users Groups on these lines of offerings which starts with a service currently being offered, which is CRM 4.0.  Coming online shortly you will be able to deploy Exchange mailboxes and SharePoint site without any infrastructure requirements beyond a browser and mail client like Outlook.  The Outlook client gives quite a bit of flexibility regarding offline use of the services, whether it is CRM, SharePoint or Exchange that you connecting to.  The other Office components even enhance this online/offline experience further.  Finally, there is the new SQL Server Data Services coming that allow you to take your SQL Server infrastructure online.
Features in SQL Server 2008 that will affect future versions of SharePoint

Some of the coolest new features in SQL Server 2008 are non-rel ational data types.  These include Spatial, Filestream, Sparse Column and Hierarchical.  These types are implemented through SQLCLR Type definitions and include extended properties and methods that support their non-relational nature. 

The Filestream and Sparse Column types have special meaning for SharePoint. 

Filestream is a type that allows for storage on the NTFS file system instead of within the usual database store and is particularly efficient for Binary Large Object (BLOB) types of storage.  This Filestream storage uses the SQL Server transaction and Transact-SQL systems while not incurring the overhead of storing to image types.  SharePoint uses a lot of libraries of BLOB data in the form of documents, images, video’s, etc. that could definitely benefit from this type of storage.  The efficiency gains for SharePoint library data should be impressive.

Sparse columns allow for differing values to be paired with key values.  For example take the products table that has an ID field for a key value and then multiple pairs of information that vary based on the type of product.  So a type of Camera might have sparse columns of Zoom and Resolution measures while Pants might have sparse columns of Waist Size and Length measures.  Instead of creating static columns, this scenario can now be defined as a sparse column type.  This saves space since only individual sparse entries take up any bits, there is no issue related to exceeding the number columns in a table limit and another cool feature of SQL Server 2008, Filtered Indexes, give you fast access to specific sparse types.  If you think about how SharePoint Lists and Libraries are structured with multiple columns and attributes, this Sparse Column type plays nicely into an efficient, fast storage method.   

SQL Server 2008: The Need for Speed
SQL Server 2008 is FAST!  The increase in performance in this latest release is reason enough for an upgrade. 

On the database engine front there are features such as resource governors, filtered indexes, read ahead scan caching, improved parallelism, native data compression support, sparse column support and non-relational data types.  Pulling it all together is the new Performance Studio, which is an integrated framework that you can use to collect, analyze, troubleshoot, and store SQL Server diagnostics information.

Developer enhancements also contribute to this SQL 2008 need for speed.  Throughput is enhanced with new capabilities including Merge statements, Grouping Sets, Row Constructors and Table Value Parameters which decrease scans and round trips.  Predicate filtering and bitmap iterators increase query performance.   There are also TSQL enhancements that leverage the new non-relational data types.
 
The Business Intelligence (BI) products of Reporting Services (SSRS), Integration Services (SSIS) and Analysis Services (SSAS) all have performance optimizations.  The design environment in Visual Studio 2008 has been performance optimization, so those old long waits for projects to load and build have been minimized.  SSRS now runs without the need for IIS with more memory optimizations including throttling settings and a new rendering engine speeding throughput.  SSIS has new lookup caching options and buffer allocation optimizations.  SSAS has query performance gains with optimization features like block computations.  Scale out capability has been greatly increased with shared OLAP databases.
 
There have already been record Transaction Processing Performance Council (TPC) benchmarks recorded with SQL 2008.  Here’s a link to look at the preliminary results, more to come when SQL 2008 ships in a couple months.  http://www.microsoft.com/sqlserver/2008/en/us/benchmarks.aspx.
I’ll be doing a presentation on the above over the next couple months to Community Driven Users Groups around the state of Florida the next few months, check out http://GCUsersGroup.org for more information.
Speeding up your Virtual PC (VPC) Machines with a Flash USB drive
For several years we have been speeding up the throughput on our VPC driven in-house Microsoft classes by placing the undo file on a separate physical hard drive from the hard drive that the virtual hard drive (vhd) resides upon.  This gives a simultaneous write to the undo files while reading the vhd file.  We’ve seen the biggest improvement during memory intensive situations such as the Just In Time (JIT) activation of .Net applications and the loading of services, such as during machine startup.  If anybody has gone through loading SharePoint or loading the Cassini web server along with an ASP.Net web application on a virtual machine , you can attest to how slow it can be.  We’ve seen increases in throughput of more than twice for these types of operationswhen comparing the separate physical drive approach to a single drive approach.

I’m currently working on a Metro training project for Microsoft teaching AX 2009 to ISV partners.  The vpc for this class is almost 20 gigs in size and has AD, AX 2009, SQL and Office SharePoint all running simultaneously in one VPC.  In an attempt to speed up the classes we had come up with a plan of me traveling the globe with 20 USB drives with the VHD files on them.  The thought of me carrying on the airplane 20 2.5 inch USB hard drives just didn’t appeal to me.  Enter the USB Flash drive approach.  I tested a Patriot 32 gb USB Flash by placing the VHD on it and the Virtual Machine Configuration file (VMC) on the C : drive pointing to the VHD on the USB Flash.  The undo file will then by default go on the same drive as the VMC file.  Launching the vpc and operations like loading the AX 2009 interface, which by design also JITs Office SharePoint, where well over twice as fast under the single drive approach.

The write speed of the USB Flash is terrible; however, the read speed is around 10 mbs (faster than most 2.5 drives).  In this scenario read speed was all we were concerned with since all writes took place on the local C: drive.  There was also the added bonus that no classroom setup was required.  All that was needed was a machine as it is normally delivered from the factory.  I then signed out the USB drives to the students, they inserted them and setup the vmc file on the local hard drive, if needed VPC 2007 was also on the USB Flash. 
 
We just finished this class at the Dallas and Reston MS offices and these were the first  AX 2009 deliveries that had no complaints about VPC throughput, even though lesser or comparable hardware was used than in the previous deliveries.  The only complaint from the students was that MS didn’t let them take the USB Flash drives with them and I have to agree with them on this point.

Give this approach a try and even though you probably aren’t working in as extreme a VPC environment that I tested in, you will see an increase in throughput.  Not to mention the ease and practicality of working with your VPC files.  Below is a picture of my 18 person VPC classroom fitting in the palm of my hand.
 
Flash Class
Top SQL Server 2008 Dev/BI Features from my Canadian Teaching Tour

I just finished up a three week tour of Canada teaching Microsoft Partners about the new SQL Server 2008 Developer and Business Intelligence features.  My tour consisted of four day classes starting in Calgary, moving on to Toronto with a final stop in Montreal and was part of Microsoft Corporate Metro early adopter program.   The SQL 2008 Dev/BI features resonating most profoundly with the classes are as follows:

-          TSQL - The speed and functionality of the new TSQL capabilities such as Merge, Table Value Parameters and Row Constructors.  These enhancements allow for consolidation from what used to take multiple TSQL statements into a much more efficient and powerful command stream.

-          Non-relational extensions - Sparse columns allow for flexible storage of values as a solution for name value pair scenarios. The Filestream type is another non-relational extension that makes storage of large blobs efficient.  Most of these extensions are implemented through SQLCLR types and also include Spatial data types, Hierarchy types and improvements in the XML type.

-          Client programming – The Synch services in SQL Server 2008 allow for synching client apps in a centralized or peer to peer manner without the overhead of Merge Replication.  By using the new Change Data Capture engine capabilities in conjunction with Synch Services a less obtrusive merge technology is available.  The new SQLCE 2008 plays into this scenario.  LINQ to SQL and the Entity Framework, which will ship simultaneously with SQL 2008 as part of Visual Studio 2008 SP1, are also compelling client programming features.

-          Reporting Services (SSRS)

1.       Design – Major overhaul of the Report Designer built into Visual Studio 2008.  Even though it is completely new, it is consistent with the previous designer so that the learning curve is not steep at all.  The designer is much better organized so that groupings can be easily edited and data, parameters, images and built-in fields are all part of a single data window.  Property builders, been completely rewritten in an Office 2007 style and are much easier to use. Data Sources and Datasets interfaces follow this theme and allow for accessing datasets from other reports along with Report Models as data sources.  The Tablix control is now a central core for the Table, Matrix and List controls and allows for very flexible placement of groups and totals.  You can start with a Matrix and turn it into Table or List and vice versa, they are simply a Tablix control now with different property settings.  Rich data visualizations have been added with a beefed up Chart and new Gauge/Indicator controls.  A new Report Designer client will be available sporting an Office 2007 interface and giving local report generation with about the same power as the Visual Studio designer, however, it is stand alone.

2.       Administration  – SSRS can now optionally be run as HTTP Endpoints within SQL so that Internet Information Services (IIS) is no longer a necessary component.  This allows for better memory management and creates several new interfaces to administer what used to be part of IIS.  There are also new memory throttling settings, improvements in the rendering engine (including rendering to Word).  Management tools of SQL Management Studio, Report Manager and SSRS Configurations are now more focused in their implementation.

3.       Programmability – The Report Viewer Control has new capabilities such Examples in Expressions, Print extensions and is central to a new Visual Studio 2008 Report Application template.  The Web Service and URL Access have been modified for rendering improvements and there is a new Windows Management Instrumentation interface

-          Integration Services (SSIS) – The integration pipeline has been streamlined and performance enhanced with several new Tasks, Sources, Destinations and Transformations added.  The Script Task is now a Visual Studio Tools for Applications (VSTA) implementation with full support for .Net references including Web Services and is now pre-compiled for speed.  There is a Cache Transform that allows for caching lookups including putting lookups into flat files that can be distributed with the package.  New ADO.Net Source and destinations extend the Extract and Load functions.  A new Data Profiler Task really extends the Data Inspection function.  You can now go way beyond Data Viewers to analyze your Extracts with a Profiler Viewer that gives a plethora of data pattern analysis.  Additionally, guidance is given on how to use the new SQL 2008 Change Data Capture (CDC) and Merge technologies to create Slowly Changing Dimensions (SCD).

-          Analysis Services (SSAS) – Building on the usability of Analysis Service Cube technology there are new Cube and Dimension Wizards that enhance the cube design process.  The Cube designer has a new tab for Aggregations, with a new Aggregation Designer allowing for multiple saved Aggregation designs and a much more granular settings capability of what and how much gets aggregated.  The Dimensions Designer has a new tab for Attribute Relationships with its own powerful visual designer with visualization of Rigid and Flexible relationships, no more setting these up inline in the Attributes list.  Attribute key columns are easier to access through the properties window.  All along the way there are Best Practice Warnings guiding you on how best design the cube, however, don’t worry because you can turn the warnings off if you don’t agree with them.  There is a new Personalization Extensions (ASPE) capability through the creation of Analysis Services Stored Procedure assemblies allowing for a secure personalization of individual Users/Groups access to specific objects.

This is just a few of the favorite things, there are even more!  I barely touched on Engine enhancements.  We’re investigating into turning the above into a two Hands On Seminar that might be coming your way shortly.

SharePoint 2007 Top Developer Utilities
I just finished our first Microsoft Official Course on Advanced SharePoint Development this last week and in almost every module we had some kind of utility that would ease our development implementation of the concepts.  I thought I would share a list of the top utilities we came up.  Most of these are free on http://CodePlex.com.
 
-Return of SmartPart - http://CodePlex.com/SmartPart.  The old classic from V2 days still really improves developer web part productivity.  It’s a SharePoint web part which can host any ASP.NET web user control.
 
-BDC Meta Man - http://www.lightningtools.com  If you are working with Business Data Catalogs, this tool is indispensible.  Yeah, I know there is definition editor that is part of the SDK, however, the free version of Meta Man blows that one away.  Even creates web parts you can customize for Create and Update operations.
 
-WSPBuilder http://www.codeplex.com/wspbuilder  A SharePoint Solution Package (WSP) creation tool for WSS 3.0 & MOSS 2007.  Just break out your features files into a pre-defined directory system run to gen WSPs.  No more coding manifests and DDF files.
 
-SharePoint Solution Installer http://www.codeplex.com/sharepointinstaller Distribute your SharePoint WSP solution files with this installation program instead of a raw script using STSADM.EXE to install and deploy the solution
 
-Useful SharePoint Designer Custom Workflow Activities   http://www.codeplex.com/SPDActivities - This project takes aim at making it easier to create advanced workflows using SharePoint Designer by providing a set of custom workflow actions.  Actions like Lookup User Info (eg. Lookup who a contributor works for) and Copy List Item (eg. Move doc into Records Center repository) really super-charge SPDesigner workflows.  Additionally, the code is available so if you want to create a Workflow in VS, have at it.
 
-SharePoint Content Deployment Wizard - http://www.codeplex.com/SPDeploymentWizard - Content is exported using the Content Migration API (PRIME) as a .cmp file (Content Migration Package) which can be copied to other servers for import. Unlike the out-of-the-box tools, the Wizard allows *granular* selection of content via a treeview.  Great way to create and import CMP files and move your content from production to test to q/a to production.
 
They really did a good job on this official courseware!  I’ve heard a lot of complaints about the “Roll Your Own” courseware out there on this subject and it was nice to see this courseware lived up to its “Official” branding.
Dynamics AX 2009 and CRM 4.0 .Net Developer Opportunities
I just got back from Munich, Germany where I led an internal Microsoft “Dry Run” training on the new Dynamics AX 2009.  I feel this product is Microsoft’s best solution for an Enterprise Resource Planning (ERP) system and it will be shipping this summer.  I’m heading to Redmond next week to lead the Trainer Prep for the Metro program, which targets getting new product information to earlier adopters, mostly Independent Software Vendor (ISV) partners.
 
I am extremely impressed with the opportunities that the new AX 2009 and CRM 4.0 implementations have for the .Net Developer professional.  Here’s an abstract of a presentation I am working on that covers this topic.  I will be presenting this at several “community driven” Florida Users Groups over the next few months, see http://GCUsersGroup.org for exact locations/times.
 
If you work with .Net Development, SharePoint 2007 or SQL Server Business Intelligence, come take a look at Dynamics AX 2009 and CRM 4.0 as a .Net development platform opportunity. You can now straight forwardly leverage your .Net experience to add functionality to these systems. Starting with a published Web Service API, each product integrates into the .Net Framework environment. Their Application Integration Frameworks allows for integrating client side .Net Web, Windows, WPF and VSTO applications into their respective systems. There are frameworks to integrate .Net components (Web Services, WCF, Workflow, etc) into the event structures of each product. All integration flows through the AX and CRM application layer, so that .Net extensions must adhere to each systems security and business rules structure. AX 2009 and CRM 4.0 are also richly integrated with Reporting Services, SharePoint 2007 and Analysis Services, so the BI and SP Developer can add functionality through these products. Come see each of these .Net Integration opportunities investigated in this session.

 
Using generic MDX queries in SQL Reporting Services

A common question I hear in Reporting Services training is related to implementing generic Analysis Services Cube Multi-Dimensional Expressions (MDX) queries into report datasets.  When you use the .Net Framework Service Provider for Microsoft Analysis Services to connect your Data Source to the Analysis Services Cube you are presented with a Query Designer that greatly simplifies the process of creating a MDX query against the Cube.  This designer is a great tool in creating new queries against a Cube, especially since many developers are intimidated when first presented with the MDX query structure.  However, the Designer requires that the syntax follow a standard pattern of measures only going in columns and dimensions in rows along with other requirements.  This required structure does not allow the import of many existing MDX queries or generating new queries that don’t follow the syntax requirements of the Designer.

A simple solution to this problem is to use the OLEDB Provider for Analysis Services in your Data Source instead of the .Net Framework Provider for Analysis Services.  When connecting to a Cube with this provider you are only presented with the Generic Query Designer and you can paste in or generate valid MDX to create a dataset.  When using parameters within these queries, you need to turn the query into an expression by building a string using the parameter values instead of the hard coded values.  Here’s an example MDX query with a filter element hard coded as ‘Mountain’ that returns values in the Member_Caption attribute with the string Mountain anywhere in that Member_Caption.

SELECT NON EMPTY { [Measures].[Internet Order Count] } ON COLUMNS,
NON EMPTY {([Product].[Model Name].[Model Name].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS
FROM ( SELECT ( Filter( [Product].[Model Name].[Model Name].ALLMEMBERS,
Instr([Product].[Model Name].currentmember.Properties('Member_Caption' ),
'Mountain' ) > 0 ) ) ON COLUMNS FROM [Adventure Works])

Here’s what it would look like once you turn it into an expression and substitute the parameter named ProductFilter for the hard coded filter value.

=”SELECT NON EMPTY { [Measures].[Internet Order Count] } ON COLUMNS,
NON EMPTY {([Product].[Model Name].[Model Name].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS
FROM ( SELECT ( Filter( [Product].[Model Name].[Model Name].ALLMEMBERS,
Instr([Product].[Model Name].currentmember.Properties('Member_Caption' ),
“ & Parameters!ProductFilter.Value & “) > 0 ) ) ON COLUMNS FROM [Adventure Works])

I am a Microsoft Regional Director for the next two years
The Regional Director (RD) program is Microsoft’s longest running community evangelism program and I am proud to announce that I will be part of this program for another two years.  The program first started out in 1994 as a vehicle to launch products through a one day long community Users Group (UG) meetings known as DevDays.   I was one of the original 8 RD’s that were selected from UG’s across the US to run the South Florida DevDays events. 

The RD program has expanded since that time to a group of over 130 RD’s worldwide and is now geared more to supporting these RD’s in their individual Microsoft evangelism efforts than a specific one day event.  I have had the opportunity to meet a great group of professionals through the years in the program and many have become close friends.  The networking through the program has allowed me to grow my training business and I’m looking forward to more of the same this next year.

I have the designation of RD Ambassador for Learning Solutions for the next couple of years and am hoping that it will allow me to travel internationally like I did in 2007.  Check out the RD program and look up your local RD at http://theregion.com.
1 - 10 Next

 Links

HSI Training

Gold Coast Users Group
  Community Driven
      Users Group

 ‭(Hidden)‬ Admin Links