SharePoint 2013 App 开发 (1) - 什么是SharePoint App?

本文介绍了SharePoint2013引入的新应用程序类型——SharePoint App,详细对比了SharePoint App与传统SharePoint Solution的区别,探讨了SharePoint App的开发方式及应用场景。

在SharePoint 2013中,引入了一种新的应用程序类型:SharePoint App。在这里,App这个词并不是泛指应用程序,在SharePoint 2013中,它用来描述一种特定的SharePoint应用。那么,到底什么是SharePoint App呢?

历史,以及手机App的兴起

如果你曾经向SharePoint用户讲解过如何使用SharePoint,那么一定知道,要清晰明了的讲清楚SharePoint里面的诸多概念,是一件多么麻烦的事情。一个SharePoint网站里面有列表、有文档库、有图片库…列表还分成联系人、日历、链接、任务…这些还不包括我们开发人员所定制出来的其他不同的功能组件。SharePoint网站中包含了太多的不同类型的“数据容器”和不同类型的功能组件,而用户要搞清楚这些概念和它们的区别,是一件很麻烦的事情。为什么使用SharePoint不能就像我们使用智能手机一样简单呢?

在使用智能手机时,如果用户需要某个功能,他只需要打开App商店,然后搜索到想要的App,安装它,就可以在自己的手机上使用这个App。每一个App都可以非常容易的被安装,每一个App的运行(理论上)都不会影响其他的App。如果用户不再需要某个App了,只需要直接从手机上删除它,而不用担心删除这个App会让自己的手机出问题,或是导致其他App工作不正常。

移动设备软件工程师在创建App时,总是将App做成一个具备独立、完整功能,与其他App不具备(或几乎不具备)依赖性的独立的应用程序。开发完成后,只需要将App发布到对应平台的App商店(Apple App Store、Google Play、Windows Phone Store),就可以非常方便的将App分发到万千用户的设备上。在对App进行了更新之后,也只需要将更新后的App重新发布,用户手里的设备就能自动提示用户,将App更新到最新版本。

总结一下手机(和其他智能设备)上的App,它们几个核心特点包括:

  • 高独立性:独立提供一个相对完整的功能
  • 高隔离性:App之间的数据相互隔离
  • 高稳定性:App不会影响设备(运行平台)本身的稳定性
  • 分发便利:App可以非常容易的通过App商店进行分发,用户也可以非常容易的从App商店搜索并安装App

(让我们暂且把手机设备上的这种App运行与分发机制,称之为App Model。)新型的App Model相对于传统的应用程序模型,有着非常显著的优势。无论是从开发的角度,还是从最终用户使用的角度,App Model都是一种更受欢迎的模式。它很大程度上避免了自定义应用程序复杂的部署和维护操作,简化了开发过程、部署过程和使用过程。

手机App Model仍在方兴未艾的发展着,并且在向更复杂的设备蔓延。下图是笔者从自己安装了Windows 8操作系统的笔记本上,打开Windows Store所看到的界面。通过Windows Store,用户可以直接安装Windows Store App到Windows 8操作系统中。

image

SharePoint网站中的所有功能内容都是App

说了半天手机上的App Model,那么它到底和SharePoint 2013 App有什么关系呢?简单来说,SharePoint 2013接受并应用了类似手机设备上的那一套App Model模型,建立了一种新型的SharePoint App Model。对照一下手机App的几个核心特点,SharePoint App Model同样提供了类似的特性:

  • 高独立性:每一个SharePoint App都提供了一个相对完整的功能。
  • 高隔离性:安装一个SharePoint App时,它都自动被部署到一个新建的专门的SharePoint网站中(这个网站被称为AppWeb)。
  • 高稳定性:SharePoint App不允许在SharePoint服务器上运行服务器端代码(Server Code),所以它对SharePoint系统的影响被减少到最小。
  • 分发便利:SharePoint App可以被发布到Office Store上,SharePoint网站用户可以直接从Office Store上,购买一个SharePoint App后(如果它不是免费的),将一个SharePoint App安装到自己的SharePoint网站中。

