SPO Azure开发之-APP

年初听到互联星空终于在天朝取建立了azure的数据中心,其实内部测试他们好久之前就开始了。由于工作的关系,两年前就开始使用没有release的SPO和Azure开始做一些项目了(当然是非天朝版本)。总体上看微软的Azure平台还是相当牛X的,至少目前基于微软系的内容,没有比这个更牛的了,从某些网站的测试数据来看,微软的azure速度也能进入前三甲,(至少比国内那些渣渣云平台好多了,话说今天还收到国内某渣渣平台的收费短信,话说我都删除了instance了,你们是从哪里计费的。)
来个微软的全球节点图:

由于一直是在做SharePoint相关的内容,从03到现在的13,可以说SP平台走过了十多个年头,最新的版本中SharePoint提供两个,一个是on-prime版本,一个是online版本。
On-prime版本我们内部用了N个release,发现有点渣渣,限制和online几乎一样,想不出有什么公司会继续去升级这个版本,唯一的优势在于升级了很多新东西,依然能够hack自己的asp.net程序进去使用。
Online版本要舒服得多,不过是放在了o365 online 的家族中,和lync exchange office的online tenant共享license.
他的限制在于我们不能再任意的使用原来基于farm和server side object model的解决方案,只能用CSOM对site collection和ca来进行操作。内部程序版本为15.0.xxxx。这意味着,在online的app当中,只有几种方式可以host你的app。
其实最早的时候还有self-host以及auto host.今天看微软最新更新的sdk来看,这两个坑坑已经被取代了。哈哈,其实他们自己也发现,那么分不太合理。(我会说我们有些开发都分不清么)。
这里抽了几张图,应该能看出个大概。
SharePoint-hosted apps

Provider-hosted apps

Mixture-hosted apps
以下是我依据的一些个人经验,从开发的角度来区分现在的几种app的模式。这不能不从sp的发展历程开始说起
要知道在原有的版本当中,特别是2010和2007这两个SharePoint版本当中,我们的重量级的解决方案都是以wsp的包的形式,部署在farm当中的,然后再apply到对应的某一个我想使用的site collection当中.我的包当中其实本体就是一个solution。而这个solution可以包含feature,而feature可以包含我的content type,module等等。这个结构是SharePoint当中管理组件和内容的基本结构。2013同样也使用的是这样一套结构。我们开发的内容都按照这套结构来进行构建,部署和使用。这样我们才能利用SP的很多优势内容如List,library,bdc等等。
但是我们在做大型的项目时候发现,我们原来使用的这些内容,都需要部署在场的级别,而且我们的内容都是从server side object model去进行操作的, 这样当一个场,支持几十个solution,里面有几百个feature的时候,就变成了噩梦,因为所有的东西都是在服务器上跑的,什么你都能操作,什么你都能控制,对于开发性来说本来是好事,但是内容多了以后,你就会发现有很多问题,因为并不是所有的solution你都清楚,并且都很ok. 而且由于是分布式部署,我们在每次安装wsp的时候,会重启整个目标site collection前端iis. 要知道,如果我有20台前端,那会是什么一种情况。话说原来在某大型央企的一个项目,每次上包都是胆战心惊的凌晨左右时间,人工值守。如果是运维的人员,你们懂的。
所以对于场级别的解决方案以及server side object model来说,尽量使能没有就没有,于是现在的这个版本就出现了,并且都是以app的方式呈现。当然,其本质还是一个solution.
SharePoint-host: 这里就是把你的app部署到一个app的专用服务器上面,在2013版本当中有一个专门的app中心,可以来承载你的应用。
Provider-host: 这里就是把你的app部署到一个其他你想用的服务器上面,一般我们都丢到Azure里面做成一个web Role, 这个东西我会在后面的文章给大家介绍。
混合模式这里我就没有用过,所以不做评价,大家自行看微软的SDK.
说到这里大家可能会比较好奇,我随意把我的app丢到一个服务器上面,那么他们是怎么和我的farm来进行验证和交互的呢,那么我会在后面给介绍,SPO的认证模块。
由于现有的SPO以及onprime在标准的app当中无法使用SSOM来与SPO交互,所以我们这里开发app当中能走的路就只有以下几条了:
1.SharePoint Rest API
SharePoint REST service architecture

这个其实原来2010版本就有,不过现在提供的接口更多了一些,具体的一般都放在/_api里面,大家可以从sdk里面去具体学习。http://msdn.microsoft.com/en-us/library/office/fp142380(v=office.15).aspx
这里需要注意的是,对于restful的每一次请求,需要在http头当中加入 token.
HttpWebRequest endpointRequest =
(HttpWebRequest)HttpWebRequest.Create(
“http:///_api/web/lists”);
endpointRequest.Method = “GET”;
endpointRequest.Accept = “application/json;odata=verbose”;
endpointRequest.Headers.Add(“Authorization”,
“Bearer ” + accessToken);
HttpWebResponse endpointResponse =
(HttpWebResponse)endpointRequest.GetResponse();
2.SharePoint Web Service
这个在2010里面也有,也有所丰富。
3.SharePoint client side Object Model
同样2010也有,也丰富不少。
这三个方式都是和语言无关的,你可以用JS,也可以用c#来写。都ok.

三十而立

马上就快进入30了,别人说男人三十而立,到了而立之年,应该在各种方面上都有所得,但是纵观自己,似乎离而立还缺乏很多。感觉个人心态诡异,思绪纷乱.
身体在经过了多年久坐以后,开始产生了一些变化,体重增加,腰部和颈部出现了不适,话说有一日打喷嚏把腰给闪了,足见腰部和颈部的问题有些严重了。有人说当开始感受身体状况下降,就证明开始步入中年了。
总是在脑袋空闲的时候,问自己,人活着是为了什么,也问过一些人,但无非是享乐主义,身存主义,终究没有一些十分耳目一新,且能自圆其说的答案,或许大多人都有自己的答案,或许大多人拒绝思考这个问题,再或许他们自己都不知道自己已有答案,而只是照着别人的样子,去过活而已。
今天突然想到一个话题,叫做法律,其实自然界是没有法律的,如果我说法律是为了猎人更好的赡养猪圈而制定的猪之间的规则,你们又会怎么看呢?而高级的猪可以修改规则,以便更加持久的去圈养养低级猪,从而获得更多的资源。
最近在玩HDInsight,发现微软封装的这个hadoop的一堆东西,完全是小白鼠试验品啊,demo都各种跑错,于是乎还是自己搭个环境吧,话说关联着,也一起看了下twitter的storm. 感觉类似的地方很多。不过进入到互联网行业,各种开源组件一堆一堆啊。看来搞几台1u的服务玩玩应该是划算的?
元旦过去,年关已近,不知何时萌生了打道回府的概念,不过在各大招聘网站上看了下老家的工作机会,只能一声叹息啊,话说上次有一家公司进行了三轮电话面试,最终还是因为时间没有确认而不了了之。薪水只有现在的1/3。核算了一下生活成本之类的,的确很是问题啊。回顾而想,终于似乎有点明白了为啥早上城铁为罐头了。