亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Apworks到底是什么?

系統(tǒng) 1724 0

Apworks到底是什么?

簡介

Apworks是一款基于Microsoft .NET的面向領域驅(qū)動的企業(yè)級應用程序開發(fā)框架,它適用于以領域模型為核心的企業(yè)級系統(tǒng)的開發(fā)和集成。Apworks不僅能夠很好地支持經(jīng)典的分層架構(gòu),而且還能支持基于事件驅(qū)動的命令查詢職責分離(Command-Query Responsibility Segregation, CQRS)架構(gòu)。

隨著軟件系統(tǒng)日趨復雜,構(gòu)建一套可用的、穩(wěn)定的、可擴展的、安全的以及高效的系統(tǒng)變得越來越困難。為了解決這樣的困難,人們在多年的軟件開發(fā)過程中積累了不少經(jīng)驗,由其是在大型復雜軟件系統(tǒng)方面,面向?qū)ο蟮姆治龊驮O計(OOAD)占據(jù)著主導地位。由此,Eric Evans將這些經(jīng)驗整理成文,于2004年出版了《領域驅(qū)動設計:軟件核心復雜性應對之道》一書,世界頂級軟件架構(gòu)大師Martin Fowler也參與了該書的編撰工作。

在書中,Eric Evans提出了軟件的設計與架構(gòu)應當以領域為核心,而不是數(shù)據(jù)庫或者其它的軟件基礎結(jié)構(gòu),因為領域描述了軟件所需解決的實際問題。在設計和架構(gòu)階段,軟件開發(fā)人員與領域?qū)<冶仨毥⒁惶子糜诮涣鞯摹巴ㄓ谜Z言”,并基于這套語言來共同建立領域模型。整個軟件的設計與架構(gòu)就需要以這個領域模型為中心,這樣做不僅能夠讓開發(fā)團隊更好地理解業(yè)務需求,減少因需求理解和溝通引起的偏差,而且還能使核心部件獨立于具體的軟件技術實現(xiàn),為今后的新技術革新和擴展做好充分準備。

領域驅(qū)動設計并不是一種特定的模式,也不是一種具體的方法論,它所涵蓋的范圍相當廣泛,比如,面向?qū)ο蠓治雠c設計的基本原則、測試驅(qū)動開發(fā)、行為驅(qū)動開發(fā)、持續(xù)集成、敏捷開發(fā)、防腐層、界定上下文、分層體系結(jié)構(gòu)模式、讀寫分離體系結(jié)構(gòu)模式、事件驅(qū)動體系結(jié)構(gòu)模式等等,都屬于領域驅(qū)動設計的討論范疇。總而言之,所有以領域模型為核心的開發(fā)方法、過程與技術,均可認為是領域驅(qū)動的。

為了能讓這些開發(fā)技術、開發(fā)方法、以及軟件設計原則與模式能夠很好地運用到實際項目中,一些面向領域驅(qū)動設計的開發(fā)框架應運而生,比如Java陣營有非常知名的AxonFramwork和JdonFramework。這些框架對領域驅(qū)動設計中所涉及的基本概念和模式都有著很好的支持,這不僅讓開發(fā)人員能夠很方便地開發(fā)出專業(yè)的、面向領域驅(qū)動的軟件系統(tǒng),使得軟件系統(tǒng)能夠更好地滿足客戶需求,解決實際的業(yè)務問題,而且在安全性、高效性、可擴展性和可維護性方面為軟件系統(tǒng)提供保障,大大提高了軟件產(chǎn)品的質(zhì)量。

由于軟件需求具有多樣性和可變性的特點,往往沒法在項目的前期將所有需求完全確定下來,因此,對于日趨復雜的軟件系統(tǒng)而言,傳統(tǒng)的瀑布開發(fā)模型遇到了一定的挑戰(zhàn),而基于迭代的敏捷開發(fā)模式相對而言更能有效地解決需求的多樣性和可變性所帶來的潛在風險。由于迭代的引入,客戶能夠直接參與到開發(fā)過程中,并在迭代中為開發(fā)團隊提供必要的信息,以保證軟件系統(tǒng)本身不會與客戶需求相差太遠。每一次迭代都會實現(xiàn)一部分客戶需求,因此,經(jīng)過多次迭代,程序代碼也會迭代地加入到代碼庫中。為了確保質(zhì)量,保證新加入的代碼不會影響上一次迭代中所產(chǎn)生的代碼,開發(fā)團隊往往采用持續(xù)集成的方式,將代碼整合到代碼庫的主分支上。

