亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Stepping.js——兩步完成前后端分離架構(gòu)設(shè)計

NeverSayNever / 788人閱讀

摘要:事件風(fēng)暴事件風(fēng)暴就是把所有的關(guān)鍵參與者都召集到一個很寬敞的屋子里來開會,并且使用便利貼來描述系統(tǒng)中發(fā)生的事情。一張桔黃色的便利貼代表一個領(lǐng)域事件,在上面用一句過去時的話描述曾經(jīng)發(fā)生過什么事情,格式一般是已。

一周前,參加了公司的一個架構(gòu)設(shè)計與建模的工作坊——『事件風(fēng)暴』。從某種意義上來說,這是一個關(guān)于架構(gòu)設(shè)計與軟件建模的工作坊。于是便閃現(xiàn)了一個靈感,便有了 Stepping.js。

當(dāng)我們結(jié)束事件風(fēng)暴(Event Stroming)的時候,我們需要拍照,又或者是其他手段來記錄下相關(guān)的內(nèi)容。因此,整理這些文檔又不是一個的容易的事。而事實上,我們只需要一個 DSL(領(lǐng)域特定語言),我們就可以直接將這個文檔轉(zhuǎn)換為圖片,還有文檔等等的內(nèi)容。

因此,我寫了一個名為 Stepping 的工具,來簡化這方面的工作。

Stepping

步驟一:安裝 Stepping

為了使用 Stepping,我們需要先安裝 Stepping,可以能過 yarn 或者 npm 來安裝:yarn global add stepping

步驟二:設(shè)計領(lǐng)域模型

除此,我們還需要設(shè)計好系統(tǒng)相關(guān)的領(lǐng)域模型,如:

再以 DSL 的形式來描述這個模型:

domain: 庫存子域
  aggregate: 庫存
    event: 庫存已增加
    event: 庫存已恢復(fù)
    event: 庫存已扣減
    event: 庫存已鎖定
    command: 編輯庫存

  aggregate: 商品
    event: 商品已創(chuàng)建
    command: 添加商品

保存這個文件為phodal.ffffd,然后執(zhí)行stepping -i phodal.ffffd。就可以得到一個 stepping.svg 的文件,這個 SVG 文件便能得到上面的領(lǐng)域模型。

同時,如果你愿意的話,你還可以在這個 DDD 文件里寫上相關(guān)的聚合的 Model:

aggregate-detail: 商品
  model: product
    field: 
      id: int
      name: string
      number: string
      manufacturers: string

再執(zhí)行下 stepping -i phodal.ffffd,就可以得到一份前后端分離的示例 API 接口,即:

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 0,
            "name": "name",
            "number": 0,
            "manufacturers": "manufacturers"
        }
    ]
}

結(jié)合一下 moco 或者 pretender,就可以直接變成一個 Mock 服務(wù)器。

在未來,我們還將結(jié)合這個 Model 來與 Django 做集成——只需要寫好設(shè)計稿的 DSL,就可以生成相關(guān)的文檔。

末了,讓我們了解一下什么是領(lǐng)域風(fēng)暴。

事件風(fēng)暴

事件風(fēng)暴就是把所有的關(guān)鍵參與者都召集到一個很寬敞的屋子里來開會,并且使用便利貼來描述系統(tǒng)中發(fā)生的事情。

一張桔黃色的便利貼代表一個領(lǐng)域事件,在上面用一句過去時的話描述曾經(jīng)發(fā)生過什么事情,格式一般是:xx 已 xx。于是,我們需要整理系統(tǒng)相關(guān)的所有事件,也因此需要業(yè)務(wù)與開發(fā)人員共同進(jìn)行風(fēng)暴。如針對一個訂單,會有這么一些相關(guān)的事件:

訂單已創(chuàng)建

訂單已支付

訂單已投訴

訂單已撤銷

便會產(chǎn)生相關(guān)的便利貼:

