在聊SharePoint开发之前,有必要说下什么是SharePoint.

在我工作的过程中,经常遇到客户对SharePoint不太了解的情况。有客户说,SharePoint太烂了,DropBox能做到的什么什么功能,SharePoint竟然做不到,很明显这种客户把SharePoint当成了一个云盘。那么什么是SharePoint呢?

根据Microsoft的说法,SharePoint是一个企业级的协作平台。这个说起来有点抽象啊 :) 那我们先看看SharePoint的发展历史吧。其实最开始的时候,SharePoint不是这么个大家伙。

1. SharePoint的发展历史。

1)其实SharePoint在开始之初,其只是一个很小的产品,最开始是Sharepoint Team Service 1.0 ,其作为Frontpage的一部分。

2) 后来发布SharePoint Team Service2.0. 其与第一个版本的最大区别在于:所有文档的存储都放到了数据库中,而不是普通的文件文档存储在目录结构中。而且支持版本控制了。

3) 再后来发布了SharePoint Team Service 3.0. 我们通常称之为MOSS 2007 ( Microsoft Office SharePoint Portal Server), 其开始支持WFF及.NET 3.0了。该版本和Office 2007一起发布, 该版本的发布标志着微软的下一代企业级协作软件平台的诞生。

4) 随后Microsoft 发布了SharePoint 2010。

5) 现在最新版本是SharePoint 2013.  Office365上部署的SharePoint正是该版本。

2. 什么是SharePoint?

不同的人眼里, 会对SharePoint有不同的认识。在某些人眼里,SharePoint是一个文档存储中心。还有些人认为,SharePoint是信息共享的地方。或者认为SharePoint是快速创建网站的工具;还有些人觉得SharePoint是一个构建企业级应用的平台。

其实,这些观点都没有错。不同人的眼里,不同的用法,就可以把SharePoint当成不同的东西。 对于那些把SharePoint当作文档存储的用户来说,所以我们能理解他会把SharePoint 和DropBox做比较,那是因为他没有完全理解SharePoint,只是单纯地把SharePoint理解为一个文档存储中心了。

实际上, SharePoint 确实可以实现文档存储。而且SharePoint在早期,确实是用做文档存储的。 但是现在的SharePoint, 远远不止是一个文档存储中心了。

那么,回到初始的问题:到底什么是SharePoint呢? SharePoint是一个企业级的企业协作平台。通过这个平台,你可以共享文档,你可以和同事协作完成某件任务,你可以自动触发某个工作流等,你甚至可以和其他的产品和平台进行交互和通讯。

上面说到的大多数功能,其实通过SharePoint的管理员的管理和设计,基本都可以达到了。但是,如果要实现一些更高级的与实际业务相符的定制功能,就需要进行SharePoint的二次开发了。因此,接下俩,我们会从SharePoint开发者的角度,来看待SharePoint的结构了。

3. 开发者眼中的SharePoint结构。

如果从开发者角度来看待SharePoint的话, SharePoint的基本结构如下图所示:

也就是说, SharePoint中的每一个文档,每一个Item,每一个Site等对象,都可以通过其相应的.NET 对象访问到。

那么问题来了,作为开发者来讲,可以通过哪些方式和SharePoint来交互呢?

4. 开发者怎么和SharePoint进行交互?

1) 自SharePoint支持二次开发之日起,最传统的与SharePoint交互的方式就是SharePoint服务器端编程模型。所有服务器端的对象都是以SP打头。比如SPSite, SPWeb.

2) 自SharePoint 2010开始,SharePoint引入了CSOM访问模式 ( Client-side object model),这样对于SharePoint对象的访问代码,不再局限于一定要运行在SharePoint Server端,而是通过客户端发出请求,从而实现对SharePoint服务器的访问。

在SharePoint2010中, 还只是支持.NET的客户端。SharePoint的客户端对象实际上和其服务器端对象基本是一一对应的关系,只是去掉了SP的前缀。比如服务器端的网站集为SPSite,那么客户端为Site。

只所以提出CSOM的访问模式,是因为SharePoint已然成为一个平台,需要和其他的系统进行交互;同时,如果直接在SharePoint 服务器上运行自定义代码对SharePoint服务器对象进行访问的话,如果代码质量不高,会导致SharePoint性能急剧下降。而有些不理解的客户,会怪罪SharePoint产品的问题。 为了缓解这个问题,在服务器端编程模型中, 除了SharePoint场解决方案外, 我们还引入了SharePoint 沙盒解决方案(Sandbox solution)。

在沙盒解决方案中,客户自定义的服务器端代码运行在单独的进程中,而和SharePoint的独立应用程序池进程w3wp.exe 隔离开来,从而一定程度上减轻对SharePoint服务器的影响。沙盒解决方案的SharePoint结构如下:

3) 自SharePoint 2010起,我们还引入了SharePoint Powershell。 这样,开发者可以通过编写PowerShell script来实现对SharePoint的访问和设置。

4)自SharePoint 2013起,除了支持.NET客户端外,其还引入了REST的支持,从而实现对多种类型客户端的支持。

5)在SharePoint 2013起,SharePoint还引入了新的概念SharPoint App (SharePoint 程序)。相比于传统SharePoint中的web part, SharePoint App是一种轻量级的程序, 其是通过CSOM的方式来实现对SharePoint的访问。因此,SharePoint App可以通过3种类型进行部署:

