2011-05-12 23 views
6

Ben .NET 4.0 WCF ile başlarken sorun yaşıyorum. PHP küçük SABUN Sunucusu oluşturdukWCF ile C# bir SOAP istemci uygulama ve .NET 4.0

: Bu benim durumdur. Bu Sunucuya bağlanmak ve SOAP iletişimini başlatmak istediğim bir C# projem var. Benim sorundur

, nasıl C# bunu yapmak hiçbir fikrim yok. WCF'ye doğru girişi bulamıyorum. Bunu yapmanın yolları var. Ancak C# projeme eklemek için doğru sınıfları ve referansları bulamıyorum. Bu öğreticiler C# içinde nasıl elde edilir? Çok araştırdım ve bana yardımcı olan hiçbir şey bulamadım.

Ben, çalışma zamanında benim SABUN Server WSDL yüklemek SABUN isteği yapmak, cevabı almak ve yapılmasını istemezsiniz. Ama nereden başlayabilirim? WCF ile ilgili MSDN sitesi sadece beni daha fazla karıştırıyor.

Edit: Muhtemelen WSDL dosyasını çalışma zamanında almak gerekli değildir. Yani artık buna gerek yok.
Sınıfı oluşturmak ve projeme yerleştirmek için svcutil kullandım. Bunu henüz test edemedim, çünkü MySQL veritabanıyla ilgili bir sorunum var (Çalışıyor ve mysql komut satırı aracı veya mysqladmin'den erişilebiliyor, ancak başka bir programla bağlanamıyorum ...) . Çalışırsa, en kısa sürede geri bildireceğim.

Edit 2: Kevs yaklaşımını takip ettim ve sonunda çok iyi sonuç verdi. Son problemim, Service Class'ı bir DLL'de kullandım. Ben de DLL kullanılan programm app.config gerekli. Bunu yaptıktan sonra iyi çalıştı.

+0

Bu, genellikle .NET'te yapacağınız bir şey değil. Normalde, WSDL'yi geliştirme zamanında içe aktarır ve bir hizmet referansı ekleyerek bir istemci proxy'si oluşturmanızı sağlar. Neden çalışma zamanında WSDL'yi almanız gerekiyor? – Thorarin

+0

Daha fazla araştırma yaptıktan sonra bunun gerçekten gerekli olmadığını düşünüyorum. Sanırım buna ihtiyacım yok ve bu şekilde işe yaramıyor. – Skalli

cevap

8

Bunu yapmanın en hızlı yolu sağ tıklayıp Başvurular altında müşterinizin projesinde "Servis Add Reference" yapmaktır. WSDL yerde diyalog ve çek git:

enter image description here

Bir .NET servisi referans stili için, ne olursa olsun PHP SOAP hizmeti kullanımları değiştirmeniz gerekir edildi kullanılan URL WSDL'yi açığa çıkarmak için.

Bunu yapmanız, web hizmeti ile iletişim kurmak için örneğini bir istemci tarafı vekil üretecektir.

sonra (özel uygulama aynı olmayacak olsa da) gibi bir şey yapabilirsiniz hizmetine erişmek için:

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

vekil sınıf adının SoapClient kısmına özellikle dikkat edin, bu ilave edilir proxy kod üreticisi tarafından sabun servisinin ismine.

Vekil jeneratör, web.config veya app.config dosyanızdaki gerekli tüm yapılandırmaları da oluşturacaktır.

+0

Bu hizmeti kullanmanın en hızlı yolunun bu olduğunu kabul etmeme rağmen, OP özellikle çalışma zamanında WSDL'yi yüklemeyi talep etti. – Thorarin

+2

@thorarin - bu doğru olabilirken, aynı zamanda sabun sınıflarının son noktayı kullanmanız gerektiğinde her zaman dinamik olarak (geç VB6/VBScript SOAP SDK stili gibi) oluşturulduğunu ve olabileceğinin farkında olmayabilir. Sadece bir kez bir proxy oluştur. – Kev

+0

Çalışma zamanı nesline baktığım doğru. Ama araştırmaya daha fazla zaman harcıyorum ve sanırım ithalatla gideceğim. Başka bir not: Servis Referansı Ekle, benim durumumda böyle işe yaramadı. 'Gelişmiş' iletişim kutusundan ve Web Referansı Ekle'den geçmem gerekiyordu. .NET 2.0 uyumlu dedi. Bana en uygun gözükmedi. – Skalli