在之前版本的SharePoint中,用户在一个SharePoint网站中看到的,是一些诸如列表、文档库之类的类型。从SharePoint 2013开始,对于最终用户而言,他在一个网站中看到的任何功能组件和内容,都是一个一个的App。例如,通过“网站内容”链接查看一个网站中的所有内容,对于用户而言,看到的全部都是App。

image

点击“添加应用程序”按钮,用户就可以向网站中添加新的App。可以添加的App,包括SharePoint 2013内置的App,诸如文档库、任务、图片库等等(没错,现在文档库、任务也都是一个一个的能实现某个功能的App了)。

image

在页面的左侧,有一个“SharePoint应用商店”链接,点击这个链接就可以直接页面上展现出Office Store中的SharePoint App。网站管理员可以通过这个界面,直接购买并安装一个SharePoint App到自己的网站中。注意看浏览器的地址栏,这时用户并没有离开自己的SharePoint网站,SharePoint网站会自动访问到位于互联网上的Office Store,并将SharePoint App的信息显示出来。

image

可以看到,一个SharePoint App在使用上,非常类似于一个手机上的App。不需要专门IT人员,网站管理员就可以自己从Office Store上浏览、搜索和安装一个SharePoint App。通过引入全新的SharePoint App Model,SharePoint 2013建立了一个新的应用平台,同时通过Office Store,也建立了一个新的生态圈。

SharePoint App和以前的SharePoint Solution有什么关系?

如果你曾经在SharePoint 2007或2010上开发过SharePoint Solution,那么看到这里,你冒出来的一个念头很可能是:嗯,SharePoint App看上去很好的样子,但是它和我之前创建的SharePoint Solution是什么关系?它们是同一个东西,只是改了一下名字吗?我可以将一个SharePoint Solution Package(.wsp)直接当成一个SharePoint App,发布到Office Store上去吗?

这个问题的简单答案就是:一个SharePoint App不同于一个SharePoint Solution,你也不能把一个wsp解决方案包直接当成一个SharePoint App发布到Office Store上去。

为了更详细的解释这个问题,让我们回过头来看看,开发一个SharePoint Solution是怎样的一个流程:

  • 在Visual Studio中创建一个新的SharePoint Solution项目
  • 向SharePoint Solution中添加各种不同的SharePoint Item,并将它们组织成一个或多个Feature
  • 整个SharePoint Solution被Visual Studio打包成一个Solution Package(wsp文件)
  • IT管理员将wsp文件复制到SharePoint服务器上,用PowerShell安装它
  • IT管理员用PowerShell或管理中心将Solution部署到SharePoint Web应用程序中
  • 网站管理员通过网站集或网站功能管理,根据自己的需要,激活或停用某个通过Solution Package安装的Feature
  • 用户使用通过Solution Package(以及其所包含的Feature)所安装的各种组件,例如Web部件、页面、列表…
  • 如果Solution Package有更新,IT管理员使用PowerShell在服务器上对Package进行更新

在整个Solution Package的部署和管理过程中,都离不开IT管理人员的参与。IT管理人员通过PowerShell之类的专业工具,在服务器上实现对Package的各种管理。

接下来让我们看看一个Solution Package是如何在SharePoint服务器上运行的:

  • Solution Package中包含的大部分自定义组件,都以.NET代码的方式来实现,它们在服务器上的w3wp.exe进程中运行
  • 有些代码可能运行在其他进程中,比如计时器作业会运行在owstimer.exe进程中
  • 沙盒解决方案中的代码会运行在专门的沙盒进程中

