CloudNotes:一個雲端個人筆記系統

dax.net發表於2014-12-25

很長時間沒有更新部落格了,一直在忙著工作和生活瑣事,雖然偶爾也有閒暇之時,但短短的幾個小時空閒又未必能夠靜下心來。最近一個多月突發奇想,將自己在近一年前做的一個自己用的雲端個人筆記系統重構美化了一下,增強了一部分功能,現打算開源公佈出來,分享給大家,也會慢慢地向大家介紹整個系統所使用的開發技術和部署環境等細節。

背景

近一年前,我一直希望能自己開發一套輕量的個人筆記系統,需要的功能不多,能夠在Windows桌面環境中儲存自己的一些資訊,並能夠在不同的計算機之間共享這些資訊就行了。如今市面上雲端筆記系統搞得是如火如荼,良莠參差不齊,我又覺得自己也沒必要用個類似Evernote這樣高大上的服務。仗著自己之前有一個領域驅動的開發框架(Apworks),以及一些DDD和.NET的開發經驗,於是就下定決心自己開發一個,順便享受一把微軟MVP的權益,將服務端部署到Windows Azure的虛擬機器中。

經過一番設計和開發,今年5月份的時候整出了第一個可用的版本,當然使用者只有我自己一人,也確實為我個人的工作提供了不少便捷。當然各個方面還是很不完善:沒有使用者註冊功能、沒有回收站和恢復刪除的功能、沒有多語言支援,沒有方便的HTML編輯器用來編輯富文字內容,在效能和穩定性方面也有不少問題。總而言之,我都沒打算將它繼續發展下去,反正自己用用也夠了。

半年時間,工作日都上班,忙上班的事兒,下班和休息日都忙家事,有相當一段時間沒有開啟Visual Studio過單純的編碼生活了。手癢癢總想繼續進行Coding的工作,但又不打算白紙一張從頭幹起攤上一個高大上的專案,於是想起了之前開發的那個輕量的個人筆記系統,打算對它進行重構和改進。

全新的CloudNotes桌面客戶端

經過一個多月閒暇時間的努力,CloudNotes 1.0終於可以跟大家見面了。新的版本不僅在使用者體驗上改進了不少,在功能方面也有所增強。

全新的登入介面

舊版的登入介面盡顯屌絲氣質,新版的登入介面不僅迎合了目前流行的“雲”的元素,而且平展化的圖片和SegoeUI Light字型,與Microsoft的理念遙相呼應,盡顯奢華的內涵。

image

在新版的登入介面中,增加了新使用者註冊的功能,單擊介面左下角的Register(或註冊新賬戶)按鈕,即可完成註冊。當然,你不必擔心自己的洋文水平,也無需對我的洋文水準提出質疑。如果你是使用的中文版作業系統,那麼新版的CloudNotes桌面客戶端就會是中文的,包括整個安裝過程也都是中文的。

全新的主窗體介面

在新版的CloudNotes桌面客戶端中,我採用了一套完整的圖示集。這要感謝我的同事包傑,另一位微軟MVP,為我提供的這套圖示集,可以涵蓋所有的功能圖示(即使在圖示集中找不到,我也會發揮程式設計師的基本技能:Photoshop,來自己建立圖示)。另一個非常重要的改進就是,在新版的主窗體介面中,你可以看到一個非常方便的所見即所得的HTML富文字編輯介面,從此,你的筆記將告別單調的純文字和煩雜的Markdown標記。

image

同樣,CloudNotes會根據你的作業系統語言來決定是顯示中文還是英文。當然,如果你比較悶騷,而且希望能夠裝一下X的話,你可以在設定對話方塊中,將語言從中文改成英文。

全新的功能和改進

在新版本的CloudNotes客戶端中,增加或改進了如下功能:

  • 新增所見即所得的HTML富文字編輯功能,感謝YARTE開源專案提供的原始碼
  • 新增使用者註冊功能
  • 新增筆記的臨時刪除(刪至回收站)和永久刪除功能
  • 新增回收站筆記的恢復,以及清空回收站功能
  • 新增客戶端自動更新功能
  • 新增多語言支援:目前支援英語(美國)和中文(中國)兩種語言
  • 新增客戶端設定對話方塊(目前僅提供介面語言的設定選項)
  • 改進了功能性事件觸發機制和異常處理
  • 修改了N個Bug

今後我將逐步擴充套件服務端API介面,並通過桌面客戶端推送和釋出新安裝包的方式,為CloudNotes開發更多的實用功能。

開始體驗

是否已經等不及了呢?讓我們一起來試試新版的CloudNotes吧!請【單擊此處】下載當前最新的安裝檔案,解壓後,執行安裝程式,即可完成安裝。注意:你的電腦必須是Windows 7及以上版本的Windows作業系統(也支援伺服器版本的Windows系統,但不建議將桌面客戶端安裝到Windows伺服器上),並且需要安裝.NET Framework 4.5.1。如果沒有安裝.NET Framework 4.5.1,也彆著急,安裝程式會自動幫你安裝好的。

