Search This Blog

Monday, June 30, 2014

NOW SP 2 Supports SharePoint 2010 to run on Windows 2012

Actually I knew about Service Pack by luck while talking to a coworker, we just discovered it in the morning J
Really MS finally Service Pack 2 is here that supports to run SharePoint 2010 on Windows 2012.. OMG finally.. Wow I had an article on blog on 25 September 2012 http://maiomardesouki.com/2012/09/25/windows-server-2012-does-not-support-sharepoint-2010-for-now/ when I was trying to install SharePoint 2010 on Win 2012.
Let me get this straight when I say “Support” means there is a workaround which I posted links for other bloggers who made that workaround to run SP 2010 on Win 2012 but Rememberwas not supported so definitely there is no way you can do that workaround in a production environment. That’s the point.
Download SharePoint 2010 SP 2 from here: http://www.microsoft.com/en-us/download/details.aspx?id=39672 which was published on 21 July 2013.
Unfortunately MS haven’t yet did ISO for SharePoint 2010 with SP2 so we need to do the slipstream, the same thing we did for SP1, example here:http://www.mice-ts.com/slipstreaming-the-sharepoint-2010-rtm-iso-with-service-pack-1/
Enjoy SharePointing & SlipStreaming!

How to configure Forms Based Authentication – Active Directory(LdapMembership)

 Enable Forms Based Authentication

This process can be broadly divided into 3 sections:

  • Extend the SharePoint Web Application (or create a new SharePoint Web Application)
  • Make entries in the web.config
  • Configure forms authentication in central administration