Solution Package中的大部分组件,是以一种“侵入性”很强的方式,在SharePoint服务器上运行的。从本质上来说,SharePoint服务器被作为一个ASP.NET Web运行平台,而Package中的代码,大部分都是以标准ASP.NET方式,以Page、Web Control的形式,运行在服务器的应用程序池中。无论是Application Page还是Site Page,都无非是一个标准的ASP.NET Page,而Web Part更是一种标准的ASP.NET Web Control。这种运行模式,对SharePoint服务器本身是一种相当大的冲击,更是SharePoint系统稳定运行的大敌。随着SharePoint系统在企业中的地位越来越高,企业也原来越不希望SharePoint系统出现任何的问题,而原本的SharePoint Solution模式,是很难达成这个目标的。无论是Solution的开发,还是它的部署和维护,都会不同程度的对SharePoint系统造成影响。少数对SharePoint系统稳定性和安全性非常高的企业,干脆禁止了在SharePoint服务器上运行任何自定义代码,这在某种程度上,体现出了SharePoint Solution模式的困境。

正是为了迎接SharePoint Solution所面临的这些问题,SharePoint App Model应运而生。通过借鉴和吸收手机App Model的特点,SharePoint App Model要解决的,正是上面所说的这些问题。SharePoint App带来的好处包括:

  • 一个SharePoint App不会对SharePoint服务器产生严重的冲击(因为SharePoint App不允许在SharePoint服务器上运行服务器端代码)
  • SharePoint App之间有高隔离性(每个App都有自己独立的AppWeb)
  • SharePoint App的部署不需要IT管理员的参与了(通过Office Store就可以轻松搞定)

所以,SharePoint App并不是将SharePoint Solution仅仅换了一个名字而已。它从架构,到开发方式,到部署分发方式,到运行方式,到所用到的核心开发技术,都和SharePoint Solution有显著的区别。一个SharePoint Solution是不太可能经过简单的修改(比如在xml清单文件里面加上几个属性),就直接被转换成一个SharePoint App的。SharePoint Solution Package更不能直接被发布到Office Store上。

SharePoint App Model对于开发人员意味着?

在前面的段落中看到“SharePoint App不允许在SharePoint服务器上运行服务器端代码”这句话的时候,会不会感到眼前一黑?别着急,而对于开发人员,SharePoint App实际打开了另外一面更大的门。SharePoint App对于开发人员意味着:

(1)开发人员可以使用任何自己想要的服务器端技术来开发App

没错,从此,开发人员不再被限制在ASP.NET上。如果愿意的话,开发人员可以使用ASP.NET MVC、PHP、Java、Node.js…各种不同的服务器端技术,来创建App。

想想我们手机上的App。大部分手机上的App,实际上只是整个应用中最前端的、面对最终用户的部分。在一个手机App的后面,可能隐藏着一个庞大的服务器场系统,为千万个被安装在手机终端上的App提供后端服务。当我们启动手机上的一个App时,这个App会连接到互联网上某个服务器系统上,获取数据、更新数据。无论那个后端的服务器端系统是使用何种技术构建(.NET或Java或其他平台技术),对于手机设备而言,这个App“只是”一个标准的Windows Phone App或Android App或iOS App而已,手机设备不关心App的后端服务器端系统。App开发人员拥有100%的自由。实际上,对于一个热门的App,开发团队必然会基于一个统一的后端服务器系统,为不同的设备(Windows Phone、Android、iPhone),用不同的App开发技术,开发不同类型的App。

SharePoint App同样如此。对于大多数SharePoint App而言,SharePoint网站并不关心这个App的后端服务器系统使用了何种技术平台,是使用的ASP.NET MVC还是ROR。对于SharePoint网站,这个App“只是”一个标准的SharePoint App而已。

(2)SharePoint App可以被host到不同地方

SharePoint App可以使用任何后端服务器端技术,它也可以被host到不同的地方。如果一个SharePoint App中的所有功能都通过SharePoint本身来实现和完成,那么可能它可以直接被host在SharePoint上(这种App被称为SharePoint-hosted App)。