持續(xù)集成也涵蓋了很多技術手段,比如行為驅(qū)動開發(fā)(BDD)、測試驅(qū)動開發(fā)(TDD)、自動化測試以及自動化部署等等。而面向?qū)ο蠓治雠c設計的原則,又對敏捷開發(fā)實踐提供了很好的技術支撐,相信讀過Robert C. Martin所著的《Agile Principals, Patterns and Practices in C#》一書的讀者,對這部分會有很深的感觸。

由此可見,面向領域驅(qū)動設計的開發(fā)框架,對敏捷項目的實踐也有著很大的幫助,主要表現(xiàn)在以下幾個方面:

  • 框架在技術上為軟件系統(tǒng)提供了完整的模式實踐,例如:通過使用AxonFramework或者JdonFramework,可以很方便地實現(xiàn)基于CQRS或者事件驅(qū)動的體系結(jié)構(gòu)
  • 框架為團隊提供了合理可行的軟件開發(fā)過程模式,例如:利用框架可以很方便快捷地搭建軟件系統(tǒng)的解決方案,同時也決定了團隊的開發(fā)過程和合作方式
  • 框架的應用大大提高了團隊的開發(fā)效率,團隊只需要關注與領域相關的業(yè)務實現(xiàn),而無需關注具體的技術實現(xiàn)
  • 框架的應用大大降低了出現(xiàn)缺陷(Bug)的幾率,因為大多數(shù)支撐業(yè)務系統(tǒng)的代碼都經(jīng)過了嚴格的測試和實戰(zhàn)的考驗
  • 框架的應用還為軟件系統(tǒng)的整合與集成帶來了便捷

Apworks就是一套在.NET下支持面向領域驅(qū)動的軟件系統(tǒng)開發(fā)框架,它具有以下這些特點:

  • 基于NuGet Package Manager提供方便快捷的類庫包發(fā)布方式,開發(fā)人員無需關心程序集之間的版本依賴關系
  • 提供對領域驅(qū)動設計中基本元素的封裝。比如:Apworks框架對實體、聚合根、領域事件、領域倉儲、事件存儲(Event Store)等概念進行了有效的封裝和實現(xiàn)
  • 提供對現(xiàn)有流行框架的支持。比如:Apworks能夠很好地支持AutoMapper、Nancy Framework、ASP.NET MVC以及ASP.NET Web API的使用和開發(fā)
  • 提供多樣化的配置方式。開發(fā)人員可以在web/app.config中對Apworks框架進行配置,也可以直接在程序代碼中構(gòu)建配置對象,對框架進行配置。流暢接口(Fluent Interface)的引入,更是為Apworks框架的配置提供了便捷直觀的編程體驗
  • 提供基于Microsoft Patterns & Practices Unity的IoC容器和服務定位器(Service Locator)的實現(xiàn)。不僅如此,開發(fā)人員還能根據(jù)項目的實際需求對IoC容器和服務定位器進行擴展,使其能夠支持更多的Dependency Injection(DI)框架。比如可以很方便地擴展Apworks,使其能夠支持基于StructureMap、Ninject等流行的DI框架
  • 提供基于Entity Framework和NHibernate兩種流行ORM的倉儲實現(xiàn)。在應用程序中使用這兩種倉儲,也就基本涵蓋了所有面向關系型數(shù)據(jù)庫的對象持久化方案。Apworks還提供基于MongoDB的NoSQL對象持久化方案,以滿足NoSQL解決方案的需求。不僅如此,開發(fā)人員還能根據(jù)項目的實際需求,對倉儲實現(xiàn)進行擴展,以支持更多種類的對象持久化機制
  • 提供包括Event Aggregator、MSMQ以及Direct Local Bus的事件和消息派發(fā)機制。開發(fā)人員能夠很方便地將領域事件派發(fā)到消息總線上,為應用系統(tǒng)的集成提供便捷。不僅如此,開發(fā)人員還能根據(jù)項目的實際需求,對消息派發(fā)機制進行擴展,甚至可以結(jié)合NServiceBus以及Microsoft Biztalk Server等企業(yè)級服務總線,實現(xiàn)復雜的消息路由和處理
  • 為CQRS架構(gòu)提供了靈活的、基于SQL Server以及MySQL的事件存儲(Event Store),不僅如此,開發(fā)人員還能根據(jù)項目的實際需求,對事件存儲的實現(xiàn)進行擴展,以支持更多種類的存儲機制
  • 為CQRS架構(gòu)提供了多樣化的領域倉儲的實現(xiàn)。開發(fā)人員可以根據(jù)項目的實際需要來選擇或者擴展領域倉儲,比如可以選擇僅將事件快照作為事件存儲的倉儲實現(xiàn),來屏蔽事件回溯的功能,從而達到節(jié)省空間的目的
  • 為CQRS架構(gòu)提供了可擴展的事件快照機制。開發(fā)人員可以通過簡單的配置來決定是否使用事件快照,并定制事件快照的屬性和行為
  • 提供了對AOP攔截的支持:通過引入Castle Dynamic Proxy,Apworks框架可以很方便地實現(xiàn)面向接口方法的AOP攔截;開發(fā)人員還可以根據(jù)項目的實際需求,選用由DI框架支持的AOP攔截方案,比如,可以選用Unity Policy Injection Extension作為AOP攔截的解決方案