Extend the SharePoint Web Application
We have a SharePoint site present on port 80 which uses NTLM authentication. For our purposes, we will extend the SharePoint Web Application to port 8080 in which we will configure Forms Authentication
(Note: Make sure the port you choose to extend is not already used)

  • Go to Central Administration > Application Management > Create or Extend Web Application > Extend an existing Web application
  • Select a Web Application by clicking on No Section and choosing Appropriate Web Application
  • Type in the correct Port i.e. 8080 in our case
  • Make sure "Allow Anonymous" is set to Yes (so that users can browse at least to Forms Login Page)
  • Make a note of Zone being used (Choose Intranet if available) and verify Load Balanced URL looks okay (i.e. http://servername:8080 in our case) and click OK

Make Entries in the Web.Config
As a first step to enable forms authentication, you need to make entries in the web.config file of the "SharePoint Central Administration Web application" and of the "SharePoint Web application" you wish to use Forms Authentication (it can be a new SharePoint Web Application or an Extended Web Application).

Have the information on following points handy according to your environment -

server="DC.Contoso.com"
DC is the server running Active Directory. DC will service all LDAP requests for the SSP (This needs to be changed to reflect one of your Domain Controller which you want SharePoint to use)
port="389"
The default port number used by LDAP is 389. (Generally this doesn’t need to be changed unless you’re using a custom LDAP port)
userContainer=“OU=OrgUsers,DC=contoso,DC=com
User objects in Active Directory are located inside the OrgUsers OU in the contoso.com domain (This needs to be changed according to where your users – who needs to access SharePoint thru Forms Auth. are stored)
groupContainer="OU=OrgGroups,DC=contoso,DC=com"
Groups in Active Directory are located inside the OrgGroups OU in the contoso.com domain (This needs to be changed according to where your Groups are stored)

Complete the following steps on the SharePoint server(s) (all Web Front End Servers).
I personally recommend copying the following excerpts in MS Word, updating the appropriate sections (in Red) and pasting them in the web.config file in appropriate section.

  • Locate the web.config file used by the SharePoint Central Administration website
  • Take backup of web.config file by saving it with different name
  • Open the web.config file of the Central Administration Web site in Notepad
  • Paste the copied text under the <system.web> root section in the web.config file. The text you paste should look like the excerpt below. The parameters highlighted in red below are the ones which should be changed according to prepared in Table above:

<membership defaultProvider="LdapMembership">
<providers>
<add name="LdapMembership"
 type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
 server="DC.Contoso.com"
 port="389"
 useSSL="false"
 userDNAttribute="distinguishedName"
 userNameAttribute="sAMAccountName"
 userContainer="OU=OrgUsers,DC=contoso,DC=com"
 userObjectClass="person"
 userFilter="(|(ObjectCategory=group)(ObjectClass=person))"
 scope="Subtree"
 otherRequiredUserAttributes="sn,givenname,cn" />
</providers>
</membership>
<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".PeopleDCRole">
<providers>
<add name="LdapRole"
 type="Microsoft.Office.Server.Security.LDAPRoleProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
 server="DC.Contoso.com"
 port="389"
 useSSL="false"
 groupContainer="OU=OrgGroups,DC=contoso,DC=com"
 groupNameAttribute="cn"
 groupMemberAttribute="member"
 userNameAttribute="sAMAccountName"
 dnAttribute="distinguishedName"
 groupFilter="(ObjectClass=group)"
 scope="Subtree" 
/>                                         
</providers>
</roleManager>

  • Save the web.config file and exit Notepad 
  • Now, locate the web.config file used by the extended SharePoint Web Application website (i.e. site on port 8080 in our case)
  • Take backup of web.config file by saving it with different name
  • Paste the copied text under the <system.web> root section in the web.config file. The text you paste should look like the excerpt below. The parameters highlighted in red below are the ones which should be changed according to prepared in Table above:

<membership defaultProvider="LdapMembership">
<providers>
<add name="LdapMembership"
 type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
 server="DC.Contoso.com"
 port="389"
 useSSL="false"
 userDNAttribute="distinguishedName"
 userNameAttribute="sAMAccountName"
 userContainer="OU=OrgUsers,DC=contoso,DC=com"
 userObjectClass="person"
 userFilter="(|(ObjectCategory=group)(ObjectClass=person))"
 scope="Subtree"
 otherRequiredUserAttributes="sn,givenname,cn"
/>
</providers>
</membership>
<roleManager defaultProvider="LdapRole" enabled="true" cacheRolesInCookie="true" cookieName=".PeopleDCRole">
<providers>
<add name="LdapRole"
 type="Microsoft.Office.Server.Security.LDAPRoleProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
 server="DC.Contoso.com"
 port="389"
 useSSL="false"
 groupContainer="OU=OrgGroups,DC=contoso,DC=com"
 groupNameAttribute="cn"
 groupMemberAttribute="member"
 userNameAttribute="sAMAccountName"
 dnAttribute="distinguishedName"
 groupFilter="(ObjectClass=group)"
 scope="Subtree" />
</providers>
</roleManager>

  • Save the web.config file and exit Notepad
  • Open a command prompt window and run IISRESET (do IISRESET all other Web Front Ends if there are more than one web servers) 


Configure Forms-Based Authentication in Central Administration
  • Go to Central Administration > Application Management > Authentication Providers
  • Ensure you select SharePoint in the Web Application drop down
  • Click on the zone which you noted down earlier (should be Intranet by default)
  • Choose Forms under Authentication Type section and also make sure "Enable anonymous access" is checked
  • Type LdapMembership in the Membership Provider Name section
  • Type in the name of the LDAP role provider as LdapRole in the Role Manager Name text box 
  • If you are at WSS & MOSS SP2 or greater then you check "Enable Client Integration" else leave it unchecked
  • Click Save

Note: At this point SharePoint automatically enables anonymous access on the Web application for which you enabled forms authentication however there are no users who can access the Forms Authentication site (as DOMAIN\SPSAdmin is NOT equal to LdapMembership:SPSAdmin), so we need to grant at least 1 user Full Control permissions who can log in and grant permissions to other users as needed

  • Go to Central Administration > Application Management > Policy for Web application
  • Click Add Users in the tool bar. The Add Users page is displayed for you
  • Ensure you have correct (extended 8080 in our case) SharePoint Web application selected in the Web Application section.
  • Select the appropriate zone (noted earlier) in the Select the Zone section (Intranet in our case) and click Next
  • You can add the user by simply typing LdapMembership:Username or click the book icon Select People and Groups dialog and search for a user there

Note:
  • Do not type in username in DOMAIN\UserName format as we are using LdapMembership:UserName format here
  • Only the Users from userContainer="OU=OrgUsers,DC=contoso,DC=com" (which we used in web.config) will be searched / can be added

  • Select "Full Control –  Has full control" check box in the Choose Permissions section and click Finish, you should see the User is now added in Policy for Web Application with Full Control
  • Go to Central Administration > Application Management > Site collection administrators > Choose the appropriate site collection in appropriate web application
  • Type in LdapMembership:Username (same account which we added earlier to Policy for Web Application) in Secondary Site Collection Administrator and click OK
  • Browse to the SharePoint Web Application which we extended (site in port 8080 in our case)
  • Log in using the username which we used in Policy for Web Application and add users whoever needs access to SharePoint site thru FBA (as DOMAIN\SPSAdmin is NOT equal to LdapMembership:SPSAdmin that means if you've added some users in the same SharePoint site using NTLM authentication, they will NOT have access in Forms Auth site unless you add them)
  • We're done! Please take time to provide comments / feedback !!!


Saturday, June 28, 2014

Libraray (QA-2)


Importent Url- (Lib QA):-

http://sharepointquicksolutions.blogspot.in/2012/08/sharepoint-interview-questions-and.html

http://www.expertsupdates.com/sharepoint-interview-questions.aspx



ASP.net WebParts Vs SharePoint WebParts 

Developers working on MOSS or SPS would need to move on to Microsoft.SharePoint.WebPartPages.WebPart in their code.

It obviously has it's own advantages:

1-Enables cross-page connections
2-Enables connections between webparts placed in different webpart zones on the same   SharePoint page
3-Helps in migrating webpart code to WSS 3.0 based webparts
4-Utilize the SharePoint offerred data caching mechanism

Library QA 1



Question -http://www.dotnetspark.com/DotNetQuestion/index.aspx?cate=9

Type Of Web Part:-
1-ASP.NET Web Parts -

The ASP.NET-style Web Parts have a dependency on [System.Web.dll] and must inherit from the WebPart base class in the [System.Web.UI.WebControls.WebParts] namespace.


Note:-

If you are creating your Web Part specifically for a SharePoint site, and it will consume the SharePoint Foundation object model, you can derive from the ASP.NET System.Web.UI.WebControls.WebParts.WebPart base class and add a reference to the SharePoint object model in your project.

2-SharePoint-based Web Parts — These Web Parts have a dependency on [Microsoft.SharePoint.dll ] and must inherit from the WebPart base class in the [Microsoft.SharePoint.WebPartPages] namespace. These Web Parts can only be used in SharePoint websites.

Custom Web Parts :-


“Create user interface elements that support both customization and personalization.”

Customization :-Changes are seen by all site members
Personalization. changes are seen only by the user who made them.

Custom Properties in SharePoint 2010 Visual Web Parts :-

Basic steps to add a custom property are;
1-Add a custom property in “VisualWebPart1.cs” Web Part class
2-Make above custom property visible to “VisualWebPart1UserControl.ascx” User Control
3-Access custom property from the User Control

Custom properties Of  different controls

1-bool  -> Check box
2-enum  -> Dropdown list
3-int  -> Text box
4-string  -> Text box
5-DateTime -> Text box




1. Add a custom property in “VisualWebPart1.cs” Web Part class

My custom property will be an enum value to select control mode between Simple, Standard and
Advanced.


public enum ControlModes
{
Simple,
Standard,
Advanced
}

/// <summary>
/// This property will be displayed as a drop-down list in the property pane.
/// </summary>
[DefaultValue(ControlModes.Standard)]
[Description("Select a category from the dropdown list.")]
[WebBrowsable(true)]
[Personalizable()]
public ControlModes ControlMode
{
get; set;
}


2. Make custom property visible to “VisualWebPart1UserControl.ascx” User Control

Here we need to change “CreateChildControls” method implementation of the “VisualWebPart1.cs”
class to pass the value of our custom property to the User Control. Here if we pass the
WebPart class itself as a property, we can simply access several custom properties by less
code.

User Control Property
public VisualWebPart1 WebPartControl { get; set; }

“CreateChildControls” in “VisualWebPart1.cs”
protected override void CreateChildControls()
{
VisualWebPart1UserControl control = Page.LoadControl(_ascxPath) as
 VisualWebPart1UserControl;
if (control != null)
{
   control.WebPartControl = this;
}
Controls.Add(control);
}


3. Access custom property from the User Control

public VisualWebPart1.ControlModes ControlMode
{
get
{
   return this.WebPartControl.ControlMode;
}
}

Once deployed and added this Web Part to a page, we can go to Web Part properties by selecting “Edit Web Part” option.

We can see our custom property in the Property Pane under “Miscellaneous” section. Description attribute we added can be seen as a tooltip here.


Here is my complete code for “VisualWebPart1.cs” Web Part class and “VisualWebPart1UserControl.ascx” User Control.

VisualWebPart1.cs


using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace CustomProperty.VisualWebPart1
{
[ToolboxItemAttribute(false)]
public class VisualWebPart1 : WebPart
{
   // Visual Studio might automatically update this path when you change the
   // Visual Web Part project item.
   private const string _ascxPath =      @"~/_CONTROLTEMPLATES/CustomProperty/VisualWebPart1/
  VisualWebPart1UserControl.ascx";

   public enum ControlModes
   {
       Simple,
       Standard,
       Advanced
   }

   /// <summary>
   /// This property will be displayed as a drop-down list in the
   /// property pane.
   /// </summary>
   [DefaultValue(ControlModes.Standard)]
   [Description("Select a category from the dropdown list.")]
   [WebBrowsable(true)]
   [Personalizable()]
   public ControlModes ControlMode
   {
       get;
       set;
   }

   protected override void CreateChildControls()
   {
       VisualWebPart1UserControl control = Page.LoadControl(_ascxPath) as
         VisualWebPart1UserControl;
       if (control != null)
       {
           control.WebPartControl = this;
       }
       Controls.Add(control);
   }
}
}











VisualWebPart1UserControl.ascx



using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace CustomProperty.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
   public VisualWebPart1 WebPartControl { get; set; }

   public VisualWebPart1.ControlModes ControlMode
   {
       get
       {
           if (this.WebPartControl != null)
           {
               // User selected value.
               return this.WebPartControl.ControlMode;
           }
           else
           {
               // Default value.
               return VisualWebPart1.ControlModes.Standard;
           }
       }
   }

   protected void Page_Load(object sender, EventArgs e)
   {
   }
}
}








