Çok ayrıntılı SOAP hizmetlerine sahip bir 3. taraf sağlayıcısına dayanan bir uygulama oluşturma (50'den fazla WSDL dosyası konuşuyoruz). Her bir bireysel WSDL, ancak çok sayıda paylaşılan tip bildirimi vardır. Wsdl.exe ile istemci kodu oluştururken, bir tür birkaç kez bulunursa, yinelenen girdileri birleştirecek bir/sharedtypes bayrağı vardı./sharedtypes karşılığı mı?
İstemci kodumu oluşturmaya çalıştığımda, üçüncü tarafın tüm WSDL dosyalarında içerdiği örtüşen bu türlere bomba atıyorum.
Tür çarpışmalarına işaret eden hata iletilerindeki sonuçlar. Örneğin, aşağıdaki hata iletileri birkaç örnekleri:
Error: There was an error verifying some XML Schemas generated during export:
The simpleType 'http://common.soap.3rdparty.com:CurrencyNotation' has already been
declared.
Error: There was an error verifying some XML Schemas generated during export:
The complexType 'http://common.soap.3rdparty.com:NumberFormat' has already been
declared.
Ben WSDLs çıkışında üzerinde kontrole sahip değildir. WSDL dosyalarını düzenlemeye geri dönmenin çok zor olacağı, çalışma zamanında bir moda kırılan bir hatadan korkmak için el ile WSDL'leri düzenlemek zorunda kalmak istemiyorum. 200-1200 satır XML arasında değişen 50 adet WSDL dosyası olduğundan bahsetmemeliyiz. (Biz SABUN bize 90'ların sonlarında tüm geri büyük kurtuluşu olduğunu düşündüm neden tekrar hatırlat?)
Tüm wsdls yereldir, ancak bu noktanın yanındadır. Sorunum, birkaç .wsdl dosyasından geçemediğim değil. Sorun, kaynağın her bir wsdl dosyasında (veya hepsi olmasa bile) birden fazla veri türü içermesidir. Örneğin, açtığım ilk 6 wsdls’ten göz attığımda, 5’in CurrencyNotation adlı bir tür için ComplexElement girdisi var. Svcutil tüm wsdls ayrıştırmaya çalıştığında, oh hey, currencyNotation zaten var, SO SORRY diyor. BOOM. – bakasan
Yani, her bir wsdl yolunu tek tek yazmanın * .wsdl (tüm wsdls'ler yerel olarak yer alıyor) gitmekten farklı davranacağını söylüyorsunuz. Bu bizim proxy'lerin ilk nesli olduğu için, referans vermek için gerçekten bir meclise sahip değilim. Bir strateji bir wsdl'yi ayrıştırmak, bir dll'ye derlemek, sonra bir diğerine başvurmak mı? Yinelenenleri çözün, sonra durulayın ve geri kalanı için tekrarlayın? – bakasan
Tüm 50+ wsdl dosyalarının yollarını yazmaya pek hazır değildim, ancak sadece iki tanesiyle svcutil foo.wsdl bar.wsdl, aynı kopya türü mesajıyla bombalandı. Yıllar önce wsdl.exe w/pains dağıtıldıktan sonra, svcutil.exe bu gün ve yaş çok daha iyi görünmüyor görmek çok rahatlatıcı değil. : P – bakasan