Office 365的免费开发环境:

  微软给开发者提供一个月的,免费的,基于Windows Azure云端的Office365试用和开发环境。用户们可以通过网站http://dev.office.com/devprogram去申请。一个好消息是最近有一个免费一年的Office 365开发环境订阅的活动当我们创建好账户后,就可以通过登陆portal.office.com进入我们的Office 365的主门户。用户可以下载本地安装Office365的各个应用:Word, Excel, PowerPoint,Outlook, OneNote等,也可以使用网页版而不用本地安装下载。

  对于SharePoint的用户和开发者来说,可以点击主门户的Sites图标直接进入用户的SharePoint网站。Office 365根据用户的登陆账号自动创建的SharePoint网站主页的url是按下面的格式来创建的:https://[用户名].sharepoint.com。该站点主域我们也称为SharePointHost Web。除了该主站点外,Office 365还创建了如下与SharePoint相关的站点:



  • https://[用户名].sharepoint.com

  • https://[用户名].sharepoint.com/portals/community

  • https://[用户名].sharepoint.com/portals/hub

  • https://[用户名].sharepoint.com/search

  • https://[用户名]-my.sharepoint.com

  举例来说,如果一个用户的Office 365用户名是: scot域是scot.onmicrosoft.com,则SharePoint的主站点(Host Web)就是: https://scot-sharepoint.com

SharePoint承载应用(SharePoint-Hosted App):

  用户开发的SharePoint相关应用程序有两种基本类型:SharePoint承载(SharePoint-Hosted Apps)和提供者承载(Provider-Hosted Apps)。所谓SharePoint承载的应用(SharePoint-Hosted Apps)就是指用户开发的应用是上传部署到OfficeSharePoint主机上,在我们的开发环境中就是部署到sharepoint.com服务器上。而提供者承载的应用(Provider-Hosted App)就是指应用部署在用户自己的服务器上或部署到Windows Azure云中。两种应用都是通过调用SharePoint APIs (REST/CSOM)同用户的SharePoint服务器进行交互来对用户的SharePoint资源进行Create/Read/Update/Delete (CRUD)操作。

  对于SharePoint承载的应用,由于是上传部署到Office 365服务器端,基于服务器安全等因素考虑,是不允许该应用有任何可以在服务器端运行的代码。也就是说SharePoint承载的应用是部署到服务器的apsx,html, javascript, css的集合,都是下载到用户本地,在浏览器中运行执行的。因此SharePoint承载的应用只能使用JavaScript语言编写去调用SharePoint (REST/CSOM) APIsSharePoint的组件,包含列表,页面,web部件,工作流等进行操作。

SharePoint承载应用架构:



(Copy from Deep Dive Class)

  当用户开发的SharePoint承载应用部署到服务器上后,服务器会为该应用创建一个唯一的应用站点及上图中的App Web(应用站点)。该应用站点位于主站点之下,站点访问的url按下面的格式定义:

 

         https://[用户名]-[appuid].[hostingdomain]/[appname]

  • appuid:SharePoint为部署应用随机产生的唯一号,每次部署该唯一号会产生变化。

  • appname: 是部署应用的应用名。

  • hostingdomain: 在我们的开发环境中是sharepoint.com

  如果用户scot部署了一个名叫SharePointApp1的应用,则该应用站点的url就是:https://scot-8599c74e5e5d.sharepoint.com/SharePointApp1。而 8599c74e5e5d就是SharePoint自动产生的对应该应用的唯一号。为了简单,在文章的后面我们用~appWebUrl来代替应用的站点url,如上例中的 https://scot-8599c74e5e5d.sharepoint.com/SharePointApp1。同样我们用~hostWebUrl来代替主站点的url,如上例中的https://scot.sharepoint.com

  由于每个部署的应用有自己唯一的站点url和域,SharePoint可以据此来判断该应用的授权和相应用户的授权来决定应用对SharePoint组件的操作权限。因此当应用运行时,对SharePoint某资源的访问权限是应用对该资源的权限和用户对该资源权限中,权限较小的一个。SharePoint承载应用不考虑用户登录和管理,该部分操作由SharePoint本身提供。

   SharePoint承载应用由HTML pages, JavaScripts,css文件和应用的声明文件AppManifest.xml构成,是一个典型的JavaScript应用。在应用的声明文件中定义了应用的名称,应用的认证,应用的启动页面和应用的SharePoint资源权限。下面是AppManifest.xml的一个例子。



<?xml version="1.0" encoding="utf-8" ?>

<!--Created:cb85b80c-f585-40ff-8bfc-12ff4d0e34a9-->

<App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest"

Name="SharePointApp1"

ProductID="{013ccaae-5af2-48e8-b6d1-844e32cb97df}"

Version="1.0.0.0"

SharePointMinVersion="16.0.0.0"

>