Benifit custom Web Parts:-

1-Create custom properties: - that you can display and modify in the user interface.

2-Improve performance and scalability:-.  A compiled custom Web Part runs faster than a script.

3-Implement proprietary code :-  without disclosing the source code.

4-Secure and control access to content:-   within the Web Part. Built-in Web Parts enable any users who have the appropriate permissions to change content and alter Web Part functionality. With a custom Web Part, you can determine the content or properties to display to users, regardless of their permissions.

5-Make your Web Part connectable:-,  allowing Web Parts to provide or access data from other connectable Web Parts.

6-Interact with object models :-   that are exposed in SharePoint Foundation. For example, you can create a custom Web Part to save documents to a SharePoint Foundation document library.

7-Control the Web Part cache :-  by using built-in cache tools. For example, you can use these tools to specify when to read, write, or invalidate the Web Part cache.

8-Benefit from a rich development environment:-   with debugging features that are provided by tools such as Microsoft Visual Studio 2010.

9-Create a base class for other Web Parts to extend.:-For example, to create a collection of Web Parts that have similar features and functionality, create a

10-custom base class :-  from which multiple Web Parts can inherit. This reduces the overall cost of developing and testing subsequent Web Parts.

11-Control Web Part implementation. For example, you can write a custom server-side Web Part that connects to a back-end database, or you can create a Web Partthat is compatible with a broader range of Web browsers.

