Bir WCF hizmeti oluşturmak için WSDL dosyası nasıl kullanılır (arama yapmayın)


100

Eski bir WSDL dosyam var ve bu WSDL dosyasına dayalı bir sunucu oluşturmak istiyorum.

WSDL bir ASMX'ten üretilmiştir (sanırım ama emin değilim).

Bunu nasıl başarabilirim ?


OP'nin WSDL'ye dayalı bir müşteri yaratması gerektiğini düşündüğü orijinal soru .

Yanıtlar:


112

Svcutil kullanarak, WSDL'den arayüzler ve sınıflar (veri sözleşmeleri) oluşturabilirsiniz.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

Bu, gerekli tüm öğeleri içeren C # 'da "your.cs" (veya VB.NET'te "your.vb") adlı bir dosya oluşturacaktır.

Şimdi, servis arayüzünü (IServiceInterface) - veya çeşitli servis arayüzlerini - uygulayacak bir "MyService" sınıfı oluşturmanız gerekir ve bu sizin sunucu örneğinizdir.

Artık bir sınıf kendi başına gerçekten yardımcı olmuyor - hizmeti bir yerde barındırmanız gerekecek. Hizmeti barındıran kendi ServiceHost örneğinizi oluşturmanız, uç noktaları yapılandırmanız vb. Gerekir - veya hizmetinizi IIS içinde barındırabilirsiniz.


Aynı şeyi svcutil ile denedim, ancak hatalarla pek başarılı olamadım. Sorunum
Juri

15
Benimkinin çalışması için ihtiyacım olan şey "svcutil your.wsdl your.xsd"! Teşekkürler!
Tim Lewis

3
Wsdl ve xsd'yi svcutil'in beğeneceği bir formatta indirmek hakkında bilgi için bu SO yanıtına bakın. stackoverflow.com/questions/286657/…
Brett Widmeier

@marc_s Bunu WSDL dosyamla kullandığımda, bazı öğeleri çok garip bir şekilde yeniden adlandırıyor gibi görünüyor, öyle ki sunucuma gelen istekler bile kabul edilmeyecek. Bu normal mi?
Arj

@Arjun: hayır - bu, ilgili tüm gerçekleri bir araya getirmeniz ve Stackoverflow'da bir soru sormanız gerekiyor gibi görünüyor ! :-)
marc_s

41

Ne arayacağınızı biliyorsanız, orada iyi kaynaklar var. "Önce Sözleşme" ve WCF'yi deneyin. veya "WSDL First" ve WCF.

İşte bir seçim:


3
WSDL-First makalesine Temel genel bakışı takip eden herkese : Bahsedilen yorumu not alın ReplyAction="*". Görünüşe göre bundan kurtulman gerekiyor. Bu yorumdan mantık sağlayan bir dizi açıklama var, ama ben okumadım.
dan-gph

30

/scWCF sözleşmelerini oluşturmak için anahtarla svcutil.exe'yi kullanın . Bu, projenize ekleyebileceğiniz bir kod dosyası oluşturacaktır. Hizmetinizi oluşturmak için ihtiyacınız olan tüm arayüzleri ve veri türlerini içerecektir. /oAnahtarı kullanarak çıktı konumunu değiştirin veya dosyayı svcutil.exe'yi çalıştırdığınız klasörde bulabilirsiniz. Varsayılan dil C # olmakla birlikte (ben hiç denemedim) bunu kullanarak değiştirebilmelisiniz /l:vb.

svcutil /sc "WSDL file path"

WSDL'nizin destekleyici XSD dosyaları varsa, bunları WSDL'den sonra bağımsız değişken olarak iletin.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

Ardından hizmetiniz olan yeni bir sınıf oluşturun ve az önce oluşturduğunuz sözleşme arayüzünü uygulayın.


Ayrıca bakınız: Bir başkasının
WSDL'sinin

7

İstemci kodunu oluşturmak için svcutil.exe'yi kullanabilirsiniz. Bu, hizmet sözleşmesinin tanımını ve gerekli tüm veri sözleşmelerini ve arıza sözleşmelerini içerir.

Ardından, müşteri kodunu silmeniz yeterlidir: hizmet sözleşmelerini uygulayan sınıflar. Daha sonra bunları hizmetinizde kendiniz uygulamanız gerekecektir.


4

Visual Studio'daki "Hizmet Başvurusu Ekle" aracını kullanarak adresi şu şekilde ekleyebilirsiniz:

file: ///path/to/wsdl/file.wsdl

Ve düzgün bir şekilde yüklenecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.