Saturday, July 31, 2010

No more SSPs in SharePoint 2010

Yes there are no more Shared Service Providers (SSPs) in SharePoint 2010. This is One of the most interesting and powerful thing in SharePoint 2010. For users who are not familiar with SSPs in SharePoint 2007, you can read my previous post here.

What’s wrong with SSPs?

SSPs were vary handy in SharePoint 2007. They allowed us to share different services like profiles, audiences, search, Excel Services and BDC with different web applications. The problem is if we want to use same search service across multiple web applications but we want to have a totally different profile or BDC configuration. To achieve this functionality, the only option we have is to create a new SSP and duplicate the search service configuration/settings. In feature if we want to make any changes to search service, we have to do it in two places and It’s a hassle.

Some of the major problems with SSPs,

  • SSPs are not built on Core services (WSS) and it built on SharePoint Server.
  • SSPs are non extensible other than Microsoft SharePoint Team.
  • SSPs are tied to a single farm. Technically Shared-farm SSPs are possible, but it tricky.

image

What’s the new approach?

In SharePoint 2010 Shared Service Provides(SSPs) are replaced by Service Applications. So what ever services existed in SSPs are still exist but have been unboxed and don’t have dependencies to each other. In the new version, there are over 20 service applications built using the service application framework. All of these service applications can run independently and each service has its own database (that’s why you see many databases in SQL Server compare to SharePoint 2007). If we want, we can also built our own service application (its is a very advance topic you can find a nice video here), it’s that much flexible.

Since each service run independently,the new service application framework removes the restriction, which says, “a web application could only be associated with a single SSP”. Now web applications can consume services on a individual basis and can use any combination of the available service applications.

 

image

If one of the service has high demand, we can easily scaled out across farms.

image

 

 

Summary

  • Web application can be configured to only use a subset of deployed services.
  • You can deploy multiple instances of the same service in a farm by giving the new service instances unique names.
  • You can also share services across multiple web application.
Tuesday, July 13, 2010

IE6 Tooltip for Select element workaround

In my project, we have a requirement to show huge list of data in a select element. Some of these data has long names to show but the restriction what we have is, Select element has to be in a fixed width to fit it in our UI. So to accomplish the requirement we have the following options

Option 1: Show Horizontal and vertical scroll bars so that user scrolls to see the full name.

Option 2: Show full name in a tooltip on mouse over.

 

Option 1 is not a good choice to me since it has scroll bars which spoils UI look and feel. Even though i tried this option and later i found that Select element won’t have any horizontal scroll bar by default in IE6 (Bug). Later i found that they have workaround to achieve this functionality.

 

 

I googled lot for option 2 and found couple of solutions, but it worked partially. so i made the couple of changes to fit my needs. Following is the code i used for IE6 tooltip.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IE6 Hack to enable tooltips on select elements</title>
<script>

function showIE6Tooltip(obj, e)
{
        if (!e)
        {
            e = window.event;
        }     

        var eX = e.offsetX ? e.offsetX : e.layerX;
        var eY = e.offsetY ? e.offsetY : e.layerY;
        var maxOptionCount = obj.options.length;

        var listItemHeight = (obj.clientHeight / obj.size); 
        var itemsAtTheTop =  Math.floor(obj.scrollTop / listItemHeight);              
        var hoverOptionIndex =  Math.floor(eY / listItemHeight);     

        //the index of mouseover
        var toolTipIndex = Math.floor(hoverOptionIndex + itemsAtTheTop);
        if(hoverOptionIndex >= 0 && hoverOptionIndex < obj.size )
        {
            var tooltip = document.getElementById('ie6SelectTooltip');       
            tooltip.innerHTML = obj.options[toolTipIndex].text;
            mouseX=e.pageX?e.pageX:e.clientX;
            mouseY=e.pageY?e.pageY:e.clientY;
            tooltip.style.left=mouseX+10;
            tooltip.style.top=mouseY;
            tooltip.style.display = 'block';
            var frm = document.getElementById('frm');
            frm.style.left = tooltip.style.left;
            frm.style.top = tooltip.style.top;
            frm.style.height = tooltip.offsetHeight;
            frm.style.width = tooltip.offsetWidth;
            frm.style.display = 'block';
        }
        else
        {
            hideIE6Tooltip(e);
        }
    }

    function hideIE6Tooltip(e)
    {
        var tooltip = document.getElementById('ie6SelectTooltip');
        var iFrm = document.getElementById('frm');
        tooltip.innerHTML = '';
        tooltip.style.display = 'none';
        iFrm.style.display = 'none';
    }