Connectable Web Parts :-

"Standardized set of interfaces called connection interfaces that allow Web Parts to exchange information with one another at run time."


For example, the List Web Part that is built into SharePoint Foundation can provide (send) a row of data to any other Web Part that can consume (receive) that row, such as a Web Part that implements a form to display the row.

Library QA

Url- http://sharepointa2z.blogspot.in/2009/05/sharepoint-interview-question-part-3.html

Authentication Model in SharePoint?

1. Window

In Windows Based Authentication ASP.NET Relies on IIS to authenticate Incoming request using one of its available Authenticate Methods.

a) Basic Authentication:-Basic Authentication is Compatible with most browsers. But Password is sent in Clear Text. These are Protected with SSL Encryption.

b) Digest Authentication:- Digest Authentication is introduced with HTTP 1.1,So it may not support all browsers. It sends hashed value instead of Clear-Text Password, its more secure than Basic Authentication. But it requires a Windows 2000 Domain Controller.

c) Integrated windows (NTLM)[NT LAN Manager] Authentication:-Integrated Windows Authentication is Available only with Internet Explorer. Its most secure method because it never sends a username /Password over the network., but it will not work over HTTP Proxy Connection.

2. Form Level

Form-Based Authentication allows developers to easily implement “roll-your-own” security in their Applications. All you need to do is create the login page, tell ASP.NET where to find (via web.config) and set the desired Authorisation restrictions. In your login page, you can verify username and password credentials entered by user against a database, windows 2000 autrhenticate directory.Once Credentials are verified you can use methods exposed by Forms Authentication class to set or remove an authentication cookie redirect the user to original page they requested or renew the authentication Cookie.