a) SharePoint Host ( 即SharePoint web app部署在SharePoint Server上,该web app只能通过JS, CSS, HTML5这些客户端技术来访问SharePoint)

b) Auto-Host ( 即SharePoint web app自动部署在SharePoint为你自动创建的Windows Azure Websites上,部署在Windows Azure Websites上的web app可以通过.NET等技术和SharePoint交互)

c) Provider host (即SharePoint web app部署在自定义的任何Server上,可以是Windows Azure, 也可以是你的on-premise server,或者是你的PHP等,可以通过任何技术和SharePoint交互)

在我看来, Microsoft是要把SharePoint打造成一个协作平台的入口。通过该统一入口,我们可以把SharePoint和其他系统集成起来,而这些所谓的“其他系统”可能是部署在任何地方的企业应用。当然,Microsoft是希望“其他系统”部署在Microsoft Azure上,从而打造一个全部基于Windows Azure的以SharePoint为入口的平台。

所以,那些认为SharePoint Online只是一个文档存储中心的客户,似乎有些小看SharePoint了哦 :)

相关资源:

Microsoft Office 365免费试用链接:

https://portal.office.com/Signup/MainSignUp15.aspx?Dap=False&QuoteId=79a957e9-ad59-4d82-b787-a46955934171&ali=1&alo=1&lc=1033

什么是SharePoint?的更多相关文章

  1. BPM SharePoint解决方案分享

    一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...

  2. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

    默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

  3. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  4. SharePoint 2016 入门视频教程

    之前一直有朋友让自己录一些SharePoint的入门视频,之前没有太多时间,一个巧合的机会收到CSDN学院的邮件,可以在CSDN上发布视频教程,自己就录了一些.说起录视频也是蛮辛苦的,每天下班吃完饭要 ...

  5. 如何使用本地账户"完整"安装 SharePoint Server 2010+解决“New-SPConfigurationDatabase : 无法连接到 SharePoint_Config 的 SQL Server 的数据 库 master。此数据库可能不存在,或当前用户没有连接权限。”

    注:目前看到的解决本地账户完整安装SharePoint Server 2010的解决方案如下,但是,有但是的哦: 当我们选择了"完整"模式安装SharePointServer201 ...

  6. SharePoint 2016 必备组件离线安装介绍

    前言 SharePoint 必备组件安装,一直以来都是SharePoint安装过程中的最大的坑,尤其是不能联网的服务器.博主在这里简单介绍一下离线安装过程,并附组件包下载以及安装命令,并且在windo ...

  7. SharePoint 2013 create workflow by SharePoint Designer 2013

    这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...

  8. Install and Configure SharePoint 2013 Workflow

    这篇文章主要briefly introduce the Install and configure SharePoint 2013 Workflow. Microsoft 推出了新的Workflow ...

  9. SharePoint 2013 configure and publish infopth

    This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...

  10. SharePoint 2013 Create taxonomy field

    创建taxonomy field之前我们首先来学习一下如果创建termSet,原因是我们所创建的taxonomy field需要关联到termSet. 简单介绍一下Taxonomy Term Stor ...

随机推荐

  1. asp.net——Josn转DataTable(转)

    使用UI框架开发的时候就常常用到DataTable转Json的情况,但是最近完成一个微信公众号开发的项目,需要把微信接口传过来的json值作为转为DataTable后绑定到服务器控件上. 在网上找了很 ...

  2. Selenium框架切换-----Selenium快速入门(七)

    上一篇说了窗口的切换,本篇说说框架的切换. 切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset 以下是常用的方法: 方法 说明 WebDriver ...

  3. sql server还原到指定时间

    BACKUP LOG yjxy_1010 TO DISK='d:\yixy_log.bak' WITH FORMAT 数据库右击->任务->还原->还原事务日志.

  4. uploadPreview 上传图片前预览 IE9 索引无效的问题

    最近公司的项目用到比较多的上传图片的操作,所以用到了基于jquery的上传前预览的插件 uploadPreview ,后来测试的时候发现在IE9下报索引无效的问题. 异常的产生方式 放一个file控件 ...

  5. springmvc执行流程 源码分析

    进入DispatcherServlet 执行onRefresh,然后执行初始化方法initStrategies.然后调用doService——>doDispatch. 根据继承关系执行Servl ...

  6. linux命令之信息显示与搜索文件命令

    1.uname:显示系统信息 该命令用于显示系统相关的信息,比如内核版本号,硬件架构等. 参数 说明 -n(常用) 显示主机名称 -r(常用) 显示内核发行版本号 示例: 1)显示主机名 [root@ ...

  7. java学习笔记—Servlet技术(11)

    如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servle ...

  8. HTML防止input回车提交表单

    原链接:https://blog.csdn.net/ligang2585116/article/details/44699567 自动提交情况说明: 1.默认情况下,单个输入框,无论按钮的type=& ...

  9. 利用python 学习数据分析 (学习四)

    内容学习自: Python for Data Analysis, 2nd Edition         就是这本 纯英文学的很累,对不对取决于百度翻译了 前情提要: 各种方法贴: https://w ...

  10. flask _bootstrap中使用flash

    在模板中获取flash闪现的那段代码要和内容块放在同一级别上.不然网页上是看不到闪现的内容的. 比如在基模板里定义一个content block ,里面一个是get_flashed_messages代 ...