Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

MCTS – Configuration Files

Bir kurulumda uygulamayı kullanıcı ihtiyaçlarına göre yüklemek , deneme sürümü olarak kullanıcıların kullanabilmesini sağlamak günümüzde oldukça önemli bir yere sahiptir. Kurulumun kolay,hızlı ve ihtiyaca uygun olması gerekir.

Hard-coding yapmayı engellemek için run-time da değişebileceğini tahmin ettiğimiz değerleri  konfigurasyon dosyasının bir parçası olan application settings dosyasına yapmalıyız.

System.Configuration namespace’i konfigürasyonu yönetmemiz için geliştirilmiş bir kütüphanedir.

//Mevcut exenin config dosyasını açmak

Configuration cs1 = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

//Bilgisayarın machine.config dosyasını açmak

Configuration cs2 = ConfigurationManager.OpenMachineConfiguration();

 

//Belli bir path deki config dosyasını açmak

ExeConfigurationFileMap myMap = newExeConfigurationFileMap();

myMap.ExeConfigFilename = @”ileriWindowsForms.exe.config”;

Configuration cs3 = ConfigurationManager.OpenMappedExeConfiguration(myMap, ConfigurationUserLevel.None);

//Bütün cs ler mantık olarak aynı şeyi yapar. Konfigurasyon dosyasının değerlerini nesneye dönüştürür.

 

Uygulamanın genel ayarları bu config dosyasında tutulabilir.Configuration tagı altında bu ayarlar yapılabilir.Örneğin uygulamanın kullandığı .NET Framework versiyonu bu dosyada belirlenebilir. Uygulamanın .NET 1.1 ile çalışmasını garanti etmek için aşağıdaki gibi bir yapılandırma ayarı yapmamız gerekir.Eğer bunu yapmazsak default olarak sistemde yüklü olan en son versiyon ile çalışır.
<startup>

<supportedRuntime version=v1.1.4322/>

startup>

Diğer genel bir konfigurasyon ayarı ise bir shared assembly kullanımı ve assembly’i GAC a yüklemektir. Bunu da   developmentMode tagı ile yapıyoruz.
<runtime>

<developmentMode developerInstallation=true/>

runtime>

 

Bir dll’in bir versiyonunu runtime’da yüklemek için aşağaki tagları kullanabiliriz.

<runtime>

<assemblyBinding xmlns=schemaname>

<dependentAssembly>

<assemblyIdendity name=myprogram publicKeyToken=xxxxxxxxx culture=en-us/>

<codeBase version=x.0.0.0 href=http://koraykirdinli.blogcu.com/aa.dll/>

dependentAssembly>

assemblyBinding>

runtime>

AppSettings tagları arasına uygulama ile ilgili spesifik ayarlar , ConnectionStrings taglarının arasına ise veritabanı bağlantı stringleri eklenir. AppSettings bir NameValue collection’dır fakat ConnectionStrings ConnectionStringSettingsCollection’dır.

//Tum AppSettings i okumak

NameValueCollection AllAppSettings = ConfigurationManager.AppSettings;

Int32 Counter = 0;

IEnumerator SettingsEnumerator = AllAppSettings.Keys.GetEnumerator();

while (SettingsEnumerator.MoveNext())

{

Console.WriteLine(“Item {0}Value {1}”,AllAppSettings.Keys[Counter],AllAppSettings[Counter]);

}

 

Application setting lerde bir web servisin URL bilgisi, remooting ayarları, vs gibi bilgiler tutulabilir.Bunları elle yazabileceğimiz gibi projeye bir settings dosyası ekleyip bu değişkenleri buradan ekleyebiliriz. Daha sonra proje build olduğunda bu değişkenler için bir sınıfı .NET bizim adımıza eklemiş olur.

[global::System.Configuration.UserScopedSettingAttribute()]

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

[global::System.Configuration.DefaultSettingValueAttribute(http://koray.com&#8221;)]

publicstring WebServiceURL {

    get {

        return ((string)(this[“WebServiceURL”]));

    }

    set {

        this[“WebServiceURL”] = value;

    }

}

//Aşağıdaki şekilde setting lere erişlebilir.

Settings1 s = newSettings1();

s.WebServiceURL;

 

Özellikler remooting yaparken dll leri client makinada değil daha güçlü server makinada çalıştırarak performans kazanabiliriz. Aşağıdaki konfigurasyon ayarı servera componenti register eder.
  <system.runtime.remoting>

<service>

<wellknown type=FullyQualifiedName,AssemblyName mode=Singleton objectUri=MyClass.rem/>

service>

system.runtime.remoting>

 

.NET Framework Configuration Tool :
Bu araç ile GAC,assembly’leri ve kod erişim yetkilerini yönetebiliriz. Ayrıca remoote servisleri ayarlayıp uygulamaları yönetebiliriz.

 

 

 

 

 

Installer

 

.NET Framework içerisinde uygulamaları kullanıcıya özel olarak yükletebilmek için Install sınıfını kullanırız.
Installerlar ne işe yarar.

–        Uygulamaya profosyonel bir görünüm kazandırır

–        Kullanıcının basit bir şekilde uygulamanın istediği özelliklerini yüklemesini sağlar.

–        Silme işlemi yaptırılır.

–        Özel ayarların yapılabilmesini sağlar(Web servis URLsi veya server adı gibi.

 

 Bu sınıf base sınıftır ve AssemblyInstaller ve ComponentInstaller olmak üzere 2 alt sınıfı mevcuttur.

Bir installer yaratmak için şu adımları takip etmeliyiz.

–        Bir installer sınıfı yaratırız.

–        Install,Commit,Rollback,Uninstall sınıflarını override ederiz.

–        [RunInstallerAttribbute=true] olarak set edilir.

InstalUtil.exe gibi bir program ile installer invoke edilir.

June 1, 2010 - Posted by | C# | , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s