3. Passport

Password Authentication used the Centralized Password service provided by Microsoft. Passport authentication gives users a single login to use with any passport-enabled site.
In order to use Passport Authentication with ASP.NET , you must download and install SDK, which is available with www.passport.com/business

4. None[Annonyames]






Difference between a Site Definition and a Site Template?

Site Definitions are stored on the hard drive of the SharePoint front end servers. They are
used by the SharePoint application to generate the sites users can create. Site Templates are created by users as a copy of a site they have configured and modified so that they do not have to recreate lists, libraries, views and columns every time they need a new instance of a site.

Sandbox Limitations

1-No Security Elevation
2-No Email Support
3-No Support to WebPartPages Namespace -  Microsoft.SharePoint.WebPartPages namespace.
4-No Support to external Webservice
5-No GAC Deployment - Sandbox solutions are not stored in File System(Physical path) and assemblies can't be deployed to Global Assembly Cache(GAC). But it's available on
C:\ProgramData\Microsoft\SharePoint\UCCache at runtime. Note the ProgramData is a hidden folder.
6-No Visual Webparts

Difference Between .dwp and .webpart


1..dwp was the file extension used in version 2 of SharePoint and .webpart is a new extension used in version 3
2.version number on the xmlns attribute is different[2->2003, 3-> 2007]
3.The main difference is that all properties passed to the web part are specified with a
property element and a name attribute in version 3. Version 2 uses different element names for everything.

Web Part Life Cycle :-


OnInit- to configure the webpart.
OnLoad- to load add controls.
CreateChildControls- It is use to create controls and set its property.
LoadViewState- The view state of the web part is populated over here.
OnPreRender- it is use to change the web part properties.
RenterContents- it generate the output in html.
OnUnLoad- to unload the web part.
Dispose- to free the memory.






WebPart life cycle in sharepoint….

On Page Load:

1-Constructor
2-OnInit: Configuration values set using WebBrowsable properties and those in web part task pane are loaded into the web part. In this method we define controls that will be involved with WebPart.
3-OnLoad
4-ConnectionProvider method is called if web part is connectable and returns the connection provider interface object
5-ConnectionConsumer method is called if web part is connectable and sets the connection provider interface in the webpart(Consumer Webpart)
6-CreateChildControls:  In this method we define control properties and methods previously declared. All the controls specified are created and added to
7-controls collection.  EnsureChildControls()  checks to see if the CreateChildControls method has yet been called, and if it has not, calls it.
8-User Generated Event: eg. button click on the web part.
9-OnPreRender :Here we can change any of the web part properties before the control output is drawn  (if your web part is connectable you would  call the 10-connection provider(method present in the provider webpart eg: GetRowData()) here to retrieve data)
11-SaveViewState: View state of the web part is serialized and saved.
12-Render: Html Output is generated
13-RenderChildren
14-RenderContents


On 1st Postback

