Excellent Article by Mahesh explained step by step
Abstract: By using WCF Service with Business Data
Connectivity, a SharePoint 2010 portal can easily connect to any
external system within the organization or even to an external software
system outside the organization. In this article, we will see how to
connect between a WCF service and Sharepoint 2010
When you
develop a SharePoint 2010 portal for an Organization, your portal may
need to connect to an external software system for e.g. an already
available accounting software system. To establish such communications
in SharePoint 2010, we can use the Business Data Connectivity Web
Service. This service helps to establish communication between the
SharePoint 2010 portal and an external data source like SQL Server, WCF
and other .NET types.
In this article, I am
going to explain how to establish connection between SharePoint 2010
portal and WCF service. To consume WCF service, I have used SharePoint
Designer 2010.
Note: To learn how to establish connection between SP2010 and SQL Server, read my previous article
For this article, I already have created a Web Site ‘http://MyServer/sites/ss’.
Step 1: Open
VS2010 and create a new WCF Service Application, rename ‘IService1.cs’
to ‘IService.cs’ and ‘Service1.cs’ to ‘Service1.cs’. Open ‘IService.cs’
and add the following method and class in it:
Step 2 : Open Service.cs and implement the ‘IService’ interface in Service class:
Step 3: Open Service.svc in markup by right-clicking on it and change the Service attribute as shown below:
<%@ ServiceHost Language="C#" Debug="true" Service="WCF_For_SPS.Service" CodeBehind="Service.svc.cs" %>
Step 4: Publish the Service on IIS (IIS 7.0). The communication will happen in the following manner:
Communication from Website to WCF
Now to communicate from the Web Site to WCF, follow these steps
Step 1: Navigate
to the ‘http://MyServer/sites/ss’ web site. Click on ‘Site Actions’ on
the top left, and select ‘Edit in SharePoint Designer’ as below:
Step 2: The SharePoint 2010 Designer will open with the Site. Click on the ‘External Content Type’ from the left pane as shown below:
This action will open the ‘External Content Types’ window.
Step 3: Click on the ‘External Content Type’ on the top left. This will open the ‘New External Content Type’ window as shown below:
Set the Name of the External Content Type as shown below, the Office Item Type is set to ‘Generic List’
Click on ‘Click
here to discover external data sources and define operations’ and you
will get the ‘Add Connection’ as shown below:
Click on ‘Add Connection’. You will see the ‘External Data Source Type Selection’ window. Select WCF from it as shown below:
A ‘WCF Connection’ window appear where you can enter the WCF Service Metadata URL and Service EndPoint URL as shown below:
Note: Instead of the localhost please specify IP address or name of the server.
The WCF Service will be added in the SharePoint 2010 Designer as shown below:
Step 4: Now
once the WCF Service is configured with the Site, we need to define
Operations for the List generated. Right Click on the ‘GetEmployees’
method and select ‘New Read List Operation’:
This will start the ‘Read List Wizard’ as shown below:
Click on ‘Next’ and you
will get the ‘Input Parameters Configuration’ window. Since there is no
input parameter for the method, you can simply click on ‘Next’. You
will get the ‘Return Parameter Configuration’ screen. Since the method
returns an Employee List, we need to set an identifier as shown below:
Click on ‘Finish’. You will get the ‘GetEmployee’ operation List.
Step 5: Right Click on ‘GetEmployeeByEmpNo’ and select ‘New Read Item Operation’ as shown below:
This will bring up the ‘Read Item‘ Wizard window
Click on ‘Next’ and you
will see the ‘Input Parameters Configuration’ window, for this method
the input parameter is ‘EmpNo’, we need to map it with Identifier as
below:
Click on ‘Next’ again.
Since the return parameter for this method is an ‘Employee’ object, we
need to set ‘EmpNo’ as map to the Identifier as shown below:
Click on ‘Finish’ and you will get the ‘GetEmployeeByEmpNo’.
Step 6: Let’s move to add Insert operation. To do this, right –click on ‘InsertEmployee’ method and select ‘Create New Operation’ as below:
This will start the ‘Create’ Wizard as shown below:
Click on ‘Next’ to see
the ‘Input Parameters Configuration’ window. Once again, since the input
parameter for this method is the Employee object, we need to set
‘EmpNo’ as Map to the Identifier as shown below:
Click on ‘Next’. Since
there is no output parameter for this method, you can simply click on
Finish. You should get all the operations listed as shown below:
Save the configuration by clicking ‘Save’ button on the top left of the SharePoint 2010 Designer.
Step 7: Now to create a List, click on the ‘Create List & Form’ on the Ribbon of the SharePoint 2010 designer as shown below:
In the ‘Create List and Form for EmployeeWCFServiceList’ window, enter the List Name as shown below:
This creates a List on the Web Site.
Step 8: Open the Web Site and you will find the ‘EmployeeEWCFListData’ list created in the Quick Launch bar
Step 9: Click on the List and you will see the following result
You must be wondering
why do you get the ‘Access denied by business data connectivity’ error?
The reason can be understood by this simple architecture diagram shown
below:
Since the user has to be impersonated by the WCF Service, we need to set the access rights for the user.
Step 10: To
set the Access rights, Open SharePoint Central Administration >
‘Application Management’ > select ‘Service Applications’ and click on
‘Manage Service Applications’. You will see the ‘Business Data
Connectivity Service’. Click on it and you will get the External Lists
as shown below:
Select
‘EmployeeWCFServiceList’ and click on the ‘Set Object Permissions’ on
the Ribbon. The ‘Set Object Permissions’ window appears. Add the user in
it as shown below:
Step 11: Refresh the Web Site. The result will be as shown below:
Step 12: Select a Record on the List and click on ‘View Item’ as shown below:
Step 13: To insert a record, click on ‘List Tools’ on the Ribbon and select ‘Items’ from it. Then click on ‘New Item’ as shown below:
Step 14: The New Item Window appears. Enter the record info in it as shown below:
Click on ‘Save’ and the newly added record appears in the List
Like wise, you can implement the Update and Delete methods also.
Conclusion
With the External
Content Types feature provided in SharePoint 2010, communication between
two systems can be achieved easily. By using WCF Service with Business
Data Connectivity, a SharePoint 2010 portal can easily connect to any
external system within the organization or even to an external software
system outside the organization.
The entire source code of this article can be downloaded over here
Reference:
http://www.dotnetcurry.com/showarticle.aspx?ID=799