Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# (Paperback)

Scott Wlaschin

  • 出版商: Pragmatic Bookshelf
  • 出版日期: 2018-03-06
  • 定價: $1,840
  • 售價: 9.5$1,748
  • 貴賓價: 8.8$1,619
  • 語言: 英文
  • 頁數: 312
  • 裝訂: Paperback
  • ISBN: 1680502549
  • ISBN-13: 9781680502541
  • 相關分類: F#
  • 立即出貨 (庫存 < 4)



You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality.

Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained.

Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have "compile-time unit tests," and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API.

Solve real problems by focusing on real-world requirements for your software.

What You Need:

The code in this book is designed to be run interactively on Windows, Mac and Linux.You will need a recent version of F# (4.0 or greater), and the appropriate .NET runtime for your platform.Full installation instructions for all platforms at


你想要提高客戶滿意度、加快開發週期並減少浪費的工作。結合領域驅動設計(DDD)和函數式編程是一個創新的組合,可以幫助你實現這些目標。在這本務實、踏實的指南中,你將看到如何應用函數式編程的核心原則,以優雅且簡潔的方式建模真實需求的軟體設計,通常比面向對象的方法更為出色。使用開源的 F# 函數式語言和熟悉的商業領域的實際範例,你將學習如何應用這些技術來構建以業務為中心、靈活且高質量的軟體。


使用 F# 類型系統準確地建模複雜領域,創建可編譯的代碼,同時也是可讀的文檔,確保代碼和設計永遠保持同步。在設計中編碼業務規則,以便擁有“編譯時單元測試”,通過使非法狀態無法表示,消除許多潛在的錯誤。將一系列小型、可測試的函數組合成完整的用例,並將這些個別場景組合成大規模的設計。發現為什麼函數式編程和領域驅動設計的結合自然地導致服務導向和六邊形架構。最後,創建一個與傳統數據庫、NoSQL 和事件存儲兼容的函數式領域模型,並通過網站或 API 安全地公開你的領域。



本書中的代碼設計用於在 Windows、Mac 和 Linux 上進行互動運行。你需要最新版本的 F#(4.0 或更高版本)以及適用於你的平台的 .NET 運行時。所有平台的完整安裝說明請參考。