2011-06-14 8 views
6

Özel eklentileri kullanarak genişletilmiş bir .NET 3.5 tabanlı çerçevem ​​var. Özet olarak, eklentiler ortak bir arayüz uygular ve çekirdek çerçeve bunları yansıtma yoluyla çağırır. Şimdi WCF hizmeti ile iletişim kuran bir eklenti gerektiren bir şartı varTasarım Sorusu - .NET App Config'i bir DLL düzeyinde kullanma

... çerçeve mükemmel çalışıyor ve tüm Ancak iyidir. Yüz değerinde bu basittir, eklentiye bir servis referansı ekleyin, istemci proxy kodunu arayın ve gidelim. Ancak ... Nedeniyle .NET yapılandırma WCF hizmeti istemci yapılandırma yürütme uygulamanın app.config içinde bulunması gerektiğini çalıştığını yolu

. Bu durumda bu benim eklenti invoker uygulamasıdır. Buradaki sorun, jenerik invoker uygulamasının artık eklenti özel konfigürasyonuna sahip olması gerektiğinden, eklentinin "modelini" kırmasıdır.

Yani soru herkes çekirdek invoker uygulama yapılandırması içine koymadan WCF hizmeti istemci yapılandırması işlemek için alternatif bir mekanizma biliyor mu?

etrafında ava yapmış olan bir DLL to use its own config file izin mekanizmalar vardır. Buradaki sorun, servis proxy oluşturmanın altta yatan koduna erişimim olmaması ve dolayısıyla yapılandırma okumalarını yeniden yönlendiremiyorum.

+0

çalıştırmak zorunda Ancak, eklenti sözleşmesini hizmet başlatmaya yönelik bir yöntem içerecek şekilde genişletmek mümkün mü? Sonra servis tabanlı eklentileriniz, genel sözleşmeye göre bu sözleşmeyi uygularlar.Bu, hizmet başlatma öğelerini eklenti geliştiricisine endişelenmeden indirmenize izin verir. Başlatma detayları –

cevap

0

cevaplama benim kendi soru:

Bu demektir - bu bunu Visual Studio tarafından oluşturulan olarak WCF yapılandırmasını içeren özel bir yapılandırma dosyası belirlemenizi sağlar Özetle

http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx

:

Burada soruna bir çözüm bulmuş görünüyor yapılandırma kolayca korunabilir.

, ben konuyu anlamada tamamen kapalı muhtemelen değilim orada burada birkaç tweaks ile o olması gerektiği gibi çalışıyor görünüyor hızlı testler birkaç ((sayfadaki yorumlara bakınız).

1

Bir WCF müşterinin son nokta yanı programlı yapılandırılabilir.

var myBinding = new BasicHttpBinding(); 
var myEndpoint = new EndpointAddress("http://localhost/myservice"); 
var client = new MyServiceClient(myBinding, myEndpoint); 

try 
{ 
    client.MyServiceOperation(); 
    client.Close(); 
} 
catch 
{ 
    if (client != null) 
    { 
     client.Abort(); 
    } 
} 

İlgili kaynaklar: Burada

bir yapılandırma dosyası için gerek kalmadan bir WCF hizmeti çalıştırmasına nasıl gösteren bir örneği

+1

Bu seçeneği dikkate aldım, ancak WCF konfigürasyonunu kullanabilme ve mevcut tüm özellikleri kullanabilme açısından yararlı olacaktır.Programatik bağlamalar vb. için gidersem, tüm ayarları kendim yönetmeliyim - anne y ayrıca gelecekteki şeyleri de kırıyor. – MrEyes

+0

Eklenti ana bilgisayarını dış eklentilerin uygulama ayrıntılarından tamamen ayrı tutmak istiyorsanız, en iyi seçeneğin ** eklenti yazarlarının ** takip etmesi için bir set tasarım yönergeleri tanımlamaktır.Bu yönergelere göre, özel yapılandırma ayarlarını nasıl kullanacaklarını açıklarsınız. özel yapılandırma dosyaları alarak ve bunları [System.Configuration] (http://msdn.microsoft.com/en-us/library/system.configuration.aspx) API'sı üzerinden okuyarak. –

+0

Çerçeve ve eklenti geliştiricisi gibi, yönergeler de kastedilmektedir :) Zaten kendi yapılandırma dosyalarını kullanan eklentilerimiz var ancak bunlar şu anda temel uygulama ayarlarını veya özel yapılandırma bölümlerini kullanıyor. WCF yapılandırması ile ilgili sorun, WCF hizmet istemcisi yapıcısını yürüten uygulama app.config öğesinin başka bir şeyi kullanmasını söylemenin bir yolunu bulamıyorum. – MrEyes