在安裝完成後,會在開始選單列出CloudNotes Desktop Client的資料夾:

image

在Windows 8.1的系統中,你將在應用程式列表中找到CloudNotes Desktop Client:

image

單擊圖示開啟CloudNotes桌面客戶端,在登入介面的左下角單擊【註冊新賬戶】按鈕,在彈出的註冊介面中輸入使用者名稱、密碼和電子郵件地址,即可完成註冊:

image

登入伺服器的地址是預設填寫好的,因此使用者無需填寫或更改伺服器地址。成功註冊後,即可登入CloudNotes桌面客戶端,體驗新版本帶來的功能了。

安全性考慮

CloudNotes採用分散式的部署方式,其服務端由ASP.NET Web API 2.0實現,並被部署在Windows Azure的虛擬機器上。桌面客戶端與伺服器之間通過HTTP進行通訊(目前暫未支援HTTPS),通訊內容均已加密,即使是儲存在服務端資料庫中的資料,也都是以加密形式存放的,因此,在一定程度上保證了使用者資料的安全性。然而,世界上沒有絕對安全的事情,因此,將自己的隱私搬遷到時髦的雲端時,需要三思而後行,即便是使用了一個優秀的雲端服務(比如Evernote),個人隱私的保護觀念也需要銘記於心。

開放的原始碼

微軟都開源了,你還在等什麼?CloudNotes的原始碼是完全開放的(除了客戶端/API通訊的加密部分),如果你打算下載原始碼進行研究,那麼你可以直接通過git clone命令來獲取最新的原始碼。

git clone https://github.com/daxnet/CloudNotes

CloudNotes採用Visual Studio 2013 旗艦版完成開發,在最新的Visual Studio 2015 Preview旗艦版中,也能直接開啟並編譯CloudNotes解決方案。需要注意的是,如果你使用的不是旗艦版的Visual Studio 2013,那麼你將無法開啟其中的Design專案(因為它需要旗艦版中Modeling Project專案模板的支援)。如果你使用的是Visual Studio的旗艦版,請確保在開啟CloudNotes解決方案檔案之前,已經為Visual Studio安裝了ApworksEntityProfile擴充套件,否則你將無法正確開啟Design專案中的類圖模型。

  • 如果你是使用的Visual Studio 2013旗艦版,請單擊此處下載ApworksEntityProfile擴充套件
  • 如果你是使用的Visual Studio 2015 Preview旗艦版,請單擊此處下載ApworksEntityProfile擴充套件

下載完成後,雙擊.vsix檔案,即可將該擴充套件安裝到Visual Studio中。之後,你就可以正常開啟CloudNotes解決方案了。

當然,如果你使用的不是Visual Studio旗艦版,你仍然可以正確編譯CloudNotes解決方案,但是你不能正確裝載Design專案,不過這並不影響整個解決方案的編譯和執行。我將在後續的文章中介紹這部分內容。

由於Visual Studio 2015和C# 6.0目前都是預覽版,為了兼顧更多的Visual Studio 2013使用者,我沒有在程式碼中使用最新的C#特性,還是保持原來的語法結構。

後續的版本更新

將來我會以持續部署的方式,更新服務端Web API應用,同時會通過桌面客戶端的自動更新功能,向已安裝CloudNotes桌面客戶端的使用者推送最新更新包;同時我還會向新使用者提供各個版本的完整安裝程式。我可能還會與微軟MVP包傑同學合作,一起推出面向Windows 8.1、Windows Phone 8/8.1的客戶端程式。

技術文章

我又一次地打算寫一個系列文章,來介紹CloudNotes案例的實現技術細節。以前我介紹過一個簡單的面向領域驅動的購物網站Byteart Retail,那個案例包含了所有的原始碼實現。與Byteart Retail不同的是,CloudNotes直接使用了Apworks框架,因此如果你希望深入地瞭解某些元件的實現細節,你或許需要移步到Apworks的程式碼庫進行檢索查詢。我也曾打算寫一個系列文章來詳細介紹Apworks框架的開發和使用,但因為內容太多,加上上面提到的工作和生活原因,感到全方位地介紹這麼多內容也顯得吃力,感到力不從心。所以在更新了三篇文章後,也長時間沒有更新了,希望能夠得到廣大讀者朋友的諒解。對於CloudNotes這個主題,我還是希望能夠儘自己的能力對其進行完整的介紹,但我措辭和行文都會盡顯隨意,以便緩和技術文章撰寫時的緊張氣氛。大致想了想,CloudNotes系列文章會有以下幾篇:

  • 領域建模篇
  • Web API篇
  • 資料儲存篇
  • 桌面客戶端篇

系列文章的組織結構我還沒考慮清楚,或許會按照上面的順序依次介紹,也可能自己想到哪裡就介紹到哪裡。在介紹的過程中,會穿插介紹Visual Studio 2013/2015的一些特殊功能,以及Apworks在CloudNotes解決方案中的應用。無論如何,我都會盡力把內容介紹完整,還是希望廣大讀者朋友一如既往地支援我。

相關文章