Tham chiếu Web so với Tham chiếu Dịch vụ


110

Tôi vừa đụng phải một bức tường gạch khổng lồ với Paypal. Tôi đã tạo một dự án C # thông thường để tạo một số lớp trình bao bọc bằng WSDL của chúng.

Nếu bạn tạo một dự án không phải web, tùy chọn duy nhất bạn có để thêm wsdl là Tham chiếu Dịch vụ Web. Và điều này xây dựng giống như một tập hợp các lớp proxy giống như Tham chiếu web nhưng không thực sự ... nó bổ sung thêm nhiều thứ mà ngay cả những kẻ PayPal cũng không biết.

Vì vậy, tôi đã dành toàn bộ thời gian để tìm Giao diện phù hợp trong danh sách các lớp proxy này để sử dụng làm dịch vụ (SoapBinding) và giao diện PayPalAPIAASoapBindingkhông có ở đó, tôi đã liên tục nói với điểm liên hệ PayPal của chúng tôi.

Tôi chỉ có thể thấy 2 Giao diện sau đây xuất hiện cho tôi những gì tôi cần sử dụng vì tôi không thấy giao diện PayPalAPIAASoapBindingmà bạn CÓ THỂ thấy trong tài liệu tham khảo dịch vụ dựa trên Tham chiếu Web:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

Vì vậy, tôi đã tìm ra ồ, có lẽ tôi đã tạo Tham chiếu Dịch vụ so với Tham chiếu Web mà Tham chiếu Web là một tùy chọn trong một dự án Web. Nhưng tôi không muốn tham chiếu dịch vụ của mình kết hợp chặt chẽ với dự án web của mình. Vì vậy, đó là lý do tại sao tôi tạo Dự án C #.

Vậy tham chiếu dịch vụ so với tham chiếu web là cái quái gì? Và làm thế nào tôi có thể tách điều này ra thành dự án bao phấn nếu Tham chiếu Dịch vụ sẽ khiến tôi phải lặp lại và cung cấp cho tôi một tập hợp các giao diện khác với Tham chiếu Web?

Ngoài ra, để làm cho mọi thứ trở nên khó hiểu hơn, VS 2008 có một dự án Ứng dụng Dịch vụ Web.

Vậy tôi dùng cái gì? Chúng tôi đang sử dụng khung .NET 3.5 và chúng tôi chưa sẵn sàng chuyển sang WCF . Vì vậy, tôi vẫn có thể sử dụng Tham chiếu Dịch vụ mới ngay cả khi không sử dụng WCF hay sao? NẾU bạn đang sử dụng .NET 3.5 và chưa WCF và bạn vẫn muốn thực hiện các dịch vụ web cơ bản, bạn vẫn sử dụng tuyến tham chiếu dịch vụ và chỉ không sử dụng khuôn khổ WCF? Có nghĩa là nó vẫn có thể được sử dụng như một Tham chiếu Web .NET 2.0, chỉ là bạn sẽ nhận được một thế hệ WSDL hoàn toàn khác?



2
8 năm sau và vẫn còn phù hợp.
Mike Devenney

Câu trả lời:


213

Thêm tham chiếu web là công nghệ thiết bị web ASP.NET (ASMX) kiểu cũ, không được dùng nữa (chỉ sử dụng XmlSerializer cho nội dung của bạn) - nếu bạn làm điều này, bạn sẽ nhận được một ứng dụng khách ASMX cho dịch vụ web ASMX. Bạn có thể thực hiện việc này trong bất kỳ dự án nào (Ứng dụng web, Trang web, Ứng dụng bảng điều khiển, Winforms - bạn đặt tên cho nó).

Thêm tham chiếu dịch vụ là một cách mới để làm điều đó, thêm tham chiếu dịch vụ WCF, cung cấp cho bạn một mô hình dịch vụ tiên tiến hơn, linh hoạt hơn nhiều so với chỉ những thứ ASMX cũ thông thường.

Vì bạn chưa sẵn sàng chuyển sang WCF, bạn vẫn có thể thêm tham chiếu web kiểu cũ, nếu bạn thực sự phải: khi bạn thực hiện "Thêm tham chiếu dịch vụ", trên hộp thoại xuất hiện, hãy nhấp vào [Nâng cao ] ở góc bên trái của nút:

văn bản thay thế

và trên hộp thoại tiếp theo xuất hiện, chọn nút [Thêm tài liệu tham khảo web] ở dưới cùng.


6
Thật ngu ngốc làm sao khi MS giấu nó trong hộp thoại WCF! Thậm chí không có ý nghĩa gì với vị trí ở đây
Tích

