2011-01-27 13 views
8

WCF ServiceContract Arabirimi'nin .NET ad alanını değiştirmenin bir yolu var, ancak yine de WCF hizmetini eski (namespace dışında) ServiceContract kullanan istemcilerle geriye dönük uyumlu hale getirmenin bir yolu var mı? Örneğin, ben (vb.net olarak) olduğunu varsayalım:Hizmeti değiştirmeden WCF ServiceContract arabiriminin ad alanını değiştirebilir miyim?

Namespace MyCompany.MyPoorlyNamedProject 
    <ServiceContract(Name:="ThingService")> _ 
    <CLSCompliant(True)> _ 
    Public Interface IThingService 
     ... 
    End Interface 
EndNamespace 

Ve ben hiç hizmet değiştirmeden

Namespace MyCompany.MyProject 
    <ServiceContract(Name:="ThingService")> _ 
    <CLSCompliant(True)> _ 
    Public Interface IThingService 
     ... 
    End Interface 
End Namespace 

için bunu değiştirmek istiyorum.

Bunu yapmayı denedim, ancak xsds'ım, wsdl'den atıfta bulunulan yeni ad alanı adını gösterir.

Herhangi bir fikrin var mı?

cevap

12

Hizmet sözleşmenizin adı ve (XML) ad alanı değişmediği sürece - elbette! WCF hizmetleri, gerçekte nasıl uygulandıklarına dair .NET içlerine önem vermiyor.

Bu istemci tarafı (hizmetin meta ayrı bir istemci tarafı proxy oluşturmak için sorguya) standart Add Service Reference yöntemi kullanarak hizmet verdiği sürece çalışır - bu durumda, istemci tarafı vekil hiçbir bilgiye sahip Hizmet tarafındaki .NET ad alanlarının ... servis tarafında bulunanları değiştirebilir ve servis dosyalarınızı yeniden düzenleyebilirsiniz - istemci çalışmaya devam edecektir.

tek yer Eğer bir ayarlama servis tarafının config yapmak gerekir (içinde ııs'deki barındırma eğer web.config yılında Barındırıcınızın en app.config aksi):

  • <service> etiketinin name= nitelik hizmet sınıfı (NET ad dahil) tam .NET tipi adı vardır

  • <endpoint> etiketinin contract= nitelik vardır (NET ad dahil) hizmeti sözleşmenin tam .NET türü adı

Eğer hizmet sözleşmesi ile ortak bir montaj paylaşırsanız Bu, belli ki, çalışmıyor - bu durumda, istemci tarafı ortak bir mecliste olanlar sözleşme dosyalarının .NET ad bağlı olacaktır ve bu değişikliklerin, istemci artık işe yaramaz ..

+0

+1 ben "Servis Add Reference" kullanmıyorum – vlad

+0

tam cevap - bu beklenmedik sonuçlar elde edildi - http://stackoverflow.com/questions bkz/1294269/alma-hatadan-koddan-güncelleme-hizmet-başvuru-alma. Belki bu yine de işe yarayacak? Yakında deneyeceğim. –

+1

@Patrick Szalapski: Peki, bu durumda, muhtemelen hizmet ve müşteri arasındaki sözleşmelerin montajını paylaşıyorsunuz değil mi? Çevresinde hiçbir şekilde - Bu durumda, ** elbette **, servis sözleşme ad alanlarını değiştirerek ** ** müşteri etkileyecektir. –

İlgili konular