对于一个更复杂的SharePoint App,它很可能要通过专门的后端服务器应用来实现。除了SharePoint-hosted App之外,将App host到其他环境中的方式,被称为Cloud-hosted。Cloud-hosted又分为两种情况:

  • Provider-hosted:找一个专门的环境来host,比如某台专门Windows Server上的IIS,或Linux Server上的Apache,或Windows Azure/Amazon的云服务。这种由App开发商来提供的某个环境,都被统一称为Provider-hosted。
  • Auto-hosted:App自动使用Windows Azure来作为host,当SharePoint安装App时,能自动将App中包含的Web网站给发布到Windows Azure上。这种host模式只适用于Office 365上的SharePoint网站,并且你同样需要购买Windows Azure订阅。

当然,一个SharePoint App也完全可以某些部分host到SharePoint里面(SharePoint-hosted),另外部分则host到另外某个环境中(Cloud-hosted),这种混搭的方式,被称为Hybrid-hosted。

(3)SharePoint App开发人员不再需要对SharePoint技术体系有太深的了解

还记得在为SharePoint 2007/2010开发Solution的岁月里,无数的开发人员为了深入了解SharePoint平台本身,耗费了无数的青春和岁月。在开发SharePoint Solution时,对SharePoint系统的深入了解是不可或缺的。一个熟练的ASP.NET开发工程师要成为SharePoint工程师,还需要经过大量的学习和实践,才能掌握SharePoint中无数的“秘密”。但在开发SharePoint App时,开发人员所需要对SharePoint的了解程度,被大大降低了。这对于开发团队,无疑是一件美好的事情。

(4)JavaScript将是SharePoint App的骨干支撑技术

JavaScript早已经成为了现如今Web开发中最重要、最核心的技术之一,随着我们从SharePoint服务器端代码中解脱出来,JavaScript的作用被凸显了出来。在SharePoint App中与SharePoint系统的交互,几乎都是通过JavaScript来完成。微软极大地丰富了SharePoint的JavaScript Client Object Model(JSOM),让我们可以通过JavaScript做更多的事情。另外,SharePoint 2013的REST接口也可以让我们从JavaScript中更方便的获取SharePoint网站中的数据。

那么,到底要如何开发一个SharePoint App呢?用一句话回答:仍然是使用Visual Studio。下图是Visual Studio 2012中的SharePoint App项目模版。

image

本系列文章的目标,就是想你讲述SharePoint App的开发,所以在这里我们就先暂时打住了,具体的开发步骤、开发方法,在后面的系列文章中将相继讲述。

SharePoint App是用来取代SharePoint Solution的吗?

我知道你在想什么。上面说了这么多SharePoint App的好处,那是不是意味着,SharePoint Solution开发模式就要死了,以后所有人都将使用新的SharePoint App Model了?

如果在开发之前的评估阶段,你发现你要实现的需求,既可以通过SharePoint Solution实现,也可以通过SharePoint App实现,那么我会建议你使用SharePoint App Model来开发。但是(!),在很多时候,事情都不会这么简单。SharePoint App Model由于其自身的特点,它有很多事情是做不了的,或者说是不适合做的。比如,SharePoint App中的Feature的范围,总是Web(网站)级别,而不能是Site、Web Application和Farm级别。从笔者个人的观点,如果你是需要基于SharePoint系统,对它进行比较深层次的扩展,那么很可能SharePoint App就不是你的菜了。(这就好像如果你要对Android原生系统做一个深层次的扩展和定制,那么一个标准的Android App是不太可能满足你的要求的,相反,你可能需要做一个定制ROM,就像MIUI ROM做的那样。)

所以,SharePoint App并不是一项用来完全取代SharePoint Solution的技术体系,在某些方面,它无法取代SharePoint Solution的作用。开发团队需要根据自己的需求,慎重的做出选择。

企业能不能自己建立一个内部的“SharePoint App Store”呢?

完全可以。如果SharePoint App是为特定的企业系统所创建的,那么是没有必要将App发布到Office Store上的。另外,企业内部网络可能根本不允许连接到互联网,那就根本没法通过Office Store向SharePoint网站安装App。

在企业内部部署的SharePoint系统中,可以通过创建App Catalog(应用程序目录),来进行App的分发。

image

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值