1-Constructor
2-OnInit
3-CreateChildControls (If the webpart is Consumer webpart this method is called after the ConnectionConsumer method(6th stage) )
4-OnLoad
5-ConnectionProvider method is called if web part is connectable and returns the connection provider interface object
6-ConnectionConsumer method is called if web part is connectable and sets the connection provider interface in the webpart(Consumer Webpart)
7-User Generated Event
8-PostBack click handling
9-OnPreRender (if your web part is connectable you would  call the connection provider(method present in the provider webpart eg: GetRowData()) here to retrieve data)
10-SaveViewState
11-Render
12-RenderChildren
13-RenderContents

On 2nd Postback

1-Constructor
2-OnInit
3-LoadViewState: The view state of the web part is populated over here.
4-CreateChildControls CreateChildControls (If the webpart is Consumer webpart this method is called after the ConnectionConsumer method(7th stage) )
5-OnLoad
6-ConnectionProvider method is called if web part is connectable and returns the connection provider interface object
7-ConnectionConsumer method is called if web part is connectable and sets the connection provider interface in the webpart(Consumer Webpart)
8-User Generated Event
9-PostBack click handling
10-OnPreRender (if your web part is connectable you would  call the connection provider(method present in the provider webpart eg: GetRowData()) here to retrieve data)
11-SaveViewState
12-Render
13-RenderChildren

14-RenderContents

Friday, June 27, 2014

Diff SP 2010-2013

SharePoint 2013
SharePoint 2010
What is SharePoint 2013 (Preview) -
A new version of Microsoft famous Collaboration portal called SharePoint. The version adds few new exciting features such as Social Feed,SharePoint Apps and cross-site publishing.
What is SharePoint 2010 - It is a previous or I should say current version of SharePoint that was released in year 2010.
Development Changes –
·         In SharePoint 2013 Microsoft Introduced a new Cloud App Model for designing Apps for SharePoint. Apps for SharePoint are self-contained pieces of functionality that extend the capabilities of a SharePoint website. You can use HTML, CSS, JavaScript and protocols like the Open Data protocol (OData), and OAuth to communicate with SharePoint using Apps.
·         Tools – SharePoint 2013 has Introduced new Tools for App development. Visual Studio 2012 now lets you develop apps for SharePoint and apps for Office. In addition a new web-based tools called “Napa” Office 365 Development Tools were introduced for developing apps.
·         No more Sandbox solutions. SharePoint 2013 sandboxed solutions are deprecated. So all we got is the New App model and the Old SharePoint Farm solutions. check out SharePoint 2013 – Apps Vs Farm solutions
Development Changes –
·         SharePoint 2010 Introduced Sandbox solutions to help developers deploy code that did not effect the whole farm.
·         In SharePoint 2010 you could use Server Object model and Client Object model (.Net Managed, ECMASCRIPT and silverlight) to extract data from SharePoint.
·         In SharePoint 2010 developers were also developing Farm solutions as they did with the previous SharePoint 2007 version.
Social and Collaboration features – 
Microsoft in SharePoint 2013 Introduced new Social capabilities for better collaboration in the company.New Features added are -
·         Interactive feed
·         Community Site
·         Follow people
·         Follow Sites
Social and Collaboration features - SharePoint 2010 had very few social capabilities.
·         My sites
·         Tags and Tag profile pages
·         Notes
Search - SharePoint 2013 includes several enhancements, custom content processing with the Content Enrichment web service, and a new framework for presenting search result types. Some of the features added are –
·         Consolidated Search Results
·         Rich Results Framework
·         keyword query language (KQL) enhancements
Search – SharePoint 2010 had Introduced Integrated FAST search as an Enterprise search. In addition to this build-in SharePoint search is still widely used in companies.
Enterprise Content Management (ECM) -
SharePoint 2013 added some of the best capabilities of an ECM software. The newly added stuff is
·         Design Manager
·         Managed Navigation
·         Cross-site Publishing
·         EDiscovery
Enterprise Content Management (ECM) - SharePoint 2010 on the other hand had Introduced Managed metadata and taxonomy as a part of new ECM benefits for SP 2010. This version did not had Managed Navigation and Cross-site Publishing. SharePoint designer was a primary tool to modify Master pages instead of the new Design Manager.




http://techno-sharepoint.blogspot.in/