</script>
</head>
<body>
<div style="overflow-x:hidden; overflow-y:scroll; height:200px; width:90px">
    <select id="test" title="Title on the select" onmousemove="showIE6Tooltip(this,event);" onmouseout="hideIE6Tooltip();" size="20" >
        <option value="1" title="This is the number 1 option, with a really long title based tooltip">1 Thing</option>
        <option value="2" title="This is the number 2 option, with a really long title based tooltip">2 Thing</option>
        <option value="3" title="This is the number 3 option, with a really long title based tooltip">3 Thing</option>
        <option value="4" title="This is the number 4 option, with a really long title based tooltip">4 Thing</option>
        <option value="5" title="This is the number 5 option, with a really long title based tooltip">5 Thing</option>
        <option value="6" title="This is the number 6 option, with a really long title based tooltip">6 Thing</option>
        <option value="7" title="This is the number 7 option, with a really long title based tooltip">7 Thing</option>
        <option value="8" title="This is the number 8 option, with a really long title based tooltip">8 Thing</option>
        <option value="9" title="This is the number 9 option, with a really long title based tooltip">9 Thing</option>
        <option value="10" title="This is the number 10 option, with a really long title based tooltip">10 Thing</option>
        <option value="11" title="This is the number 11 option, with a really long title based tooltip">11 Thing</option>
        <option value="12" title="This is the number 12 option, with a really long title based tooltip">12 Thing</option>
        <option value="13" title="This is the number 13 option, with a really long title based tooltip">13 Thing</option>
        <option value="14" title="This is the number 14 option, with a really long title based tooltip">14 Thing</option>
        <option value="15" title="This is the number 15 option, with a really long title based tooltip">15 Thing</option>
        <option value="16" title="This is the number 16 option, with a really long title based tooltip">16 Thing</option>
        <option value="17" title="This is the number 17 option, with a really long title based tooltip">17 Thing</option>
        <option value="18" title="This is the number 18 option, with a really long title based tooltip">18 Thing</option>
        <option value="19" title="This is the number 19 option, with a really long title based tooltip">19 Thing</option>
        <option value="20" title="This is the number 20 option, with a really long title based tooltip">20 Thing</option>
    </select>
    </div>
    <div id="ie6SelectTooltip" style="display: none; position: absolute; padding: 1px; border: 1px solid #333333;
        background-color: #fffedf; font-size: smaller; z-index: 999;">
    </div>
    <iframe id="frm" style="display: none; position: absolute; z-index: 998"></iframe>
</body>
</html>

 

For me the above code worked vary well. I hope this code is useful for some one. If so, please leave some comments below.

SharePoint 2010 Features and Enhancements

Following is the high-level list of SharePoint 2010 features and enhancements. For detailed information you can check it here.
New in SharePoint 2010

  • Language Integrated Query (LINQ)
  • AJAX Support
  • Ribbon navigation
  • List Enhancements
    • New Scale Limits
    • XSLT Views for better customizations
    • Cascade deletes/Updates
    • Formula Validation for Column like Excel
    • External Data List Type - allows to connect external data such as databases or web services.
  • Business Connectivity Services (BCS) - New name for BDC and drastically enhanced.
  • Silverlight integration
  • Client side object Model
  • Sandbox Solutions - deploy in a secure environment.
  • Added More Services - Word,Visio, Performance Point and Access Services in addition to Excel and InfoPath Form Services.
  • New enhancements to InfoPath Form Services
    • Replace default list forms to InfoPath form
    • New mobile form capabilities
  • Well Integrated with Visual Studio 2010
    • Browse SharePoint environment from server explorer to see lists, libraries, Content types, etc.,.
    • Web Parts Visual elements
    • improved Web Solution Package (WSP)
    • Development on Windows 7
  • Developer Dashboard
  • Communities
    • Enhanced Blogging and wikis
    • Tagging and Rating
    • Activity Feeds - Stay informed and track colleagues updates
    • Social Bookmarking - can be internal or external web sites
    • Enhanced My Sites
    • Enhanced User Profiles
    • Organization Browser
  • Search
    • Extensible Search web parts
    • preview content with integrated FAST technologies
    • Phonetics people search
    • Outlook Address book style lookup
    • FAST Search - need separate license
  • Content Management
    • Document Management
      • Metadata views instead of hierarchical folder based navigation
      • Location based metadata
      • Document Routing to specific location
      • unique document IDs instead of URL based location
      • Taxonomy services
      • Document Sets - Manage collection of different content (doc,ppt,xls) into a set
    • Records Management
      • Multi stage disposition
      • In place records management
      • location based file plans
      • e-discovery
    • Web Content Management
      • New Enhanced UI
      • XHTML Compliant
      • Enhanced Page libraries
    • Digital Asset Management
      • Support most common digital assets like Video, Audio, Images
      • Bit Rate Throttling with IIS - Just in time delivery of the content instead of deliver the entire video to the user at maximum speed.
      • Remote BLOB (Binary Large OBject) storage
      • Silverlight WebPart and Media Player
    • Workflows
      • Now Workflows are Customizable
      • Allowed Site Workflows
    • SharePoint Workspace (Previously known as Groove) - allow to work offline and sync the lists, libraries and forms
Saturday, July 10, 2010

Microsoft’s SharePoint 2010 Migration Approaches

I found the following poster’s in Microsoft site on How to migrate from SharePoint 2007 to SharePoint 2010. It is very useful to understand the migration process and everyone  who are working on SharePoint migration should see this.

 

Here is the list of links to Posters:

Upgrade Planning : Poster, TechNet article

Upgrade Approaches : Poster, TechNet Article, Comparison

Upgrade Services : Poster, TechNet Article

Test Your Upgrade Process : Poster, TechNet Article

Upgrading Parent and Child Farms: Poster, TechNet Article