WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)
2011-03-11 09:50
656 查看
目录
简介
先决条件
安装 Windows Communication Foundation (WCF) 和 Internet Information Services
注册服务模型
更新脚本映射
创建 Web 服务
验证 Web 服务
结论
其他资源
本文是介绍如何通过 Business Connectivity Services 创建和使用声明感知 Web 服务的系列文章的第一部分(共四部分)。查看该系列中的其他文章:
WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)(本文)
WCF:在 WCF Web 服务内确定调用方身份(第 2 部分,共 4 部分)
WCF:在 WCF Web 服务和 SharePoint 2010 安全令牌服务之间建立信任关系(第 3 部分,共 4 部分)
WCF:使用启用声明的 WCF Web 服务作为 SharePoint 2010 外部内容类型(第4 部分,共 4 部分)
该 Web 服务只包含两种方法:查找工具 方法(用于检索项目集合)和特定查找工具 方法(用于检索单个项目)。集合背后的数据是一个初始化列表。这个小型数据库的架构非常简单。它是一个由两个字段组成的平面表:一个整型字段 CustomerID 和一个字符串字段 CustomerName。CustomerID 是唯一 ID。下面的代码段演示如何初始化包含由 Web 服务提供服务的数据的列表。
VB
C#
C++
F#
JScript
复制
在构建和配置该 Web 服务后,您可以使用 SharePoint Designer 2010 通过该服务创建外部内容类型,然后在 SharePoint 列表中查看数据。下图显示了 SharePoint 外部列表。
图 1. SharePoint 2010 外部列表
您可能已经知道,SharePoint Foundation 2010 和 SharePoint Server 2010 中的 Business Connectivity Services 是可读/写的。如果您提供其他方法来创建、更新和删除项目,则可以完全保留列表中的数据。我希望该 Web 服务尽可能简单。因此这是一个只读实现。我只关注安全性和身份标识问题。存储数据库的方式、存储数据库的位置或架构详细信息与本主题无关。
此处说明的过程针对 Windows Server 2008 R2 和 Windows Server 2008。您可以使用 Microsoft Visual Studio 2010 或 Visual Studio 2008 构建该 Web 服务。
您可以在运行 Internet Information Services 的任何开发计算机上构建、运行和测试本文介绍的 Web 服务。但是,如果您希望使用 Business Connectivity Services 作为外部内容类型连接到该 Web 服务,请在 SharePoint 2010 开发环境中生成此示例,以便 SharePoint Foundation 2010 或 SharePoint Server 2010 以及 Web 服务示例能够在同一台计算机上运行。可以将该 Web 服务置于其他服务器上,并将其用作外部内容类型。但在这种情况下,您必须取消安全设置,或者必须创建声明感知 Web 服务。
如前所述,我在此处介绍的过程演示如何在 IIS 下承载 Web 服务。这是此类 Web 服务的大多数实现者希望承载该服务的方式。作为 IIS 的服务承载它具有诸多好处,例如可以进行进程回收、监视进程运行状况以及基于消息的激活。
若要运行此示例,必需的唯一角色是 Web 服务器 (IIS)。下图显示了添加角色向导中的这一对话框。
图 2. 在添加角色向导中选择“Web 服务器”角色
添加 Web 服务器 (IIS) 角色后,向导会要求您选择“角色服务”。选择“应用程序开发”。下图显示了添加角色向导中的这一对话框。
图 3. 在添加角色向导中选择“应用程序开发”
若要安装 .NET Framework,请添加“.NET Framework 3.5.1 功能”。下图显示了添加角色向导中的这一对话框。
图 4. 在添加角色向导中选择“.NET Framework 3.5.1 功能”
在 Windows Server 2008(非 R2)上安装此功能时,并在选择“.NET Framework 3.0 功能”后,选择“WCF 激活”。这是 Windows Server 2008 R2 中的默认选项。下图显示了添加角色向导中的这一对话框。
图 5. 选择“WCF 激活”
必须同时安装 WCF 和 IIS,IIS 承载的 WCF 服务才能正常运行。安装 WCF(作为 .NET Framework 3.0 的一部分)和 IIS 的过程取决于您所使用的操作系统。如果要在除 Windows Server 2008 或 Windows Server 2008 R2 之外的操作系统上进行安装,请参阅 Microsoft .NET Framework 3.0 可再发行组件包以便下载并安装 .NET Framework 3.0。请参阅安装 IIS(该链接可能指向英文页面)。
图 6. 以管理员身份运行 Visual Studio Command Prompt
依次单击“开始”、“所有程序”、“Visual Studio 2010”和“Visual Studio 工具”,右键单击“Visual Studio Command Prompt (2010)”,然后单击“以管理员身份运行”。
对于 Visual Studio 2008,Visual Studio 命令提示符位于类似的位置。
将目录切换到以下位置:
c:/Windows/Microsoft.NET/Framework/v3.0/Windows Communication Foundation
在命令提示符中,输入:
ServiceModelReg -i
下图演示运行 ServiceModelReg。
图 7. 运行 ServiceModelReg
aspnet_regiis.exe -i
下图显示了更新脚本映射。
图 8. 更新脚本映射
启动 Visual Studio 2010(或 Visual Studio 2008)。
依次单击“文件”、“新建”和“项目”。对于安装的模板类别,请选择“WCF”。对于模板,请选择“WCF 服务应用程序”。找到“.NET Framework 3.5”。对于项目位置,请浏览到在步骤 1 中创建的目录。将此项目命名为“CustomersService”。不要为解决方案创建目录。下图显示了“新建项目”对话框的外观。
图 9. “新建项目”对话框
在项目中,将“IService1.cs”重命名为“ICustomers.cs”。Visual Studio 2010 可重命名对此项目中代码元素
在项目中,将“Service1.svc”重命名为“Customers.svc”。下图显示了重命名这些项目后解决方案资源管理器的外观。
图 10. 重命名项目后的解决方案资源管理器
将“Customers.svc”替换为以下标记行。右键单击“Customers.svc”,然后选择“查看标记”。从本文复制此标记,将其粘贴到 Visual Studio 中并保存。
复制
将“Customers.svc.cs”替换为以下代码。
VB
C#
C++
F#
JScript
复制
将“ICustomers.cs”替换为以下代码。
VB
C#
C++
F#
JScript
复制
将“Web.config”替换为以下标记。在解决方案资源管理器中,右键单击“Web.config”并选择“编辑”。复制、粘贴并保存。
XML
复制
生成应用程序。
将应用程序添加到默认网站中。启动“Internet Information Services (IIS) 管理器”。依次单击“开始”、“所有程序”和“管理工具”,然后单击“Internet Information Services (IIS) 管理器”。在“Internet Information Services (IIS) 管理器”中,展开“网站”,右键单击“默认网站”,然后选择“添加应用程序”。下图演示如何在“Internet Information Services (IIS) 管理器”中添加应用程序。
图 11. Internet Information Services 管理器
在“添加应用程序”对话框的“别名”字段中,键入 Customers。在“物理路径”字段中,浏览到 C:/MyWebService/CustomersService。单击“确定”。下图显示了包含 Web 服务的目录。
图 12. 包含 Web 服务的目录
验证 Web 服务是否正在运行。启动 Internet Explorer,并浏览到 http://localhost/Customers/Customers.svc。如果 Web 服务正在运行,您将看到以下内容:
图 13. Internet Explorer 中的 CustomersService Web 服务
键入 wcftestclient 以运行 WCF 测试客户端。单击“文件”,然后单击“添加服务”。
键入 http://localhost/Customers/Customers.svc 作为终结点地址,然后单击“确定”。
下图演示向 WCF 测试客户端中输入终结点。
图 14. WCF 测试客户端
如果成功添加了服务,则会看到该服务公开的方法。下图显示了 WCF 测试客户端中的 Web 服务方法。
图 15. 显示方法的 WCF 测试客户端
双击“GetAllCustomers”。这会打开一个允许您配置请求和启动请求的窗口。
单击“调用”以查看 Web 服务的响应。下图显示了调用 GetAllCustomers 的结果。
图 16. 显示调用 GetAllCustomers 的结果的 WCF 测试客户端
简介
先决条件
安装 Windows Communication Foundation (WCF) 和 Internet Information Services
注册服务模型
更新脚本映射
创建 Web 服务
验证 Web 服务
结论
其他资源
本文是介绍如何通过 Business Connectivity Services 创建和使用声明感知 Web 服务的系列文章的第一部分(共四部分)。查看该系列中的其他文章:
WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)(本文)
WCF:在 WCF Web 服务内确定调用方身份(第 2 部分,共 4 部分)
WCF:在 WCF Web 服务和 SharePoint 2010 安全令牌服务之间建立信任关系(第 3 部分,共 4 部分)
WCF:使用启用声明的 WCF Web 服务作为 SharePoint 2010 外部内容类型(第4 部分,共 4 部分)
简介
本文演示如何使用 WCF 创建非常简单的 Web 服务。我在本文中介绍的 Web 服务有一个特征:尽管它非常简单,但可以用作 Business Connectivity Services 中的外部内容类型。此外,本文中提供的过程还介绍如何使用 Internet Information Services (IIS) 承载该 Web 服务。该 Web 服务只包含两种方法:查找工具 方法(用于检索项目集合)和特定查找工具 方法(用于检索单个项目)。集合背后的数据是一个初始化列表。这个小型数据库的架构非常简单。它是一个由两个字段组成的平面表:一个整型字段 CustomerID 和一个字符串字段 CustomerName。CustomerID 是唯一 ID。下面的代码段演示如何初始化包含由 Web 服务提供服务的数据的列表。
VB
C#
C++
F#
JScript
复制
不支持该语言或没有可用的代码示例。
在构建和配置该 Web 服务后,您可以使用 SharePoint Designer 2010 通过该服务创建外部内容类型,然后在 SharePoint 列表中查看数据。下图显示了 SharePoint 外部列表。
图 1. SharePoint 2010 外部列表
您可能已经知道,SharePoint Foundation 2010 和 SharePoint Server 2010 中的 Business Connectivity Services 是可读/写的。如果您提供其他方法来创建、更新和删除项目,则可以完全保留列表中的数据。我希望该 Web 服务尽可能简单。因此这是一个只读实现。我只关注安全性和身份标识问题。存储数据库的方式、存储数据库的位置或架构详细信息与本主题无关。
此处说明的过程针对 Windows Server 2008 R2 和 Windows Server 2008。您可以使用 Microsoft Visual Studio 2010 或 Visual Studio 2008 构建该 Web 服务。
您可以在运行 Internet Information Services 的任何开发计算机上构建、运行和测试本文介绍的 Web 服务。但是,如果您希望使用 Business Connectivity Services 作为外部内容类型连接到该 Web 服务,请在 SharePoint 2010 开发环境中生成此示例,以便 SharePoint Foundation 2010 或 SharePoint Server 2010 以及 Web 服务示例能够在同一台计算机上运行。可以将该 Web 服务置于其他服务器上,并将其用作外部内容类型。但在这种情况下,您必须取消安全设置,或者必须创建声明感知 Web 服务。
如前所述,我在此处介绍的过程演示如何在 IIS 下承载 Web 服务。这是此类 Web 服务的大多数实现者希望承载该服务的方式。作为 IIS 的服务承载它具有诸多好处,例如可以进行进程回收、监视进程运行状况以及基于消息的激活。
先决条件
此过程针对 Windows Server 2008 或 Windows Server 2008 R2。在这两种情况下,我都从装有经过修补的全新操作系统的服务器开始操作。接下来,我将安装必需角色和功能以便安装和运行 IIS。此外,本文介绍的过程还需要 .NET Framework 3.5.1 以及 Visual Studio 2008 或 Visual Studio 2010。安装 Windows Communication Foundation (WCF) 和 Internet Information Services
使用服务器管理器安装 Web 服务器 (IIS) 角色和 .NET Framework 3.5.1 功能。若要运行此示例,必需的唯一角色是 Web 服务器 (IIS)。下图显示了添加角色向导中的这一对话框。
图 2. 在添加角色向导中选择“Web 服务器”角色
添加 Web 服务器 (IIS) 角色后,向导会要求您选择“角色服务”。选择“应用程序开发”。下图显示了添加角色向导中的这一对话框。
图 3. 在添加角色向导中选择“应用程序开发”
若要安装 .NET Framework,请添加“.NET Framework 3.5.1 功能”。下图显示了添加角色向导中的这一对话框。
图 4. 在添加角色向导中选择“.NET Framework 3.5.1 功能”
在 Windows Server 2008(非 R2)上安装此功能时,并在选择“.NET Framework 3.0 功能”后,选择“WCF 激活”。这是 Windows Server 2008 R2 中的默认选项。下图显示了添加角色向导中的这一对话框。
图 5. 选择“WCF 激活”
必须同时安装 WCF 和 IIS,IIS 承载的 WCF 服务才能正常运行。安装 WCF(作为 .NET Framework 3.0 的一部分)和 IIS 的过程取决于您所使用的操作系统。如果要在除 Windows Server 2008 或 Windows Server 2008 R2 之外的操作系统上进行安装,请参阅 Microsoft .NET Framework 3.0 可再发行组件包以便下载并安装 .NET Framework 3.0。请参阅安装 IIS(该链接可能指向英文页面)。
注册服务模型
要运行此示例,您必须注册该版本的 WCF 并在 IIS 元数据库根下更新脚本映射。注册服务模型
启动 Visual Studio 命令提示符。以administrator身份运行。下图演示以管理员身份运行命令提示符。图 6. 以管理员身份运行 Visual Studio Command Prompt
依次单击“开始”、“所有程序”、“Visual Studio 2010”和“Visual Studio 工具”,右键单击“Visual Studio Command Prompt (2010)”,然后单击“以管理员身份运行”。
对于 Visual Studio 2008,Visual Studio 命令提示符位于类似的位置。
将目录切换到以下位置:
c:/Windows/Microsoft.NET/Framework/v3.0/Windows Communication Foundation
在命令提示符中,输入:
ServiceModelReg -i
下图演示运行 ServiceModelReg。
图 7. 运行 ServiceModelReg
注释: |
---|
这不必是 Visual Studio 命令提示符。但是,下面的步骤需要 Visual Studio 命令提示符。因此,为了提高效率,我在此步骤中创建了一个。 |
更新脚本映射
更新脚本映射
在命令提示符中,输入:aspnet_regiis.exe -i
下图显示了更新脚本映射。
图 8. 更新脚本映射
创建 Web 服务
创建 Web 服务
创建一个目录 C:/MyWebService 来包含 Web 服务。如果您使用其他目录,则必须相应地更改这些过程。启动 Visual Studio 2010(或 Visual Studio 2008)。
依次单击“文件”、“新建”和“项目”。对于安装的模板类别,请选择“WCF”。对于模板,请选择“WCF 服务应用程序”。找到“.NET Framework 3.5”。对于项目位置,请浏览到在步骤 1 中创建的目录。将此项目命名为“CustomersService”。不要为解决方案创建目录。下图显示了“新建项目”对话框的外观。
图 9. “新建项目”对话框
注释: |
---|
请记住将目标更改为 .NET Framework 3.5。默认情况下,Visual Studio 指向 .NET Framework 4,必须将其更改为 .NET Framework 3.5,此处呈现的过程才有效。 |
IService1的所有引用。单击“是”。实际上,我们将替换所有模块中的所有代码,因此无论单击“是”还是“否”都无影响。
在项目中,将“Service1.svc”重命名为“Customers.svc”。下图显示了重命名这些项目后解决方案资源管理器的外观。
图 10. 重命名项目后的解决方案资源管理器
将“Customers.svc”替换为以下标记行。右键单击“Customers.svc”,然后选择“查看标记”。从本文复制此标记,将其粘贴到 Visual Studio 中并保存。
复制
<%@ ServiceHost Language="C#" Debug="true" Service="CustomersService.Customers" CodeBehind="Customers.svc.cs" %>
将“Customers.svc.cs”替换为以下代码。
VB
C#
C++
F#
JScript
复制
不支持该语言或没有可用的代码示例。
将“ICustomers.cs”替换为以下代码。
VB
C#
C++
F#
JScript
复制
不支持该语言或没有可用的代码示例。
将“Web.config”替换为以下标记。在解决方案资源管理器中,右键单击“Web.config”并选择“编辑”。复制、粘贴并保存。
重要信息: |
---|
这是配置此特定 Web 服务的 Web.config 文件。它位于 C:/MyWebService/CustomersService。 |
XML
复制
<?xml version="1.0"?> <configuration> <system.serviceModel> <services> <service behaviorConfiguration="CustomersService.Service1Behavior" name="CustomersService.Customers"> <endpoint address="" binding="wsHttpBinding" contract="CustomersService.ICustomers"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="CustomersService.Service1Behavior"> <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deploying the solution. --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deploying the solution to avoid disclosing exception information. --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
生成应用程序。
将应用程序添加到默认网站中。启动“Internet Information Services (IIS) 管理器”。依次单击“开始”、“所有程序”和“管理工具”,然后单击“Internet Information Services (IIS) 管理器”。在“Internet Information Services (IIS) 管理器”中,展开“网站”,右键单击“默认网站”,然后选择“添加应用程序”。下图演示如何在“Internet Information Services (IIS) 管理器”中添加应用程序。
图 11. Internet Information Services 管理器
在“添加应用程序”对话框的“别名”字段中,键入 Customers。在“物理路径”字段中,浏览到 C:/MyWebService/CustomersService。单击“确定”。下图显示了包含 Web 服务的目录。
图 12. 包含 Web 服务的目录
验证 Web 服务是否正在运行。启动 Internet Explorer,并浏览到 http://localhost/Customers/Customers.svc。如果 Web 服务正在运行,您将看到以下内容:
图 13. Internet Explorer 中的 CustomersService Web 服务
验证 Web 服务
测试 Web 服务的另一种方法是使用 WCF 测试客户端。使用 WCF 测试客户端验证 Web 服务
启动 Visual Studio 命令提示符(或使用从前面过程的末尾打开的命令提示符)。键入 wcftestclient 以运行 WCF 测试客户端。单击“文件”,然后单击“添加服务”。
键入 http://localhost/Customers/Customers.svc 作为终结点地址,然后单击“确定”。
下图演示向 WCF 测试客户端中输入终结点。
图 14. WCF 测试客户端
如果成功添加了服务,则会看到该服务公开的方法。下图显示了 WCF 测试客户端中的 Web 服务方法。
图 15. 显示方法的 WCF 测试客户端
双击“GetAllCustomers”。这会打开一个允许您配置请求和启动请求的窗口。
单击“调用”以查看 Web 服务的响应。下图显示了调用 GetAllCustomers 的结果。
图 16. 显示调用 GetAllCustomers 的结果的 WCF 测试客户端
结论
在本文中,您完成了创建声明感知 Web 服务的四个主要步骤中的第一步,并将其与 Business Connectivity Services 配合使用。您创建了 Web 服务,对其进行编译,并使用 IIS 承载它。在下一篇文章 WCF:在 WCF Web 服务内确定调用方身份(第 2 部分,共 4 部分)中,您将对此示例进行改进,以使用 Windows Identity Foundation (WIF) 中的功能来确定 Web 服务调用程序的身份。相关文章推荐
- WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)
- WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)
- WCF:使用启用声明的 WCF Web 服务作为 SharePoint 2010 外部内容类型(第4 部分,共 4 部分)
- WCF:在 WCF Web 服务和 SharePoint 2010 安全令牌服务之间建立信任关系(第 3 部分,共 4 部分)
- Dynamics CRM 2011编程系列(57):使用Business Connectivity Services 集成Sharepoint 2010 (中)
- Dynamics CRM 2011编程系列(58):使用Business Connectivity Services 集成Sharepoint 2010 (下)
- SharePoint 2010中的数据源集成-Business Connectivity Services
- Dynamics CRM 2011编程系列(56):使用Business Connectivity Services 集成Sharepoint 2010 (上)
- Dynamics CRM 2011编程系列(58):使用Business Connectivity Services 集成Sharepoint 2010 (下)
- How to:Create, Configure, Consume SharePoint 2010 Secure Store in Business Connectivity Services
- How to Integrate SAP Business Data Into SharePoint 2010 Using Business Connectivity Services and LINQ to SAP
- 构建简单的 C++ 服务组件,第 2 部分: 通过服务组件体系结构使用 Python、Ruby 和 Web 服务
- Project Zero 简介,第 1 部分: 为 Web 应用程序构建 RESTful 服务
- 使用 Ajax 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机
- JQuey 调用SharePoint 2010 WCF服务 二
- 使用 AJAX 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机
- JQuey 调用SharePoint 2010 WCF服务
- 使用 AJAX 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机
- 使用 Rational Application Developer 构建 HTTPS Web 服务,第 1 部分:Web 服务与 Web 服务客户机
- Using Business Connectivity Services in SharePoint 2010