2012-08-03 69 views
11

giả sử khi tôi chỉ có tệp wsdl thì làm cách nào tôi có thể tạo lớp proxy chỉ để gọi phương thức webservice khác nhau. cách webservice liên quan đến tất cả các lớp và thuộc tính của nó là phương thức & sẽ được hiển thị trong các ứng dụng C# của tôi. bất cứ ai có thể giúp hướng dẫn tôi. cảm ơnCách tạo lớp proxy từ WSDL trong trường hợp webservice

+3

Tìm kiếm 'wsdl.exe' hoặc' svcutil.exe' –

+0

cảm ơn nhưng làm thế nào đến nay tôi biết svcutil có liên quan với WCF không webservice nhưng tôi không chắc chắn ... đặt một số ánh sáng. – Thomas

+0

http://msdn.microsoft.com/en-us/library/7h3ystb6.aspx - lưu ý MS khuyến cáo sử dụng svcutil.exe trên wsdl.exe vì sau này được coi là công nghệ kế thừa. –

Trả lời

6

Bạn cần sử dụng ServiceModel Metadata Utility Tool hoặc Add Service Reference Dialog của Visual Studio để tạo proxy máy khách cho dịch vụ mà bạn muốn liên lạc. Proxy được tạo sẽ cung cấp các lớp trừu tượng hợp đồng dịch vụ và bạn có thể lập trình ứng dụng khách của mình để tương tác với các lớp này.

+0

khi chúng tôi thêm tham chiếu web thì chúng tôi cần biết url webservice nhưng trong một số trường hợp tôi đã thấy công ty bên thứ 3 chỉ cung cấp tệp wsdl. nếu tôi tạo proxy từ wsdl thì proxy có thể tương tác với webservice như thế nào. làm thế nào lớp proxy biết url thực tế của webservice ..... u có thể thảo luận về khái niệm này – Thomas

+0

bất kỳ cách nào url webservice được lưu trữ trong tệp wsdl không? trong đó thẻ được lưu trữ. xin vui lòng cho tôi mẫu mã wsdl chỉ để chỉ ra cách url dịch vụ web được lưu trữ trong tập tin wsdl. thanks – Thomas

+0

Proxy, như được tạo ra, không có thông tin về điểm cuối của dịch vụ. Khi bạn khởi tạo proxy (hoặc một kênh), bạn phải cung cấp ràng buộc và điểm cuối được sử dụng. Thông tin này cũng có thể được đọc từ một tệp cấu hình, mà các công cụ được đề cập ở trên cũng sẽ tạo ra. Xem http://msdn.microsoft.com/en-us/library/ms576141.aspx – lesscode

7

Có một tiện ích, nó shipps với Visual Studio (từ năm 2005, tôi nghĩ), được gọi là wsdl.exe

Đó là dòng lệnh, và có thể được sử dụng để tạo proxy.

+0

khi chúng tôi thêm tham chiếu web thì chúng ta cần biết url webservice nhưng trong một số trường hợp tôi đã thấy công ty bên thứ 3 chỉ cung cấp tệp wsdl. nếu tôi tạo proxy từ wsdl thì proxy có thể tương tác với webservice như thế nào. làm thế nào lớp proxy biết url thực tế của webservice ..... u có thể thảo luận về khái niệm này – Thomas

+0

Giống như proxy được thêm vào bằng tham chiếu. Bản thân proxy không chứa thông tin về vị trí WebService. Cấu hình Dịch vụ Web nằm trong tệp Web.config/app.config. Thêm webreference tạo cấu hình máy khách. Khi tự thêm proxy của mình Bạn sẽ phải thêm cấu hình của chính mình. Ngoài ra, bạn có thể chuyển URL dưới dạng tham số hàm tạo của trình khách. – Varius

+0

lol bạn đã rất gần với 1000 – toddmo

2

Bạn có thể sử dụng công cụ WSDL.exe bằng cách sử dụng dòng lệnh.

ví dụ WseWsdl3 WSDLPath /out:MyProxyClass.cs

+0

cú pháp là sai tôi nghĩ. khi chúng tôi thêm tham chiếu web thì chúng tôi cần biết url webservice nhưng trong một số trường hợp tôi đã thấy công ty bên thứ 3 chỉ cung cấp tệp wsdl. nếu tôi tạo proxy từ wsdl thì proxy có thể tương tác với webservice như thế nào. cách lớp proxy biết url thực sự của webservice ..... bạn có thể thảo luận về khái niệm này không. – Thomas

+0

WSDL có địa chỉ Dịch vụ như trong thẻ . khi bạn tạo một proxy, nó sẽ tạo ra một giá trị cấu hình trong cấu hình của bạn để xác định URL dịch vụ nào sẽ sử dụng cho một tương tác. – VRK

1

nếu WseWsdl3.exe là không có khả năng tạo ra các lớp proxy, vẫn còn là một cách.

Nếu bạn có thể chạy dịch vụ của mình dưới dạng ứng dụng web ASP.NET thông thường trong IIS, nó tạo tệp ASP.NET tạm thời, nơi lớp proxy được tạo độc đáo cho bạn.

Bạn có thể tìm thấy nó trong thư mục:

C: \ Windows \ Microsoft.NET \ Framework \ vMAJOR.MINOR.BUILD \ Temporary ASP.NET Files \ YOUR_WEB_APP. Có một số thư mục con có tên ngẫu nhiên, chuyển đến tên gần đây nhất và trông giống như "App_WebReferences.XXXX.0.cs".

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