擁抱開源,Office 365開發迎來新時代

前言

做爲全球最大的開放源代碼託管平臺,Github在上週迎來了它的十歲生日。自從2008年正式上線以來,Github上面匯聚了數以千萬計的開發人員和各類項目,它幾乎成爲了開源的代名詞和風向標,各大軟件巨頭都紛紛支持,在廣大程序員心目中,也更是精神圖騰通常的存在,坊間戲言它是最大的同性交友平臺。html

github 十週年

我本身對開源瞭解很少,而且能力也有限,一直沒有在這方面有所貢獻,但我確定和你們同樣都是Github的受益者。今天這篇文章一方面是但願藉此爲Github慶生(原本是上週想寫,但一直沒有時間),另外也是由於最近有開源社區的朋友邀請我有機會談一談這些年Office 開發(尤爲指Office 365開發)中對開源平臺的支持,這方面我多多少少知道一點,就斗膽寫出來,也算是向「開源」精神致敬吧,請你們參考。git

本文以及這個系列文章都是託管在Github上面,用markdown這種自由奔放的輕量級標記語言寫成,使用的工具Visual Studio Code也是開源的,歡迎到https://github.com/chenxizhang/office365dev 上面來提issue,歡迎給我star以鼓勵,歡迎fork這個repo而且經過pull request提交你的看法。程序員

微軟的開源行動

微軟這幾年內部進行了深入的轉型,爲外界所熟知的除了有業務方向的變化、組織的調整、股價的飛漲以外,時不時會有一些讓業界「看不懂」的新動做,過去的很少說,今天最新的一個勁爆新聞是微軟也要推出本身定製版本的Linux,不由讓人感慨這世界到底怎麼了。github

但要論起微軟在開源方面的努力,其實在多年前就開始了。2006年先後,微軟發佈了Codeplex網站,當時也是規模不小的開源代碼託管平臺,微軟本身有不少著名的項目,都是在這個平臺上面開放源代碼,包括ASP.NET等,但後來的故事你們也差很少知道,隨着Github的崛起而且成爲事實上的標準,微軟將幾乎全部項目遷移到了Github,而且於2017年12月份正式封存了Codeplex(目前繼續提供只讀查詢,和下載服務)。docker

2014年4月,微軟宣佈成立.NET基金會,同時宣佈釋出.NET編譯器平臺Roslyn,做爲開放源代碼軟件。11月釋出在服務器上運行的.NET Core源代碼,交由.NET基金會管理,鼓勵自由軟件社羣參與將.NET軟件平臺移植到Linux與Mac OS上。基金會由開源社區的大神Miguel領銜,管理着55個正式的項目,很多業界的知名公司也是基金會的重要成員,包括Google,三星等。npm

.net 基金會

值得一提的是,.NET基金會的源代碼也是託管在Github上面的,地址是 https://github.com/dotnetgulp

回到Github上面來,據不徹底統計,目前微軟員工參與Github的人數是全世界最多的,全部項目得到Star總數組織排名全世界第三。下面我有一個不徹底的統計,能夠看出近四年來,微軟在Github上面的貢獻穩步攀升的表現,目前的Repository數量至少有 2054 個。數組

microsoft at github

目前在Github上面,微軟最受歡迎的40個項目以下服務器

top 40

Office 365開發擁抱開源

