zoukankan      html  css  js  c++  java
  • JQuey 调用SharePoint 2010 WCF服务

    本文主要解释如何通过JQuery来调用WCF服务。本文分为两个部分,第一部分:如何在SharePoint 2010 平台上开发WCF服务,第二部分:通过JQuery调用WCF服务。

     

    WSS3.0MOSS2007中,我们可以通过Asp.NET Web 服务来操作SharePoint,在SharePoint 2010 中,我们依然可以通过Asp.NET Web 服务来操作SharePoint, 更为重要的是SharePoint 2010 是基于.Net 3.5框架之上,因此我们也可以通过WCF web 服务来操作SharePoint。

     

    那么我们如何选择呢?到底是选择ASP.NET web service 还是WCF web service呢?

     

    首先我们来了解下他们的优缺点:

     

    ASP .NET web 服务

    开发简单,部署比较费事,你需要添加.WSDL.DISCO文件才能使web服务的架构被Microsoft Visual Studio发现。

     

    WCF web服务

    看起来更复杂,你需要指定WCF服务端点的完整配置,包括端点地址,服务协议,绑定设置等。但是WCF服务提供了更灵活,强大的绑定,并且通过SharePoint 承载WCF web 服务,降低了配置要求,因为SharePoint 2010 已经默认支持WCF服务,比如SharePoint 2010 中自带的提供的REST接口 List.svc等。

    如何来开发SharePoint 2010 的WCF web 服务呢?首先我们来了解一下SharePoint 2010 WCF的动态配置。

     

    WCF的动态配置

     SharePoint 2010 中的WCF动态配置以自定义工厂的形式提供,因此当开发WCF服务时,必须指定SharePoint 2010 提供的工厂,指定之后,就不需要在Web.Config中配置各种参数。这样运行时SharePoint服务工厂会自动为你的服务配置适当的端点。

     

    下表列出了服务类型和已知的服务工厂

    服务类型

    服务工厂

    说明

    SOAP 服务

    MultipleBaseAddressBasicHttpBindingServiceHostFactory

    必须使用基本 HTTP 绑定,其根据基本 HTTP 绑定为服务创建端点。

    REST 服务

    MultipleBaseAddressWebServiceHostFactory

    服务工厂通过 Web 绑定创建端点。

    ADO.NET 数据服务

    MultipleBaseAddressDataServiceHostFactory

    可使用的数据服务宿主工厂。

     

    创建WCF服务 (我们选用其中一种服务工厂来做实例 

    下面我们通过一个实例来具体了解下如何创建WCF服务。

    1. 打开VS2010新建一个空的SharePoint 解决方案,
    2. 添加需要的动态链接库的引用,由于我们用到了WCF,因此我们需要添加System.ServiceModel的引用,此外我们需要制定WCF服务的服务工厂,因此我们还需要添加Microsoft.SharePoint.Client.Runtime的引用这个需要从Assembly文件夹内添加C:\Windows\assembly\GAC_MSIL\Microsoft.SharePoint.Client.ServerRuntime\14.0.0.0__71e9bce111e9429c)。

          

            

    1. 添加一个Mapping 文件夹,mappingSharePointISAPI,并在ISAPI文件下创建一个新的文件夹SPLover.WCF (要养成良好的编程习惯,要为自己开发的东西创建一个单独的文件夹以区分哪些是系统的,哪些是自定制的文件)。
    2. 在新建文件夹下创建一个Text文件,把后缀改为SVC,本实例用的是WCFDemo.SVC
    3. 在新建文件下下添加个WCF服务,

            

    1. 至此,我们已完成了所有的准备工作,接下来就是为WCF服务指定服务工厂和添加代码。
    1. 打开Iservice1.cs,把Void方法改为传回字符串,并添加了WebGet属性。代码如下

      

    [OperationContract]
    [WebGet(UriTemplate = "/DoWork", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
    string DoWork();

     

    1. 打开Service1.cs同样把Void方法改为传回字符串,最重要的是为当前类添加必要的属性。

          

    [BasicHttpBindingServiceMetadataExchangeEndpoint]
    [ServiceBehavior]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1 : IService1
    {

    public string DoWork()
    {
    return "works!";
    }
    }

      9. 打开SVC文件添加Service assembly信息并制定服务工厂

      

    <% @ ServiceHost Language="C#" 
    Debug
    ="true"
    Factory
    ="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Service
    ="SPWCFAndJQuery.ISAPI.SPLover.WCF.Service1, $SharePoint.Project.AssemblyFullName$"%>

      10. 打包部署。

     

    测试

    1. 通过Http://ServerName:port/_vti_bin/SPLover.WCF/WCFDemo.svc/如果你得到以下错误,请不要惊慌,

          

    1. 请尝试使用Http://ServerName:port/_vti_bin/SPLover.WCF/WCFDemo.svc/dowork进行访问。如果能返回“works!”就证明我们的WCF服务已经成功了。
     
    下一篇写一下如何通过JQuery调用WCF web 服务。
  • 相关阅读:
    BZOJ 1977: [BeiJing2010组队]次小生成树 Tree( MST + 树链剖分 + RMQ )
    BZOJ 2134: 单选错位( 期望 )
    BZOJ 1030: [JSOI2007]文本生成器( AC自动机 + dp )
    BZOJ 2599: [IOI2011]Race( 点分治 )
    BZOJ 3238: [Ahoi2013]差异( 后缀数组 + 单调栈 )
    ZOJ3732 Graph Reconstruction Havel-Hakimi定理
    HDU5653 Bomber Man wants to bomb an Array 简单DP
    HDU 5651 xiaoxin juju needs help 水题一发
    HDU 5652 India and China Origins 并查集
    HDU4725 The Shortest Path in Nya Graph dij
  • 原文地址:https://www.cnblogs.com/splover/p/2307240.html
Copyright © 2011-2022 走看看