9
@coffeeaddict: tốt, tôi nghĩ rằng MS đang cố gắng một cách tinh tế sway bạn hướng tới sử dụng WCF theo mặc định - và chỉ kiểu cũ ASMX nếu bạn đang thực sự quyết tâm :-)
marc_s

27
Nếu bạn sử dụng Alt + PrtScn bạn có thể mất một snap shot của chỉ là cửa sổ hoạt động hiện nay, như vậy bạn sẽ không phải tự cắt ra chỉ là những gì bạn muốn thể hiện: o)
Ernest

Điều đó sẽ yêu cầu .NET 2.0 trên máy tính? Hay .NET 4.0 sẽ có thể xử lý công nghệ "Tham chiếu Web" dựa trên .NET 2.0? Tôi muốn biết vì tôi đang triển khai dịch vụ web SOAP làm "Tham chiếu web" trong ứng dụng .NET 4.0.
Người dùng máy tính

1
@sparkyShorts: vâng.
marc_s

9

Nếu tôi hiểu câu hỏi của bạn đúng:

Để thêm Tham chiếu Dịch vụ Web .net 2.0 thay vì Tham chiếu Dịch vụ WCF, hãy nhấp chuột phải vào dự án của bạn và nhấp vào 'Thêm Tham chiếu Dịch vụ.'

Sau đó nhấp vào "Nâng cao .." ở dưới cùng bên trái của hộp thoại.

Sau đó nhấp vào "Thêm tài liệu tham khảo web .." ở phía dưới bên trái của hộp thoại tiếp theo.

Bây giờ bạn có thể thêm một tham chiếu web SOAP thông thường như bạn đang tìm kiếm.


Điều đó sẽ yêu cầu .NET 2.0 trên máy tính? Hay .NET 4.0 sẽ có thể xử lý công nghệ "Tham chiếu Web" dựa trên .NET 2.0? Tôi muốn biết vì tôi đang triển khai dịch vụ web SOAP làm "Tham chiếu web" trong ứng dụng .NET 4.0.
Người dùng máy tính

4

Thêm một tham chiếu dịch vụ cho phép bạn tạo một ứng dụng khách WCF, có thể được sử dụng để nói chuyện với một dịch vụ web thông thường miễn là bạn sử dụng ràng buộc thích hợp. Thêm một tham chiếu web sẽ cho phép bạn chỉ tạo một tham chiếu dịch vụ web (tức là SOAP).

Nếu bạn hoàn toàn chắc chắn rằng bạn chưa sẵn sàng cho WCF (thực sự không biết tại sao) thì bạn nên tạo một tham chiếu dịch vụ web thường xuyên.


3
Bởi vì WCF KHÔNG dễ dàng cho người mới. Và hơn nữa sếp của tôi không cho tôi chuyển đến đó là lý do thực sự. Đó là mã và chạy ở đây. Khi bạn gặp phải tình huống đó, tôi không thể làm gì hơn.
Tích

7
@coffeeaddict Tôi nghĩ rằng bạn và sếp của bạn đã thông báo sai. Cả hai loại tham chiếu sẽ tạo ra một lớp cung cấp các phương thức để gọi các hoạt động dịch vụ. Làm thế nào có liên quan đến việc lớp được tạo bởi một tham chiếu "dịch vụ" sẽ kế thừa từ một lớp cơ sở tình cờ nằm ​​trong một thư viện mà Microsoft coi là một phần của một số công nghệ mà nó gọi là WCF?
Daniel Pratt

1
Điều đó sẽ yêu cầu .NET 2.0 trên máy tính? Hay .NET 4.0 sẽ có thể xử lý công nghệ "Tham chiếu Web" dựa trên .NET 2.0? Tôi muốn biết vì tôi đang triển khai dịch vụ web SOAP làm "Tham chiếu web" trong ứng dụng .NET 4.0.
Người dùng máy tính

3

Cuối cùng, cả hai đều làm điều tương tự. Có một số khác biệt trong mã: Dịch vụ Web không thêm không gian tên gốc của dự án, nhưng Tham chiếu dịch vụ thêm các lớp dịch vụ vào không gian tên của dự án. Các ServiceSoapClientlớp học được một cách đặt tên khác nhau, mà không phải là quan trọng. Khi làm việc với TFS, tôi muốn sử dụng Tham chiếu Dịch vụ vì nó hoạt động tốt hơn với kiểm soát nguồn. Cả hai đều hoạt động với các giao thức SOAP.

Tôi thấy tốt hơn nên sử dụng Tham chiếu dịch vụ vì nó mới và do đó sẽ được bảo trì tốt hơn.

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.