2009-09-17 18 views
45

リポジトリとサービスの違いは何ですか?私はそれを把握していないようです。リポジトリとサービスの違いは?

私はデータアクセス層を介してデータアクセスを話しています。通常、linqをSQLにします。

私は非常に多くの場合、単純なCRUDメソッドを持つリポジトリと、より多くのビジネス固有のメソッドを持つサービスを参照しています。

例としてはthisブログポストを取ることができます。一番下のインターフェイス(画像)を見ると、彼は2つのリポジトリと2つのサービスを持っています。誰が何をどこに置くべきかを知っていますか?

私が言ったように、リポジトリはCRUDのような操作やサービスの方がよりビジネス指向のようです。

おかげ

+0

あなたは、どんな状況で?ほとんどの言葉と同様に、これらの言葉が使われている文脈は意味を定義するのに役立ちます。 – David

+2

注:Webサービスなどについては言及していません。私は、データレイヤーを通じたデータアクセスについて話しています。 – alexn

答えて

45

リポジトリは、基本的にコレクションスタイルのセマンティクスを使用しています永続ためのファサードです(Add、Update、Remove)を使用してデータ/オブジェクトへのアクセスを提供します。これは、データ/オブジェクトを残りのアプリケーションから保存する方法を切り離す方法です。

サービスは、アプリケーションの操作に必要な調整やその他の「サービス」を提供します。これらのサービスは、永続性からデータにアクセスする方法は一般的に知られておらず、リポジトリは通常、のサービスにアクセスするデータ/オブジェクトのみが異なるという点で非常に異なります。

+5

私は、リポジトリはデータアクセスに使用されるサービスの一種だと言います。 –

+1

私たちが書いたほとんどのものは、あるレベルでは "サービス"ですが、リポジトリがオブジェクトのコレクション*であると考えられるという基本的な意図は失われています。 – jlembke

+2

ユニットテストを行うと、リポジトリをデータベースを避けるために必要な模擬を最小限に抑える最小限の抽象化と考えることが明らかになるかもしれません。 –

9

(お持ちの場合は、より多くのコンテキストを与えるまで)私は一般的な意味で、最初の試みとして言う:

  • あなたには、いくつかのグローバルオブジェクトを配置場所リポジトリがあります、後で使用する。
  • サービスは、ビジネス・ロジック・コードで、明示的に(理想的にプレゼンテーション層、およびデータベース層から分離?)
70

リポジトリは、データが格納される場所です。サービスはデータを操作するものです。

実際の状況の比較では、お金が銀行の金庫に保管されている場合、金庫はリポジトリです。預金、引き出しなどのサービスはサービスです。

+2

この回答に感謝します!シンプルで簡潔です。 – alexn

+0

は上記のコメントに同意しました!現実の世界の説明も大好き! – Kleigh

関連する問題