2011-05-12 24 views
6

Tôi đang gặp sự cố khi bắt đầu với WCF trong .NET 4.0. Đây là tình huống của tôi:Triển khai ứng dụng khách SOAP trong C# với WCF và .NET 4.0

Tôi đã tạo một Máy chủ SOAP nhỏ trong PHP. Tôi có một dự án C#, trong đó tôi muốn kết nối với máy chủ này và bắt đầu truyền thông SOAP.

Vấn đề của tôi là, tôi không biết làm thế nào để thực hiện việc này trong C#. Tôi không thể tìm thấy phần giới thiệu phù hợp với WCF. Có nhiều cách để làm điều này. Nhưng tôi không thể tìm thấy các lớp và tham chiếu phù hợp để thêm vào dự án C# của tôi. Có bất kỳ hướng dẫn làm thế nào để đạt được điều này trong C#? Tôi đã tìm kiếm rất nhiều và không tìm thấy gì giúp tôi.

Tôi muốn tải WSDL từ Máy chủ SOAP của tôi vào thời gian chạy, thực hiện yêu cầu SOAP, truy xuất câu trả lời và hoàn thành. Nhưng tôi có thể bắt đầu từ đâu? Các trang web MSDN về WCF chỉ gây nhầm lẫn cho tôi nhiều hơn nữa.

Chỉnh sửa: Có thể không cần tìm nạp tệp WSDL khi chạy. Vì vậy, đó là không cần thiết nữa.
Tôi đã sử dụng svcutil để tạo lớp và nhúng nó vào dự án của tôi. Tôi chưa thể kiểm tra nó, vì tôi gặp rắc rối với cơ sở dữ liệu MySQL (Nó đang chạy và có thể truy cập từ công cụ dòng lệnh mysql hoặc mysqladmin, nhưng tôi không thể kết nối với bất kỳ chương trình nào khác ...) . Tôi sẽ báo cáo lại ngay sau khi tôi biết nếu nó hoạt động.

Chỉnh sửa 2: Tôi đã tiếp cận phương pháp tiếp cận của Kev và cuối cùng nó đã hoạt động rất tốt. Vấn đề cuối cùng của tôi là, tôi đã sử dụng Service Class trong một DLL. Tôi cần app.config trong programm sử dụng DLL quá. Sau khi tôi đã làm điều đó nó đã làm việc tốt.

+0

Đây không phải là điều bạn thường làm trong .NET. Thông thường, bạn sẽ nhập WSDL vào thời gian phát triển và có nó tạo ra một proxy của khách hàng bằng cách thêm một tham chiếu dịch vụ. Tại sao bạn cần tìm nạp WSDL khi chạy? – Thorarin

+0

Sau khi nghiên cứu thêm, tôi nghĩ nó không thực sự cần thiết. Tôi đoán tôi sẽ không cần nó và nó không hoạt động dễ dàng như vậy. – Skalli

Trả lời

8

Cách nhanh nhất để làm điều này là nhấp chuột phải vào "Thêm tham chiếu dịch vụ" trong dự án của khách hàng của bạn trong Tham khảo. Chỉ đối thoại ở vị trí của WSDL và nhấn Go:

enter image description here

URL tôi đã sử dụng được cho phong cách của một tài liệu tham khảo phục vụ NET, bạn sẽ cần phải thay thế với bất cứ mục đích sử dụng dịch vụ SOAP PHP của bạn để lộ WSDL của nó.

Thực hiện việc này sẽ tạo proxy phía máy khách mà bạn có thể khởi tạo để giao tiếp với dịch vụ web của mình.

Để truy cập vào dịch vụ thì bạn có thể làm điều gì đó tương tự (mặc dù thực hiện cụ thể của bạn sẽ không được như vậy):

MyService.MyWebServiceSoapClient ws = new MyService.MyWebServiceSoapClient(); 
string result ws.DoThing(); 

Đặc biệt chú ý đến SoapClient một phần của tên lớp proxy, điều này được thêm vào tên của tên dịch vụ xà phòng bằng trình tạo mã proxy.

Trình tạo proxy cũng sẽ tạo tất cả cấu hình cần thiết trong tệp web.config hoặc app.config của bạn.

+0

Trong khi tôi đồng ý rằng đây là cách nhanh nhất để sử dụng dịch vụ, OP đã yêu cầu cụ thể tải WSDL khi chạy. – Thorarin

+2

@thorarin - trong khi điều đó có thể đúng, anh ta cũng có thể nghĩ rằng các lớp xà phòng được xây dựng động (kiểu như VB6/VBScript SOAP SDK kiểu sau) mỗi khi bạn cần sử dụng điểm cuối và có thể không biết rằng tạo một proxy chỉ một lần. – Kev

+0

Đúng là tôi đang xem xét thời gian chạy. Nhưng tôi dành nhiều thời gian cho nghiên cứu và tôi nghĩ rằng tôi sẽ đi với việc nhập khẩu. Một lưu ý khác: Add Service Reference không hoạt động như thế trong trường hợp của tôi. Tôi phải đi qua hộp thoại 'Nâng cao' và Thêm Tham chiếu Web. Nó nói .NET 2.0 tương thích. Không nhìn tối ưu với tôi. – Skalli

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