Sự khác biệt giữa kho lưu trữ và dịch vụ?


105

Sự khác biệt giữa kho lưu trữ và dịch vụ là gì? Tôi dường như không nắm bắt được nó.

Tôi đang nói về truy cập dữ liệu thông qua một lớp truy cập dữ liệu, thường là với linq đến sql.

Tôi rất thường thấy các kho lưu trữ với các phương pháp CRUD đơn giản và các dịch vụ với các phương pháp dành riêng cho doanh nghiệp hơn.

Chúng ta có thể lấy bài đăng trên blog này làm ví dụ. Nếu bạn nhìn vào các giao diện ở dưới cùng (hình ảnh), anh ta có hai kho lưu trữ và hai dịch vụ. Làm thế nào để một người biết những gì để đặt ở đâu?

Như tôi đã nói, kho lưu trữ dường như dành cho các hoạt động giống CRUD và Dịch vụ theo định hướng kinh doanh hơn.

Cảm ơn


Bạn có thể làm dịu? Trong bối cảnh nào? Giống như hầu hết các từ, ngữ cảnh mà những từ này đang được sử dụng giúp xác định nghĩa.
David

2
Lưu ý: Tôi không nói về các dịch vụ web hay cái gì đó ở đây. Tôi đang nói về truy cập dữ liệu thông qua một lớp dữ liệu.
alexn 17/09/09

Câu trả lời:


78

Kho lưu trữ về cơ bản là một mặt tiền cho sự bền bỉ sử dụng ngữ nghĩa kiểu Bộ sưu tập (Thêm, Cập nhật, Loại bỏ) để cung cấp quyền truy cập vào dữ liệu / đối tượng. Nó là một cách tách rời cách bạn lưu trữ dữ liệu / đối tượng khỏi phần còn lại của ứng dụng.

Phối hợp cung cấp dịch vụ hoặc các "dịch vụ" khác được yêu cầu để vận hành ứng dụng của bạn. Chúng rất khác nhau ở chỗ Dịch vụ thường không biết cách truy cập dữ liệu từ tính liên tục và các kho lưu trữ thường chỉ truy cập dữ liệu / đối tượng cho bất kỳ dịch vụ nào bạn có thể có.


19
Tôi muốn nói rằng Kho lưu trữ là một loại dịch vụ được sử dụng để truy cập dữ liệu.
Ian Ringrose 17/09/09

5
Đó là một định nghĩa hay theo nghĩa rằng hầu hết mọi thứ chúng ta viết đều là "dịch vụ" ở một mức độ nào đó, nhưng nó làm mất đi mục đích cơ bản mà một kho lưu trữ được coi là một tập hợp các đối tượng.
jlembke 17/09/09

4
Nếu bạn tìm kiếm thử nghiệm đơn vị, có thể rõ ràng hơn là nghĩ về các kho lưu trữ như là sự trừu tượng tối thiểu để giảm thiểu sự chế nhạo cần thiết để tránh cơ sở dữ liệu.
Henry Heikkinen

repository= collectionfrom backbone.jshay repository= servicefrom angular?
slideshowp 2

159

Kho lưu trữ là nơi dữ liệu được lưu trữ. Dịch vụ là thứ thao tác dữ liệu.

Trong một so sánh tình huống thực tế, nếu tiền của bạn được cất giữ trong kho tiền trong ngân hàng, thì kho tiền chính là kho lưu trữ. Nhân viên giao dịch gửi tiền, rút ​​tiền, v.v. là dịch vụ.


7
Cảm ơn câu trả lời này! Đơn giản và ngắn gọn.
alexn 17/09/09

1
đồng ý với nhận xét trên! Yêu thích giải thích thế giới thực là tốt!
Kleigh

6
mm. vì vậy, nếu ngân hàng quyết định loại bỏ kho tiền và đặt tiền dưới dạng matrasses, nhân viên giao dịch sẽ vẫn tương tác với bạn như trước đây mà bạn không cần phải biết về sự thay đổi trong lớp kho lưu trữ.
Dennis

1
Tôi nghi ngờ khách hàng sẽ muốn biết về việc triển khai đó, @Dennis
Chucky

1
@Dennis Có. Đây thực sự là một trong những lợi thế chính của việc sử dụng mô hình kho lưu trữ. Bạn sẽ có thể thay đổi việc triển khai thực tế của các giao diện kho lưu trữ mà không cần thay đổi bất kỳ điều gì trên dịch vụ. Điều này mang lại lợi ích to lớn cho việc thử nghiệm đơn vị và làm cho mã của bạn được kết hợp lỏng lẻo.
Warren Parks

12

Tôi sẽ nói như một lần thử đầu tiên, theo nghĩa chung (cho đến khi bạn cung cấp thêm ngữ cảnh nếu bạn có):

  • một kho lưu trữ là nơi bạn đặt một số đối tượng toàn cầu, sẽ được sử dụng sau này.
  • một dịch vụ là một mã logic nghiệp vụ, được làm rõ ràng (và lý tưởng là được tách biệt khỏi lớp Trình bày và lớp cơ sở dữ liệu?)

3
Sau đó, bạn có thể thực hiện như sau không: Kho lưu trữ của tôi có tất cả các lệnh gọi cơ sở dữ liệu phức tạp của tôi, sau đó trong dịch vụ của tôi, tôi đưa kho lưu trữ làm phụ thuộc. Bây giờ tôi có mã có thể kiểm tra dễ dàng và tách các mối quan tâm của tôi ra, vì dịch vụ của tôi không biết các lệnh gọi DB được thực hiện như thế nào, mà chỉ đơn thuần gọi các chức năng của kho lưu trữ. Do đó logic nghiệp vụ và quyền truy cập dữ liệu được tách biệt. Đây có phải là một cách tiếp cận khả thi không?
darophi

1
Nếu tất cả logic được viết trong các dịch vụ, thì bộ điều khiển sẽ chỉ gọi dịch vụ?
Islomkhodja Hamidullakhodjaev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.