Bir web servisi yazdık ve bunu bir client uygulamasında referans olarak kullanmaya başladık. Fakat bir süre sonra bu web servisinin(*.asmx) yayın yaptığı Urladresi değişti. Bu durumda bilindiği gibi bu servisi kullanan uygulamada yeniden “Add Web Reference” menüsünden yeni Url adresini güncellememiz ve uygulamamızı recompile etmemiz gerekir. Bu işlemi yaptığımızda VS.NET, otomatik olarak gerekli proxy nesnesini oluşturur. (Ve client uygulamamız, bu proxy nesnesi üzerinden web servisiyle haberleşir.)
Her Url adresi değişikliğinde client uygulamasını yeniden derlemek deployment açısından pek mantıklı bir fikir değildir. .NET Framework, bu yönteme alternatif olarak değişikliğin kolayca yapılacağı bir yol sunar;Web servisi adresinin Web.Config dosyasına yazılması.
Bu yöntemde, Web servisinin Url adresi, doğrudan kodun içerisinde değil XML tabanlı Web.Config dosyasında tutulur. Böylece bir değişiklik olacağı sadece config dosyasında ilgili anahtarı değerini değiştirmemiz yeterli olacaktır.
Normal yöntemden farklı olarak, zaten bilgisi bizde bulunan servisin proxy nesnesinin Url adresini manual olarak Web.Config dosyasından okuyacağız. İçerisinde Service isimli classın ve onun içerisinde de HelloWorld() metodunun bulunduğu bir web servisini MyWebService ismiyle web referanslarına eklediğimizi düşünelim. Normal yöntemde bu servisi aşağıdaki gibi kullanırız.
MyWebService.Service objWS = new MyWebService.Service(); Response.Write(objWS.HelloWorld());
Bu kod yapısından sonra web servisinin Url adresinde bir değişiklik yaptığımız, uygulamamız hata verecektir. Url adresini Web.Config’te appSettings sectionunda bir değişken tutalım.
Daha sonra web servisi için proxy nesnesini oluşturduğumuzda bölümde proxnin Url property’sine bu adresi set edeceğiz. Web servisinden değer okumak için System.Configuration kütüphanesinin ConfigurationSettings sınıfından yararlanıyoruz.
MyWebService.Service objWS = new MyWebService.Service(); objWS.Url = ConfigurationSettings.AppSettings["MyServiceURL"]; Response.Write(objWS.HelloWorld());
Süper bir yazı hocam, çokta mantıklı ve kullanışlı bir yöntem. bu güzel ip ucu için teşekkürler.