2009-07-28 11 views
13

Tôi muốn truy cập tất cả các phương thức được hiển thị trong dịch vụ thông qua URL. nếu giả sử URL sẽ là:Làm thế nào để sử dụng dịch vụ web WCF thông qua URL tại thời gian chạy?

http://localhost/MyService/MyService.svc 

Làm thế nào tôi có thể truy cập các phương pháp:

  1. nếu giả sử tôi có một ServiceReference
  2. và tôi nên làm gì nếu không có sự tham khảo dịch vụ.
+0

Vui lòng làm rõ câu hỏi của bạn. Tôi không thể nói những gì bạn muốn thực hiện. Bạn có muốn để có thể gọi các phương pháp, hoặc bạn muốn có một danh sách của họ? –

+0

John Tôi muốn truy cập các phương pháp..Tính năng tôi muốn sử dụng dịch vụ web thông qua URL. –

+0

Và tại sao không sử dụng tham chiếu dịch vụ? –

Trả lời

18

Để sử dụng dịch vụ WCF, bạn cần phải tạo proxy máy khách WCF.

Trong Visual Studio, bạn sẽ nhấp chuột phải vào dự án và chọn "Thêm tham chiếu dịch vụ" từ trình đơn ngữ cảnh. Nhập URL bạn muốn kết nối và nếu dịch vụ đó đang chạy, bạn sẽ nhận được tệp proxy của khách hàng được tạo cho bạn.

Tệp này thường chứa một lớp được gọi là MyService Khách hàng - bạn có thể khởi tạo lớp đó và bạn sẽ thấy tất cả các phương pháp sẵn có trên lớp ứng dụng đó theo ý của bạn.

Nếu bạn không muốn thêm tham chiếu dịch vụ trong Visual Studio, bạn có thể đạt được kết quả tương tự bằng cách thực hiện công cụ dòng lệnh svcutil.exe - điều này cũng sẽ tạo tất cả các tệp cần thiết cho lớp proxy ứng dụng khách của bạn.

Marc

UPDATE:
nếu bạn muốn khởi tạo một proxy client khi chạy, bạn chắc chắn có thể làm điều đó - bạn sẽ cần phải quyết định ràng buộc để sử dụng (giao thức vận tải), và đó địa chỉ để kết nối với, và sau đó bạn có thể làm:

BasicHttpBinding binding = new BasicHttpBinding(); 
EndpointAddress address = new EndpointAddress("http://localhost:8888/MyService"); 

MyServiceClient serviceClient = new MyServiceClient(binding, address); 

Nhưng ngay cả trong trường hợp này, bạn cần phải có nhập khẩu và tạo ra các proxy client đầu tiên, bằng cách sử dụng các công cụ "Add Service Reference" hoặc svcutil.exe.

+0

Xin chào Marc, Cảm ơn bạn đã trả lời. Tôi đang làm như vậy và có thể truy cập. Nhưng yêu cầu của tôi là cung cấp cùng một giao diện (như chúng tôi nhận được khi chúng tôi nhấp chuột phải để thêm tham chiếu dịch vụ) cho khách hàng, trong đó anh ta có thể xem url và tham chiếu dịch vụ sẽ được cập nhật cho phù hợp với url được chọn. –

+0

Làm thế nào tôi có thể đạt được điều này trong thời gian chạy. Làm thế nào để xây dựng serviceclient tại thời gian chạy với URL được chọn. –

+0

OK, vì vậy bạn muốn cho phép máy khách của bạn thêm các tham chiếu dịch vụ vào thời gian chạy? Anh ấy sẽ làm gì với họ? Ý tôi là - bạn chắc chắn có thể tạo ra một proxy trong thời gian chạy - nhưng làm thế nào anh ta hoặc bạn sẽ được gọi phương pháp? –

7

Để trả lời cách thực hiện mà không cần tham khảo dịch vụ. Có một cái nhìn ở đây (tùy chọn #A):

Writing your first WCF client

Bạn vẫn cần một số tài liệu tham khảo (cụ thể là một tham chiếu đến một hội đồng có chứa các hợp đồng/giao diện) nhưng bạn không thực hiện một dịch vụ tham khảo.

CHỈNH SỬA: Mặc dù ở trên có thể tôi sẽ không khuyên bạn nên sử dụng. Hiệu suất không phải là chính xác tuyệt vời khi bạn phải tạo ra các proxy như thế này. Tôi thường sử dụng svcutil.exe và tạo ra một hội đồng có chứa khách hàng của tôi và tạo ra một tham chiếu đến hội đồng đó. Bằng cách này, bạn có nhiều tùy chọn hơn để kiểm soát proxy trông như thế nào.

1

Bạn cũng có thể sử dụng lớp WebClient để gọi dịch vụ WCF mà không cần proxy dịch vụ. Hiệu quả bạn có thể gửi và nhận dữ liệu Strings và nhị phân và cũng mô phỏng POST.

Tôi sử dụng nó rộng rãi cho các thành phần có thể tái sử dụng, nơi nhà phát triển không bao giờ có thể tạo các phương thức proxy được yêu cầu. So sánh tốt các cách thực hiện POST có sẵn here.

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