<Properties>

<Title>SharePointApp1</Title>

<StartPage>~appWebUrl/Pages/Default.aspx?{StandardTokens}</StartPage>

</Properties>

<AppPrincipal>

<Internal />

</AppPrincipal>

<AppPermissionRequests>

<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Manage" />

</AppPermissionRequests>

</App>







在应用的启动页面中, {StandardTokens}由下面的参数&#20540;构成,传递给应用程序使用。







                                       (Copy from Deep Dive Class)



   SharePoint承载应用程序可以通过多种方式体现到SharePoint网站:

  • 完整页面方式(Full Page):可以具有SharePoint页面的外观和体验。(必须有)

  • 网页的一部分(App Part):采用iframe嵌入页面中。(可选择)

  • UI命令(UI Custom Action):将应用程序添加到列表项,文档等来扩展功能区和菜单。(可选择)

创建SharePont承载应用:





  开发者可以在Visual Studio 2013中很方便的开发,调试SharePoint承载应用。开发者可以去:https://www.visualstudio.com/downloads/download-visual-studio-vs 下载Visual Studio 2013Visual Studio 2013安装完成后,还需下载安装Office Developer Tools for Visual Studio 2013: http://aka.ms/OfficeDevToolsForVS2013





创建一个SharePoint承载的应用

  1. VS2013中创建一新工程。

    1. VS2013中选择菜单File/New/Project

    2. 在新工程的向导中:

      1. 选择Template/Visual C#/Office/SharePoint/Apps

      2. 选择App for SharePoint

      3. 输入工程名称:DeepDiveSPApp,然后点击OK



                

    3. New app for SharePoint向导中:

      1. 输入url地址作为你的应用部署和调试的地方。如:https://scot.sharepoint.com

      2. 选择SharePoint-hosted

      3. 点击Finish

      4. 当登陆界面出现时,输入你的Office365账号和密码。

                               

  2. 运行测试

    1. 应用生成后,按F5启动应用的运行调试。

    2. VS2013会编译,部署并启动IE

    3. Office365的登陆界面中输入用户名,密码。成功后IE会自动跳转到应用的首页:~appWebUrl/Pages/Default.aspx?{StandardTokens}  

    4. 确定页面如下图。

   上面的由VS2013生成的示例应用,用户不用做任何的代码修改就可运行。该应用只是获得登陆用户的用户名并在应用的主页上显示出来。

SharePoint承载应用编程:

  SharePoint承载应用的编程只能使用JavaScript语言。用户可以直接使用SharePointREST APIs,也可以使用微软提供的SharePoint Client Side Object Model(CSOM)库来编写。CSOM实际上是通过各种类把SharePointREST APIs的调用封装起来了。以上面的示例应用为例:

  直接调用SharePoint REST APIs。参考:https://msdn.microsoft.com/en-us/library/office/dn593591.aspx



app.js
(function () {
        "use strict";
        jQuery(function () {
            jQuery.ajax({
                url: "../_api/web/currentuser",
                type: "GET",
                headers: {
                    "accept": "application/json;odata=verbose",
                },
                success: function (data, status, jqXHR) {
                    jQuery("#message").text("Hello " + data.d.Title);
                },
                error: function (jqXHR, status, message) {
                    jQuery("#message").text(message);
                }
            });
        });
    }());


    使用SharePoint CSOM。参考:https://msdn.microsoft.com/en-us/library/office/jj193034.aspx

app.js





'use strict'
;

var context = SP.ClientContext.get_current();

var user = context.get_web().get_currentUser();

// 此代码在 DOM 准备就绪时运行,并且可以创建使用 SharePoint 对象模型所需的上下文对象

$(document).ready(function () {

   getUserName();

});

// 此函数准备、加载然后执行 SharePoint 查询以获取当前用户信息

function getUserName() {

   context.load(user);

   context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail);

}

// 如果上述调用成功,则执行此函数

// 此函数将“message”元素的内容替换为用户名

function onGetUserNameSuccess() {

   $('#message').text('Hello ' + user.get_title());

}

// 将在上述调用失败时执行此函数

function onGetUserNameFail(sender, args) {

alert('Failed to get user name. Error:' + args.get_message());

}

总结:



   微软的Office 365提供免费订阅使用,同时也给开发者提供了很好的Office 365的应用开发平台。再加��强大的Visual Studio 2013开发工具,使得Office 365应用的开发变得更方便。上面的例子只是SharePoint承载应用开发的入门,实际的应用会涉及到更多的方面,如如何开发App Part, UI custom action command, 如何访问主站点SharePoint资源,如何访问外网的Webservice等。





参考:



  Office 365 Dev Site:  http://dev.office.com



  Office 365 App Mode Deep Dive: http://www.microsoftvirtualacademy.com/training-courses/deep-dive-into-the-office-365-app-model