再按事件發(fā)生的時間軸,來對這些事件發(fā)生的順序進(jìn)行排序:

緊接著,我們需要結(jié)合軟件的用戶的相關(guān)操作,寫著與這些操作相關(guān)的命令。然后,結(jié)合這些命令事件。如訂單相關(guān)的命令就有:

提交訂單,可以觸發(fā)事件『訂單已創(chuàng)建』

提交投訴,可以觸發(fā)事件『訂單已投訴』

等等

完成這個之后, 我們就有了系統(tǒng)相關(guān)的所有事件與命令

換句話來說,這些相關(guān)的事件與命令就是我們編寫細(xì)節(jié)代碼時,需要完成的功能。最后,完成相關(guān)的聚合,我們就可以得到一份完整的模型:

依據(jù)這個模型,我們可以輕松地做出微服務(wù)設(shè)計。

歡迎試用,并在 GitHub 上提出建議:https://github.com/phodal/ste...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/82298.html

相關(guān)文章

  • 前后分離時代,Java 程序員的變與不變!

    摘要:前后端分離的開發(fā)方式在最近幾年突然火起來,松哥認(rèn)為有兩方面的原因前端的發(fā)展。不變其實除了前后端交互方式發(fā)生變化之外,其他的地方都是不變的。 事情的起因是這樣的,有個星球的小伙伴向邀請松哥在知乎上回答一個問題,原題是: 前后端分離的時代,Java后臺程序員的技術(shù)建議? 松哥認(rèn)真看了下這個問題,感覺對于初次接觸前后端分離的小伙伴來說,可能都會存在這樣的疑問,于是決定通過這篇文章和大家聊一...

    SolomonXie 評論0 收藏0
  • 前后分離思考

    摘要:前后端分離的項目開發(fā)策略已經(jīng)不是什么新鮮東西了,網(wǎng)上介紹這方面的文章非常多。我自己是在年的時候接觸到的,對這種開發(fā)策略一直愛不釋手,不管新老項目都會首先用前后端分離的思維先去思考一番。 前后端分離的項目開發(fā)策略已經(jīng)不是什么新鮮東西了,網(wǎng)上介紹這方面的文章非常多。我自己是在14年的時候接觸到的,對這種開發(fā)策略一直愛不釋手,不管新老項目都會首先用前后端分離的思維先去思考一番。從14年到現(xiàn)在...

    余學(xué)文 評論0 收藏0
  • 前后分離的總結(jié)

    摘要:如何去解決這些問題前后端分離大部分的互聯(lián)網(wǎng)公司都分成了前端團隊和后端團隊。方案一采用架構(gòu)業(yè)界很多公司會采用,單頁應(yīng)用的架構(gòu),這種架構(gòu)是天然的前后端分離的。方案二淘寶的大前端方案中途島上圖是淘寶基于的前后端分離分層,以及的職責(zé)范圍。 我們遇到了什么問題? 1.前端無法調(diào)試后端未完成的 API:如果后端同學(xué)還沒有完成 API 開發(fā),那么前端同學(xué)就不能對這個 API 進(jìn)行開發(fā)。之前我們都是在...

    enrecul101 評論0 收藏0
  • 前后分離模式

    摘要:采用前后端分離模式可以減后臺負(fù)擔(dān),加快研發(fā)效率,當(dāng)然,前提是前端能做好的話。還是基礎(chǔ)不夠?qū)е碌暮蠖耸欠耧L(fēng)格很多公司采用了前后端分離模式后,后端仍然采用以往的傳統(tǒng)風(fēng)格,這是不合理的,風(fēng)格的應(yīng)該是前后端分離的最佳實踐。 showImg(https://segmentfault.com/img/bVFC8f?w=690&h=360);早期的web開發(fā)是不分前端后端的?;ヂ?lián)網(wǎng)進(jìn)入Web2.0時...

    fobnn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<