2010-03-24 50 views
7

Microsoft đã thực hiện một công việc hiểu biết về việc không phác thảo vị trí thực tế cho các dịch vụ dữ liệu trong thế giới tuyệt vời của SOA/Web dev.Chiến lược triển khai Dịch vụ Dữ liệu WCF

Vì vậy, câu hỏi của tôi là WCF Data Services được thiết kế để được sử dụng thông qua ứng dụng khách bên ngoài? Có ai từng nghe về ai đó đang sử dụng chúng ở phía máy chủ (tức là truy cập cơ sở dữ liệu cho dịch vụ web) không?

kịch bản đơn giản một kiến ​​trúc lớp nói chung sử dụng đối tượng kinh doanh BO (ngoặc chỉ ra những gì đang được thông qua giữa các lớp)

(XML) Dịch vụ WCF -> (BO) Business Logic -> (BO) Dao -> Entity Framework

hoặc sử dụng dịch vụ dữ liệu sẽ là nơi DS BO được mô hình hóa các thực thể kinh doanh được sử dụng trong dịch vụ dữ liệu.

(XML) Dịch vụ WCF -> (BO) Business Logic -> (BO) WCF Data Service -> (DS BO) Server

Tôi không thể nhìn thấy một sử dụng cho sau này, trừ khi có rất nhiều trường hợp, mọi người sẽ truy cập dữ liệu của bạn qua Lớp dịch vụ dữ liệu của bạn so với lớp Dịch vụ?

Suy nghĩ bất kỳ ai, bất kỳ loại tài liệu tham khảo nào có thể giúp ích lại sẽ hữu ích.

Tôi đang tìm kiếm ưu/nhược điểm để giúp những người khác ngoài đó như tôi xác định khi nào/ở đâu để sử dụng dịch vụ dữ liệu.

+0

EF có hiệu suất thấp nên đây là giải pháp không tốt cho các dịch vụ hiệu suất cao. – garik

+2

EF sẽ được sử dụng trong cả hai trường hợp và hiệu suất có thể chấp nhận được cho thông lượng của chúng tôi. – Nix

Trả lời

3

Đây là nỗ lực của tôi để phác thảo mọi thứ tôi đã tìm thấy về chủ đề này.

Mục đích của Dịch vụ dữ liệu là hiển thị một số loại tài nguyên qua URI web. Tất cả dữ liệu được truy cập/thay đổi thông qua các động từ HTTP tiêu chuẩn (GET, POST, PUT, DELETE).

Phản hồi chuẩn cho DS (cấu hình hoàn toàn) là JSON/Atom.

Kiểu ngoài của kiểu dịch vụ dữ liệu được thiết kế để trở thành lớp truy cập cuối cho bất kỳ loại ứng dụng khách nào cần truy cập dữ liệu của nó trên web.

Hỗ trợ dịch vụ dữ liệu bổ sung thêm logic nghiệp vụ (thông qua hoạt động dịch vụ/máy đánh chặn) nhưng thường được sử dụng trong trường hợp logic nghiệp vụ bị giới hạn.

Tóm tắt Dịch vụ dữ liệu được thiết kế để đối mặt với khách hàng, bạn đang hiển thị dữ liệu để có thể truy cập dữ liệu trên web từ một số nội dung khác. Mặc dù bạn có thể buộc các dịch vụ dữ liệu phù hợp với lớp truy cập dữ liệu máy chủ back-end, nhưng bạn chỉ nên làm như vậy nếu bạn có thể tìm thấy lý do chính đáng để làm như vậy. Với các dịch vụ dữ liệu có rất nhiều hiệu năng và mã hóa không cần thiết.

Tôi chưa tìm thấy bất kỳ tài nguyên (blog hoặc bài viết nào) gợi ý rằng chúng được sử dụng như lớp dao trên các ứng dụng phía máy chủ.

Các trường hợp sử dụng Dịch vụ dữ liệu ở phía máy chủ:

1) Dịch vụ dữ liệu phiên bản dễ dàng hơn. Tôi có thể phát hành các phiên bản khác nhau của mô hình thực thể mà không ảnh hưởng đến tất cả mọi người sử dụng nó (người ta có thể tranh luận rằng bạn có thể làm tương tự với một công việc nhỏ hơn chỉ bằng cách sử dụng mô hình ADO.NET Entity)

2) Muốn có khả năng truy cập dữ liệu ở mức thấp hơn. Bạn đang cho phép truy cập cửa sau vào cơ sở dữ liệu của mình. Ở mức độ cao, bạn đang trưng bày một Dịch vụ kinh doanh và Dịch vụ truy cập dữ liệu cửa sau. Có thể tồn tại một trường hợp mà một tên miền khác chỉ có một tập con của dữ liệu được chia sẻ trong mô hình dữ liệu của nó và cần phải lọc trên một cái gì đó trong mô hình của bạn. Một dịch vụ dữ liệu sẽ cho phép bạn nói chuyện với VIA thông qua uris.

Tài

White Paper Using Microsoft ADO.NET Data Services