Apworks為軟件系統(tǒng)的設計和開發(fā)帶來了真正的穩(wěn)定性、便捷性和靈活性,本文將對Apworks的各個方面進行展示,以向開發(fā)人員介紹框架的使用方式。

演示案例

Byteart Retail

在我之前的博客文章中,有一個對Byteart Retail案例進行介紹的系列文章。Byteart Retail就是遵循的面向領域驅(qū)動的軟件架構(gòu)模式(經(jīng)典分層架構(gòu))。在Byteart Retail案例推出之后,受到了廣大網(wǎng)友的關注,也有網(wǎng)友將Byteart Retail案例與Apworks框架進行整合,以演示Apworks框架對面向領域驅(qū)動的企業(yè)級軟件設計和架構(gòu)的支持。由Apworks支持的Byteart Retail的案例源代碼地址是: https://github.com/daxnet/ByteartRetail_Apworks 。需要了解Byteart Retail案例詳細信息的讀者,請參見: https://github.com/daxnet/ByteartRetail 。在此對在線上和線下社區(qū)中為Apworks提供支持的網(wǎng)友表示衷心感謝!

Note Service

在Apworks上一個版本發(fā)布的時候,我在博客中給出了一個使用Apworks開發(fā)的Web API案例,文章題目是: 《在ASP.NET MVC Web API中使用Apworks開發(fā)第一個HTTP服務》 。在文中介紹了配置和使用。在本系列的后續(xù)文章中,我將詳細介紹Apworks框架的具體應用。

Note Service擴展:對NancyFx的支持

在此對網(wǎng)友 止.觀. 表示衷心的感謝。該案例詳細講解了Apworks在NancyFx中的應用。原文標題是: 《擴展NoteService,支持NancyFx》

在下一篇文章中,我將介紹Apworks框架的下載、編譯和引用。

?
?
分類:? Apworks

Apworks到底是什么?


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品站| xxx国产老太婆视频 xxx毛片 | 色国产在线视频一区 | 国产日韩网站 | 色婷婷精品免费视频 | 两性影院| 亚洲成人日韩 | 动漫三级在线观看 | 九九免费观看全部免费视频 | 狠狠躁夜夜躁人人爽天天天天 | 欧美日韩在线视频一区 | 国产成人精品亚洲一区 | 一级a做爰片欧欧美毛片4 | 国产一区视频在线 | 国产高清不卡视频 | 日本在线观看中文字幕 | 中文字幕日本一区久久 | 国产精品久久亚洲不卡4k岛国 | 337p日本大胆欧洲色噜噜高清 | 国产一区二区三区四区在线 | 99视频在线国产 | 四虎影 | 变态捡到女婴h养成调教 | 成人9久久国产精品品 | 久久国产精品最新一区 | 亚洲国产成人精品91久久久 | 亚洲va国产日韩欧美精品色婷婷 | 欧美性猛交xxxx免费看久久 | 国内精品视频一区二区八戒 | 日本激情视频一区二区三区 | 又粗又大的机巴好爽7 | 99九九精品免费视频观看 | 国产午夜影院 | 好爽毛片一区二区三区四区 | 一a级毛片| 国产亚洲精 | 亚洲精品久久久久久婷婷 | 欧美在线性爱视频 | 精品国产90后在线观看 | 黄色男人的天堂 | 色尼玛亚洲综合 |