2012-04-18 26 views
5

Hiện tại chúng tôi có một ứng dụng .NET 4 bao gồm Dịch vụ Windows chạy trong nền và máy khách cục bộ hoặc từ xa (chỉ 1-3 bình thường).Lựa chọn tốt nhất cho máy chủ lưu trữ tự động mạnh mẽ: WCF so với ASP.NET Web Api

Máy khách có giao diện WPF và cần một số dữ liệu từ dịch vụ windows. Vì vậy, chúng tôi sử dụng WCF với NamedPipe ràng buộc cho một khách hàng địa phương và NetTcp ràng buộc cho khách hàng từ xa. Tính năng này hoạt động nhưng chúng tôi thường gặp sự cố với điểm cuối không thể truy cập được (kênh bị lỗi hoặc không tìm thấy, v.v.). Chúng tôi đã cố gắng xây dựng lại các kết nối bị lỗi nhưng dường như khá dễ vỡ ...

Bây giờ hãy nhập Api Web: Dường như một ngăn xếp dựa trên HTTP có thể mạnh hơn (không có kênh, không có điểm cuối, có thể tự lưu trữ trong cửa sổ dịch vụ là tốt). Có vẻ như không có vấn đề gì với các kênh bị hỏng vì mỗi yêu cầu được xử lý riêng lẻ. Vì vậy, nếu một cái gì đó không thành công, bạn chỉ cần lặp lại yêu cầu. (Và chúng tôi có kinh nghiệm với ASP.NET MVC từ các ứng dụng khác, vì vậy điều này không mới đối với chúng tôi).

Bây giờ, chúng tôi đang nghĩ điều gì có thể là đặt cược tốt nhất của chúng tôi. Tốt hơn là "làm cứng" dịch vụ WCF hiện có của chúng tôi (một giao diện dịch vụ với khoảng 15 hoạt động) hoặc để chuyển giao diện Web Api và chạy nó như các yêu cầu HTTP (với dữ liệu JSON)? Hiệu suất không phải là vấn đề chính của chúng tôi ở đây ...

Bất kỳ ý tưởng nào? Hartmut

Trả lời

4

Tôi khuyên bạn nên gắn bó với các dịch vụ WCF (SOAP) cho ứng dụng WPF của bạn thay vì chuyển sang API Web. Có một số lý do cho việc này. Đầu tiên tôi nghĩ chúng ta cần xem xét những gì Web API mới đang cố gắng giải quyết - cụ thể là cung cấp một khung công tác để hỗ trợ các dịch vụ RESTful/HTTP/hypermedia. Điều này có thể phù hợp để xây dựng các ứng dụng sử dụng nhiều HTTP như web, ứng dụng di động và JavaScript, nơi bạn muốn tối đa hóa khả năng "tiếp cận" hoặc khả năng tương thích của dịch vụ của bạn (bất kể nền tảng). Đây không phải là để nói rằng bạn không thể sử dụng nó cho WPF khách hàng nhưng trong trường hợp của bạn, nơi mà tất cả lưu lượng truy cập là địa phương cho tên miền của bạn, nó có ý nghĩa hơn để gắn bó với thực hiện hiện tại của bạn.

Các lựa chọn ràng buộc mà bạn đã thực hiện cho dịch vụ/khách hàng của mình có vẻ ổn với tôi. Tôi sẽ tập trung vào lý do tại sao kênh của bạn bị lỗi và giải quyết những vấn đề này. Bạn cũng có thể muốn xem xét việc lưu trữ các dịch vụ của mình thông qua IIS và sử dụng WAS để hiển thị các điểm cuối không phải HTTP của bạn. Tôi đã có nhiều thành công với điều này trong quá khứ và phần lớn đã được khá ổn định. Nó cũng lấy đi một vài cơn đau đầu với việc quản lý máy chủ của riêng bạn. Nếu bạn lo ngại về lỗi liên kết TCP, thì chỉ cần tạo một điểm cuối HTTP hoặc wsHTTP mới và sử dụng điểm cuối đó. Điều này sẽ cung cấp cho bạn chính xác cùng một phương tiện mà api web sử dụng mà không phải thay đổi mô hình lập trình của bạn.

+0

Bạn có muốn cập nhật cho chúng tôi nếu vẫn tự lưu trữ WebAPI là lựa chọn tốt hơn so với WCF Tự lưu trữ. –

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