ADO.NET Data Services Overview

Simplifying our n-tier development platform: making 3 things 1 thing

Data Services for the Web

3

Đừng làm việc thứ hai.

Giao diện Dịch vụ dữ liệu WCF dựa trên Atom Pub, dựa trên REST được dự định là ứng dụng khách.

Đây là một lý do chính. Bạn không thể thực hiện giao dịch hai pha-cam kết qua giao diện WCF Data Service và tôi hy vọng nhóm WCF không bao giờ cố gắng kích hoạt nó.

Dịch vụ dữ liệu WCF giới thiệu dữ liệu cho một ứng dụng khách từ xa, không phải là lớp trong kiến ​​trúc.

+0

Bạn có thể chi tiết giới hạn giao dịch hai pha cam kết không? Bạn chỉ đơn giản là nói về việc kiểm soát một cách có lập trình một cam kết hai giai đoạn, hoặc các vấn đề nội bộ? – Nix

+0

Nếu bạn tìm kiếm ở đây trên REST Giao dịch, bạn sẽ thấy rất nhiều cuộc thảo luận về điều này. Câu trả lời của tôi về chủ đề là ở đây http://stackoverflow.com/questions/2346964/if-transactions-over-rest-are-unachievable-how-can-rest-ever-be-really-useful –

-3

Câu hỏi của tôi rất đơn giản, là WCF Data Dịch vụ được thiết kế để sử dụng qua khách hàng? Hay có ai từng nghe về ai đó đang sử dụng chúng ở phía máy chủ không?

Ghi nhớ rằng thuật ngữ "khách hàng" có ý nghĩa rộng và có thể bao gồm các hệ thống back-end, do đó, câu trả lời ngắn sẽ là có. Tôi đã không nghe nói về bất cứ ai sử dụng chúng bên cạnh, nhưng không có lý do tại sao không; RSS được sử dụng để cung cấp dữ liệu giữa các hệ thống, WCF Data Services sẽ là một cách khác để thực hiện điều đó.

Có thể bạn đang xem xét điều này từ quan điểm trung tâm công nghệ, khi thực sự bạn cần suy nghĩ tổng thể hơn? WCF Data Services đơn giản là một công cụ - sử dụng chúng ở nơi thích hợp.

Nhìn vào một số trong số high-level overview docs có vẻ như Dịch vụ dữ liệu WCF có một phạm vi khá rộng các ứng dụng có thể.

+0

Hãy chăm sóc tốt hơn trong câu trả lời của bạn (kiểm tra chính tả), cũng như đọc câu hỏi. Điều này không trả lời gì cả. Tôi đã nói trong câu hỏi của mình "Tôi không thể thấy sử dụng sau này, trừ khi có nhiều trường hợp mọi người truy cập dữ liệu của bạn qua Lớp dịch vụ dữ liệu của bạn" nếu vì lý do nào đó bạn đang trưng ra hai giao diện một dịch vụ kinh doanh và một dịch vụ dữ liệu tôi có thể nhìn thấy một nhu cầu/sử dụng cho kiến ​​trúc này, nhưng ngoài ra tại sao mọi người sẽ trải qua mọi rắc rối khi sử dụng các dịch vụ dữ liệu để truy cập cơ sở dữ liệu? Tại sao kéo súng bắn đinh ra khi bạn chỉ đóng đinh một móng? – Nix

+0

Trong trường hợp đó không nói câu hỏi của bạn là một câu hỏi đơn giản; Tôi đã cho bạn những suy nghĩ của tôi về điều đó (phần đầu) cụ thể - bạn hoàn toàn có quyền bỏ phiếu nếu đó không phải là những gì bạn đang theo đuổi. Tôi thừa nhận tôi đã tìm thấy câu hỏi/ví dụ thứ hai của bạn một chút khó hiểu hoàn toàn - nhưng sau đó không phải lúc nào cũng dễ dàng truyền đạt loại điều này thông qua văn bản chỉ. Tôi xin lỗi vì chính tả nghèo nàn, nhưng tôi thân mến nói rằng tôi đã thấy tồi tệ hơn; Tôi giả định rằng khi mọi người đặt câu hỏi ở đây họ chủ yếu là sau khi thông tin không sử dụng hoàn hảo tiếng Anh. –

+0

tôi đã cố gắng để viết lại câu hỏi để làm cho nó rõ ràng hơn những gì tôi đang tìm kiếm. Lý do chính cho việc bỏ phiếu xuống là nó không giải quyết được câu hỏi của tôi, nó dường như là một câu trả lời chung chung. Tôi sẽ nói rằng tôi đã đọc liên kết bạn gửi và nó cho thấy chính xác lý do tại sao tôi bối rối, MS thực sự bán điều này như một đám mây ... nó có thể làm mọi thứ ....; ( – Nix

0

Thiết lập lớp truy cập dữ liệu của bạn trên các dịch vụ dữ liệu là một vụ tự tử. Dịch vụ dữ liệu WCF dành cho các máy khách từ xa. Đó là nó.

Các vấn đề liên quan