2010-01-07 36 views
6

Cách thích hợp để xử lý các đối tượng kinh doanh đa hình trong thế giới WCF/SOAP là gì?Thiết kế đối tượng WCF - OOP vs SOA

Dường như với tôi rằng SOA và OOP có mâu thuẫn với nhau - để lộ một WSDL sạch bạn cần các đối tượng cụ thể, thường không sử dụng thừa kế. Mặt khác, có lẽ trong hệ thống cơ bản, bạn sẽ muốn làm theo thiết kế OO thích hợp.

Mọi người thường làm gì ở đây? Xây dựng một bộ các đối tượng hợp đồng WCF, nguyên tắc OOP gửi đi, sau đó chuyển đổi sang và từ một tập hợp các đối tượng khác trong các lớp logic thực tế?

Trả lời

6

Mọi người thường làm gì ở đây? Xây dựng một bộ các đối tượng hợp đồng WCF, nguyên tắc OOP gửi đi, sau đó chuyển đổi sang và từ một tập hợp các đối tượng khác trong các lớp logic thực tế?

Có.

Cách WCF tuần tự hóa mọi thứ sẽ đưa ra nhiều hạn chế về những gì bạn có thể và không thể làm với các đối tượng hợp đồng. Những gì bạn không thể làm kết thúc là "hầu hết mọi thứ hữu ích".

Tôi đã tìm thấy nó làm cho mọi thứ rõ ràng hơn nhiều nếu bạn nghĩ về các đối tượng hợp đồng WCF như một cơ chế truyền dữ liệu. Về cơ bản giống như XML được nhập mạnh mẽ/tĩnh.
Thay vì chuyển đổi đối tượng nghiệp vụ thành chuỗi XML (và ngược lại), bạn chuyển đối tượng doanh nghiệp sang đối tượng hợp đồng WCF (và ngược lại), nhưng nó khác tương tự

+0

Vì vậy, bạn sẽ thêm phương thức '.ToWCFDataContract()' và một hàm tạo chấp nhận đối tượng WCFDataContract của bạn vào đối tượng kinh doanh của bạn? – Nate

+0

Cảm ơn rất nhiều.Đó là một chút không hài lòng khi nghĩ rằng tôi phải tạo một bộ đối tượng khác (nó không phải là một dịch vụ nhỏ, để nói ít nhất), nhưng bây giờ tôi biết không có lựa chọn nào tốt hơn, tôi sẽ không cảm thấy như tôi đang lãng phí thời gian của mình. – mdryden

+0

@Nate: Khá nhiều, vâng –

2

Sau khi đọc thư viện Thomas ERL, tôi đi đến kết luận sau:

suy nghĩ của WCF Hợp đồng/SOAP Message như đơn giản là một thông điệp rằng các dịch vụ sử dụng để giao tiếp (không chặt chẽ buộc đó để đối tượng trong ma cua ban).

Sau đó, bạn có thể sử dụng OOP để thiết kế mã cơ sở xử lý các thông điệp đó một cách duyên dáng bằng các kỹ thuật OOP phổ biến.

0

Bạn sử dụng trừu tượng (loại giao diện) được chú thích với các thuộc tính WCF để xác định hợp đồng Dịch vụ của bạn.

Cả hai tùy thuộc vào trừu tượng, theo OOP, cũng như xác định điểm cuối dịch vụ, là SOA.

Nói chung, nếu bạn thấy rằng bạn đang nhận được các đối tượng kinh doanh với phụ thuộc, bạn nên xem xét việc kéo phụ thuộc như vậy lên lớp kinh doanh dịch vụ như trái ngược với phụ thuộc tiêm vào đối tượng kinh doanh. Lớp nghiệp vụ dịch vụ sau đó sẽ hoạt động như một người hòa giải hành động trên cả hai dịch vụ WCF proxy cũng như các đối tượng kinh doanh. Trái ngược với việc có các đối tượng nghiệp vụ hoạt động trên proxy dịch vụ WCF.

0

Tất cả nhận xét tuyệt vời về chủ đề này! Tôi sẽ thêm phiếu bầu của tôi vào khái niệm bộ điều hợp cho dàn xếp giữa hướng dịch vụ và định hướng đối tượng của bạn. Tôi cũng giống như cách tiếp cận của Thomas Erl trong mô hình dịch vụ của mình, ông giới thiệu khái niệm về "dịch vụ ứng dụng" và "dịch vụ kinh doanh". Đây là cách để đi cho các điểm tích hợp của bạn với môi trường ứng dụng/kinh doanh cụ thể của bạn (ví dụ: khung/API hướng đối tượng và định hướng thành phần của bạn). Bằng cách này sẽ cho kết quả tốt hơn nhiều khả năng tương thích và do đó khả năng, cho bạn doanh nghiệp khung gurus ra khỏi đó.

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