Asp.net

Asp.net mvc 中應該有服務層嗎?

  • February 25, 2010

控制器和儲存庫之間是否應該在 Asp.net MVC 中存在服務層?由於儲存庫僅用於數據訪問。一些業務邏輯被洩露到 Controller 中。如果經典的 Asp.Net 客戶端使用相同的操作,這可能會產生問題,因為我們必須在 Controller 中複製邏輯。

如果您嚴格按照領域驅動設計,您會發現有3 種服務類型(您不喜歡超載的術語嗎?)。

  • 域服務:封裝不自然地適合域對象的業務邏輯,並且不是典型的 CRUD 操作 - 那些將屬於Repository
  • 應用程序服務:由外部消費者用來與您的系統對話(想想Web 服務)。如果消費者需要訪問 CRUD 操作,它們將在此處公開(但由適當的Repository處理)
  • 基礎設施服務:用於抽象技術問題(例如 MSMQ、電子郵件提供商等)

聽起來您需要域服務來封裝/共享您的業務邏輯。

希望有幫助!

TBH,我在這方面已經走了兩條路。我目前的觀點是,儲存庫一項服務,它只是一個服務,恰好負責為域聚合根處理 CRUD 操作。現在,如果您的“儲存庫”直接與您的實體 1:1 映射(因此,不是儲存庫,而是 DAO),那麼我可以看到這個論點。但一般來說,我會根據需要添加抽象層,但直到證明給定應用程序需要它們。否則,你會過度設計。

引用自:https://stackoverflow.com/questions/2326580