Tôi có một ứng dụng WPF cho đến nay đã được khách hàng chỉ, nhưng bây giờ tôi đang làm việc trên chia nó thành một khách hàng và phía máy chủ. Trong công việc này tôi giới thiệu WCF cho giao tiếp client-server. Ứng dụng của tôi có một số dự án và cần có các tham chiếu dịch vụ từ nhiều hơn một trong số các dự án này.Cấu trúc ứng dụng sử dụng WCF
Nỗ lực ban đầu trong việc phân tách là làm mọi thứ "thẳng về phía trước". Tất cả các dự án cần phải giao tiếp với một dịch vụ được tham khảo dịch vụ, và do đó, làm dự án ứng dụng WPF chính - để có được app.config đó. Tôi tìm thấy điều này để biến thành một mớ hỗn độn khá nhanh chóng, và tôi không thể tưởng tượng đây là những kiến trúc tiêu biểu mà mọi người sử dụng? Tôi cũng đã thấy các vấn đề với thực tế là mỗi tài liệu tham khảo dịch vụ tạo ra một triển khai mới của các lớp DataContract - do đó không có sự hiểu biết chung về các lớp DataContract trên các dự án. Tôi có một số lớp ViewModel trong một dự án, và một dự án khác instanciating một số ViewModel. Tôi muốn truyền đối tượng nhận được từ dịch vụ, nhưng tôi không thể làm đại diện phía máy khách được tạo ra của đối tượng nhận được khác nhau trong mỗi dự án.
Vì vậy, - có cách nào được khuyến nghị để cấu trúc các tách máy khách/máy chủ đó bằng WCF không? Hoặc nguyên tắc để làm theo? Tôi đang suy nghĩ một dự án Proxy phổ biến được sử dụng ở phía máy khách mà giao tiếp với các dịch vụ, kết thúc dữ liệu nhận được và trả về dữ liệu trên một biểu mẫu được biết đến với các thư viện máy khách. Chỉ nên cung cấp một tham chiếu dịch vụ, và tôi đoán tôi chỉ cần App.config trong dự án wpfApp? Điều này có nghĩa không?
Cảm ơn câu trả lời rất hay!Một vài câu hỏi sau: Có một máy chủ dịch vụ, bạn cần phải khởi động cả máy chủ và ứng dụng khách khi khởi động ứng dụng của mình? Hay có cách nào để giải quyết vấn đề này? Về Client Proxies - bạn muốn dùng cái nào? Hướng dẫn sử dụng impl âm thanh phù hợp hơn khi bạn không phải đối phó với các tài liệu tham khảo dịch vụ đi ra khỏi ngày .. – stiank81
@ bambuska: chắc chắn, bạn phải khởi động cả máy chủ dịch vụ và khách hàng để kiểm tra; chọn "khởi chạy nhiều dự án" trong Visual Studio để đạt được điều này - bạn có thể khởi chạy cả máy chủ dịch vụ và ứng dụng khách khi nhấn F5. –
Proxy của khách hàng: Tôi thích toàn quyền kiểm soát tôi có khi thực hiện thủ công proxy của khách hàng - điều này ** yêu cầu ** mặc dù tôi có thể chia sẻ hợp đồng giữa máy chủ và ứng dụng khách (kể từ khi sử dụng proxy của proxy khách hàng phải có quyền truy cập đối với các hợp đồng thực tế) –