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


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

背景

近一年前,我一直希望能自己開發一套輕量的個人筆記系統,需要的功能不多,能夠在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解決方案中的應用。無論如何,我都會盡力把內容介紹完整,還是希望廣大讀者朋友一如既往地支持我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM