1. 程式人生 > >使用 MarkDown & DocFX 升級 Rafy 幫助文檔

使用 MarkDown & DocFX 升級 Rafy 幫助文檔

org 屬性 port orm studio concept 插件化 let div

技術分享圖片

最近使用 DocFX 對 Rafy 框架的幫助文檔進行了升級。

SandCastle

之前 Rafy 框架的幫助文檔,是使用 SandCastle 來編寫的(https://github.com/EWSoftware/SHFB)。如下圖:

技術分享圖片

其文檔中的每一個文檔都是一個 .aml 文件。aml 文件是一種自定義格式的 xml 文件。示例如下:

<?xml version="1.0" encoding="utf-8"?>
<topic id="69b641cf-d1fe-4f06-877f-b479d268a3fc" revisionNumber="1">
    <developerConceptualDocument
xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> <introduction> <para>Rafy 幫助文檔</para> <para>文檔版本號:0.5.544</para> </introduction> <section address="intro">
<title>簡介</title> <content> <para>Rafy 是一個面向企業級開發的插件化快速開發框架。前生為 OEA(OpenExpressApp),09 年 10 月發布 1.0 版本,12 年 4 月發布了 2.0。其目標主要專註於:</para> <list class="bullet"> <listItem> <para>
快速開發:</para> <para>領域驅動設計、界面自動生成、數據庫自動生成與升級、易用的業務邏輯編寫框架。</para> </listItem> <listItem> <para>產品線工程:</para> <para>插件化業務模塊積累(內置一個多個現有的插件模塊)、客戶化二次開發、實施配置平臺。</para> </listItem> <listItem> <para>一套代碼,可同時生成並運行 C/S、單機版、B/S 三種應用程序。</para> <para>C/S版本 與 單機版 代碼重用率 100%。</para> <para>C/S版本 與 B/S版本 重用服務端代碼(完全重用服務層以下代碼。結合界面生成,只需要編寫少量的界面層控制代碼即可。)。</para> </listItem> <listItem> <para>與 Visual Studio 集成</para> <para>Rafy 的一個重要作用就是為了提升開發效率,所以我們為 VisualStudio 開發了 RafySDK 插件,其中包含項目模板、代碼生成、領域建模等功能。一體化的開發環境,可以更加快速地開發 Rafy 應用程序。</para> </listItem> </list> </content> </section> <section address="includes"> <title>組成部分</title> <content> <para>它包含了以下組成部分:</para> <list class="bullet"> <listItem> <para>Rafy 領域實體框架</para> <para> Rafy <link xlink:href="c8e6cd25-c674-4cd1-9880-816d11f58eb8" /> 是一個 ORM 框架,可脫離 Rafy 框架其它組件單獨運行,為開發人員提供了極高的開發效率、強大的功能。同時集領域驅動設計、面向服務架構、模型驅動架構、產品線工程方法於一身,是 Rafy 框架中其它組件(如界面生成等高級功能)的基礎。 </para> <para>包含以下程序集:</para> <list class="bullet"> <listItem> <para>Rafy.dll</para> </listItem> </list> </listItem> <listItem> <para>WPF 客戶端生成框架(暫未發布)</para> <para>包含以下程序集:</para> <list class="bullet"> <listItem> <para>Rafy.WPF.Controls.dll</para> </listItem> <listItem> <para>Rafy.WPF.dll</para> </listItem> </list> </listItem> <listItem> <para>Web:B/S 界面生成框架(暫未發布)</para> <para>包含以下程序集:</para> <list class="bullet"> <listItem> <para>Rafy.Web.dll</para> </listItem> </list> </listItem> <listItem> <para>報表(暫未發布)</para> <para>...</para> </listItem> <listItem> <para>自動化測試(暫未發布)</para> <para>...</para> </listItem> </list> </content> </section> <section address="important"> <title>框架發布記錄</title> <content> <para> 詳見:<externalLink> <linkText>Rafy(原OEA)領域實體框架發布主頁</linkText> <linkUri>http://www.cnblogs.com/zgynhqf/p/3356692.html</linkUri> </externalLink> </para> </content> </section> <section address="optionalAddress"> <title>輔助說明</title> <content> <para> Rafy = ProductLine + MDA + Plugins + Rafy.Domain + Rafy.UI(AutoUI) </para> <para> Rafy.Domain = DDD + ORM + Distributed + SOA </para> <para> Rafy.Domain DDD = Controller + Repository + 可擴展屬性的Entity </para> <para> Rafy.Domain ORM = 可擴展屬性的Entity + 易用的Linq + SqlTree + 高性能Mapping + AutoDB + 多數據庫支持 </para> </content> </section> <relatedTopics> </relatedTopics> </developerConceptualDocument> </topic>

使用 xml 來編寫文檔的好處在於格式比較規範。這樣,SandCastle 可以將其生成許多標準的文檔格式:

技術分享圖片

生成後的網站,如下圖所示:

技術分享圖片

SandCastle 的開源地址是:https://github.com/EWSoftware/SHFB。

關於 SandCastle 的具體使用方法,可以見:《文檔API生成神器SandCastle使用心得》。

DocFX

最近兩年,MS 自家的幫助文檔大變樣,例如 MSDN:《C# Guide》。

其使用的就是最新的文檔編寫、生成工具:DocFX。DocFX 的網址:http://dotnet.github.io/docfx/。

使用幫助,可以看看這篇:《docfx 做一個和微軟一樣的文檔平臺》

簡單地說,docFX 支持使用 markdown 來編寫文檔。並最終生成對應的網站。

Markdown 是一個簡單標記語言。目前大多數的文檔編寫都流行使用這個語言。例如 Github 中每個項目的 Wiki 都是使用 markdown 來編寫。另外,我個人在博客園編寫的這些的博客,目前也都是使用 markdown 來直接編寫。易用、格式明顯、編寫效率高、所見即所得、對代碼的兼容性好。

例如,上面示例中的文章,轉換後如下:

## 簡介
Rafy 是一個面向企業級開發的插件化快速開發框架。前生為 OEA(OpenExpressApp),09 年 10 月發布 1.0 版本,12 年 4 月發布了 2.0。其目標主要專註於:

 - 快速開發:

   DDD、界面自動生成、數據庫自動生成與升級、易用的業務邏輯編寫框架。


 - 產品線工程:

   插件化業務模塊積累(內置一個權限控制插件模塊)、客戶化二次開發、實施配置平臺。


 - 一套代碼,可同時生成並運行 C/S、單機版、B/S 三種應用程序。

   C/S版本 與 單機版 代碼重用率 100%。

   C/S版本 與 B/S版本 重用服務端代碼(完全重用服務層以下代碼。結合界面生成,只需要編寫少量的界面層控制代碼即可。)。

 - 與 Visual Studio 集成

   Rafy 的一個重要作用就是為了提升開發效率,所以我們為 VisualStudio 開發了 RafySDK 插件,其中包含項目模板、代碼生成、領域建模等功能。一體化的開發環境,可以更加快速地開發 Rafy 應用程序。

##組成部分

它包含了以下組成部分:

1. 領域實體框架

  [領域實體框架](領域實體框架.html)是一個 ORM 框架,可脫離 Rafy 框架其它組件單獨運行,為開發人員提供了極高的開發效率、強大的功能。同時集領域驅動設計、面向服務架構、模型驅動架構、產品線工程方法於一身,是 Rafy 框架中其它組件(如界面生成等高級功能)的基礎。

  包含以下程序集:

    * Rafy.dll


2. WPF 客戶端生成框架(暫未發布)

   包含以下程序集:

     * Rafy.WPF.Controls.dll
     * Rafy.WPF.dll


3. Web:B/S 界面生成框架(暫未發布)

   包含以下程序集:
   
    - Rafy.Web.dll

4. 報表(暫未發布)
    ...

5. 自動化測試(暫未發布)
    ...

##框架發布記錄
詳見:

[Rafy(原OEA)領域實體框架發布主頁](http://www.cnblogs.com/zgynhqf/p/3356692.html)

##輔助說明
Rafy = ProductLine + MDA + Plugins + Rafy.Domain + Rafy.UI(AutoUI)

Rafy.Domain = DDD + ORM + Distributed + SOA

Rafy.Domain DDD = Controller + Repository + 可擴展屬性的Entity

Rafy.Domain ORM = 可擴展屬性的Entity + 易用的Linq + SqlTree + 高性能Mapping + AutoDB + 多數據庫支持

另外,由於文檔較多,所以我們編寫了一個小工具,將整個 Rafy 的所有幫助文檔,從 xml 格式文件轉換為 markdown 語法。然後再通過 docFX 來生成整個網站。

生成後最新的文檔,見:《Rafy 框架簡介》,使用的是 DocFX 的默認的皮膚,如下圖:

技術分享圖片

這次升級後,以後再編寫文檔就比較簡單了。直接使用 markdown 就可以快速編寫了。然後使用 DocFX 一鍵生成 WebSite,直接上傳到 Github Pages 就行了。

當前文檔的源碼也上傳到 Github 了:https://github.com/zgynhqf/Rafy/tree/master/Rafy/_Items/Documentation,有興趣的朋友可以看看。

使用 MarkDown & DocFX 升級 Rafy 幫助文檔