那麼,咱們來看看Office 365的開發,到底跟開源有什麼關係呢?在Github上面,微軟除了有一個最大的組織(https://github.com/microsoft)外, 還有兩個跟Office 365開發直接相關的組織,他們分別是markdown

  1. SharePoint 開發 :https://github.com/sharepoint
  2. Office 365 開發 :https://github.com/officedev

SharePoint開發十大最受歡迎項目以下所示

sharepoint project

Office 365開發中star數量超過100個16個項目以下

office project

以上是微軟產品組不斷貢獻出來的一些項目。接下來,我還要談一下在Office 365開發的不一樣層面是如何支持開源平臺的。目前來講,咱們通常將Office 365的開發分爲以下幾個領域

  1. 使用Microsoft Graph將你的業務應用與Office 365無縫整合。
  2. 經過Office Add-in的技術擴展你熟悉的Office應用程序。
  3. 經過SharePoint Add-in的技術打造基於SharePoint的業務應用。
  4. 基於Microsoft Teams開發智能機器人或者業務選項卡、鏈接器應用。

Microsoft Graph對於開源平臺的支持

使用 Microsoft Graph API 輕鬆鏈接到可加快工做效率的數據 – 郵件、日曆、聯繫人、文檔、目錄、設備以及在這些數據中發現有價值的信息 —— 不誇張地說,若是說員工和知識是企業的兩大無形資產的話,那麼Microsoft Graph就是一個寶藏,它不只表明着如今,也意味着將來極大的可能。

graph

爲了讓Microsoft Graph可以極大地方便開發者調用,從一開始的設計理念,就是要支持全部的開發平臺 —— 不論是開源的,仍是不開源的。這一點是由Microsoft Graph的工做機制來保證的 —— 它就是一套標準的REST API。

list Messages

這些API都是返回Json數據格式,並且徹底基於OData的規範設計,支持標準的查詢參數。

odata query

除了REST API ,微軟也有針對主流的平臺提供了SDK,能夠加快開發的速度。

sdk

使用Visual Studio Code快速開發Office Add-in

我此前有過一篇文章專門介紹這個主題,這裏簡單地整理幾個要點。

要開發Office Add-in,你如今有多個選擇

  1. 若是你是Visual Studio的資深用戶,你的經驗能夠很好地複用,Visual Studio 2017提供了開箱即用的Office Add-in模板,幾回點擊就能夠建立一個項目,而且能夠一鍵進行調試。
  2. 與此同時,你可使用Visual Studio Code這個開源的編輯器,結合 NodeJS、 Typescript、React、JQuery 等開源平臺和框架來構建你的Office Add-in,在設計你的UI時,你還開源直接使用微軟開源的Office Fabric UI呢。

下面我演示一個基本的步驟

  1. 安裝環境(NodeJS,Visual Studio Code)

  2. 安裝Office Add-in項目生成器 npm install -g yo generator-office

  3. 建立項目 yo office

    create office project

  4. 在Visual Studio Code中編輯和調試項目

    visual studio code

Visual Studio Code的話題也許三天三夜都講不完,但經過上述的介紹,你們能夠看到如今開發Office Add-in是一種全新的體驗,你可使用你最熟悉的編輯器,搭配你最喜歡的框架來工做。

全新的SharePoint Framework,全新的組件式開發體驗

與Office Add-in同樣,我此前也已經有專門的文章介紹和演示了SharePoint Framework的開發體驗,這裏也僅僅是將與開源相關的內容重點整理給你們參考,SharePoint Framework開發的最便捷步驟以下:

  1. 安裝環境(NodeJS,Visual Studio Code)

  2. 安裝模塊 npm install -g yo gulp

  3. 安裝SharePoint Framework 項目模板 npm install -g @microsoft/generator-sharepoint

  4. 建立項目 yo @microsoft/sharepoint 推薦使用React

    sharepoint project

  5. 運行和調試項目 gulp serve

    sharepoint workbench

  6. 在Visual Studio Code中編輯項目(圖略)

  7. 部署項目 gulp bundlegulp package-solution

Microsoft Teams的擴展開發體驗

Microsoft Teams是Office 365中一個重要的創新,它能夠將團隊協做提高到一個新的層次。從另外一方面,開發人員也能夠在這個平臺上面擁有全所未有的能力,例如:

  1. 爲Teams定製智能會話機器人 (Bot),以全新的交互方式爲用戶提供服務
  2. 將業務應用,以選項卡(Tab)的方式集成到Teams的頻道中來
  3. 定製消息擴展(Message Extension)及鏈接器(Connector,Webhook),與外部系統進行鬆耦合式的對接

聽起來有點複雜,但其實作起來真的不難,請參考下面的步驟

  1. 安裝環境(NodeJS,Visual Studio Code)

  2. 安裝Teams項目模板 npm install yo generator-teams -g

  3. 建立Teams項目 yo teams

    yo teams

  4. 在Visual Studio Code中編輯項目

    vscode teams

你能夠經過上面的步驟快速建立一個Microsoft Teams應用,可是要作出來一個真正可用的App,你毫無疑問還須要更多的時間,請參考官方的文檔 https://docs.microsoft.com/zh-cn/microsoftteams/platform/

上面提到的Office Add-ins、SharePoint Add-ins、Teams App開發,你能夠看到針對NodeJS都提供了第一優先的支持,這是實實在在地愛開源啊。但我也必須說明的是,Office Add-insSharePoint Add-insTeams App 的開發支持任何的開發平臺,由於他們說到底就是一個標準的Web應用,只不過尚未像NodeJS這樣上升到工具和模板層面(這個能夠經過開源社區你們努力來實現),因此你可使用ASP.NET CorePythonPhp等進行開發,而且能夠很方便地經過 docker 等一系列技術來實現devops。對,你沒有聽錯,Office 365的開發固然也能夠實現devops

關於如何在docker中運行ASP.NET Core跨平臺應用程序,我此前有一個文檔能夠參考 http://www.cnblogs.com/chenxizhang/p/7148657.html, 本書的範例是用ASP.NET Core編寫,而且部署到了Azure的docker環境中。

結語

本文帶領你們回顧了一下開源及社區的發展、微軟在開源方面的努力,以及具體在Office 365開發的四個領域如何張開雙手擁抱開源。一千我的的心目中有一千個哈姆雷特,但開源的精神應該只有一個,它不只僅是開放源代碼,它是一種開放的心態;同時開源須要更多的人蔘與、去貢獻,只有這樣,咱們的「源」頭活水纔會生機勃發,愈來愈"開"闊。筆者今年的小目標是除了維護以前的一個小的開源項目外,爭取參與到微軟官方的幾個大的Office 365開源項目中去作一點貢獻,也但願看到更多的開發人員參與進來。

相關文章
相關標籤/搜索