<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>Fatih&#039;in Notları &#187; IIS</title> <atom:link href="http://www.enterprisecoding.com/blog/post/category/turkce/iis/feed" rel="self" type="application/rss+xml" /><link>http://www.enterprisecoding.com/blog</link> <description>Unutmamak için web defterime not düştüklerim</description> <lastBuildDate>Fri, 03 Feb 2012 21:23:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>IIS Express : Biraz Cassini, Biraz IIS</title><link>http://www.enterprisecoding.com/blog/post/iis-express-biraz-cassini-biraz-iis</link> <comments>http://www.enterprisecoding.com/blog/post/iis-express-biraz-cassini-biraz-iis#comments</comments> <pubDate>Sun, 04 Jul 2010 16:38:13 +0000</pubDate> <dc:creator>Fatih Boy</dc:creator> <category><![CDATA[IIS]]></category> <category><![CDATA[Türkçe]]></category> <guid
isPermaLink="false">/blog/post/IIS-Express-Biraz-Cassini-Biraz-IIS.aspx</guid> <description><![CDATA[Geçtiğimiz haftaya kadar asp.net geliştiriciler için geliştirme sürecinde sadece iki web sunucuyu yer almaktaydı: Visual Studio aile ile birlikte gelen ASP.Net geliştirme sunucusu Windows işletim sistemi ile birlikte gelen Internet Information Server (IIS) Her iki sunucunun da kendine göre artıları ve eksileri bulumaktaydı; fakat özellikle Visual Studio ile birlikte gelen Asp.Net geliştirme sunucusu, Cassini’nin devamı [...]
Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/microsofttan-visual-basic-net-icin-yardimci-bir-kac-program' rel='bookmark' title='Microsoft’tan Visual Basic .Net için yardımcı bir kaç program'>Microsoft’tan Visual Basic .Net için yardımcı bir kaç program</a></li></ol>]]></description> <content:encoded><![CDATA[<div
class="addthis_toolbox addthis_default_style " addthis:url='http://www.enterprisecoding.com/blog/post/iis-express-biraz-cassini-biraz-iis' addthis:title='IIS Express : Biraz Cassini, Biraz IIS '  ><a
class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a
class="addthis_button_tweet"></a><a
class="addthis_button_google_plusone" g:plusone:size="medium"></a><a
class="addthis_counter addthis_pill_style"></a></div><p>Geçtiğimiz haftaya kadar asp.net geliştiriciler için geliştirme sürecinde sadece iki web sunucuyu yer almaktaydı:</p><ul><li>Visual Studio aile ile birlikte gelen ASP.Net geliştirme sunucusu</li><li>Windows işletim sistemi ile birlikte gelen Internet Information Server (IIS)</li></ul><p>Her iki sunucunun da kendine göre artıları ve eksileri bulumaktaydı; fakat özellikle Visual Studio ile birlikte gelen Asp.Net geliştirme sunucusu, Cassini’nin devamı da diyebiliriz, yazılım geliştiricilr tarafından sıklıkla tercih edilmekteydi. Kolaylıkla bir klasörün host edilebildiği ve oldukça “light” olan bu sunucu malesef ki bu özellikleri yanında bazı dezavantajlara da sahip.</p><p>Aslında, yakından bakılacak olursak, Asp.Net geliştirme sunucusu tam bir web sunucu sayılmayacaktır. En basitinden SSL ya da url yeniden yazma gibi özellikleri barındırmamakta. İleri düzey asp.net uygulamaları geliştiriyorsanız bu eksiklikler IIS’i tercih etmenize neden olacaktır.</p><p>Öte yandan IIS’e bakacak olursanız, tam bir web sunucusudur (hatta son eklentiler ardında koşar adım bir uygulama sunucu olma yolundadır da diyebiliriz); fakat giderek artan bir karmaşıklığa sahiptir ve kullanımında en azından giriş düzeyinde bilgi sahibi olunmalıdır. Üstelik daha yönetim konsolunun açılması noktasında dahi sistem yöneticisi yetkisi istemektedir; ki bazı durumlarda büyük kurumlar için sıkıntı sebebi olmaktadır.</p><p>Microsoft, müşterilerinden gelen geri bildirimleri dikkate alarak bu iki sunucunun arasındaki boşluğu dolduracak yeni bir ürün yayınlıyor; <strong><em>IIS Express</em></strong>. Asp.Net geliştirme sunucunun kolaylığını ve IIS’in gücünü vaadeden IIS Express’in yayınlanmasını iple çekiyoruz. 10 MB gibi küçük bir kurulum dosyasıyla hızlıca kurulabilecek olan ve herhangi bir kayıt/yapılandırma gerektirmeyecek olan ürünün diğer öne çıkan özelliklerini şu şekilde sıralayabiliriz;</p><ul><li>Visual Studio içerisinde debug yapmanıza olanak verecek olan bu ürün herhangi bir yönetimsel yetki gerektirmemekte</li><li>Aralarında SSL, Url yeniden yazma, Medya ve diğer IIS 7.x ailesi modüllerinin bulunduğu geniş web server özellikleri</li><li>IIS 7.x ailesinin desteklediği aynı genişleme modeli ve web.config dosya ayarları</li><li>Windows XP ve üzeri işletim sistemi desteği</li></ul><p>&#160;</p><p>Kurulumu ardından Visual Studio 2010 ile entegre şekilde çalışabilecek olan IIS Express kullanım kolaylığı açısında Asp.Net geliştirme sunucuna çok benzemekle birlikte bizlere daha çok seçenek sunacak.</p><p>Çok yakın zamanda beta sürümü yayınlanacak olan IIS Express ile bir klasörü sanal bir dizin olarak web sunucusu üzerinde barındırmak sağ tıklama menüsündeki bir seçenekle mümkün olacak.</p><p>Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/microsofttan-visual-basic-net-icin-yardimci-bir-kac-program' rel='bookmark' title='Microsoft’tan Visual Basic .Net için yardımcı bir kaç program'>Microsoft’tan Visual Basic .Net için yardımcı bir kaç program</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://www.enterprisecoding.com/blog/post/iis-express-biraz-cassini-biraz-iis/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>IIS 7 Yöneticisi Ağaç Hiyerarşisini Genişletme</title><link>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisi-agac-hiyerarsisini-genisletme</link> <comments>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisi-agac-hiyerarsisini-genisletme#comments</comments> <pubDate>Sat, 19 Jun 2010 16:44:50 +0000</pubDate> <dc:creator>Fatih Boy</dc:creator> <category><![CDATA[IIS]]></category> <category><![CDATA[Türkçe]]></category> <category><![CDATA[C#]]></category> <guid
isPermaLink="false">/blog/post/IIS-7-Yoneticisi-Agac-Hiyerarsisini-Genisletme.aspx</guid> <description><![CDATA[Bir önceki makalemde sizlerle IIS 7 yöneticisi genişletilebilir mimarisinden ve kendi modülünüzü nasıl ekleyebileceğinizden bahsetmiştim. IIS 7 genişletilebilirlik anlamında bize pek çok yöntem sunmakta ve bu makalemde bu sizlerle IIS7 yöneticisi ağaç hiyerarşisine nasıl yeni bir girdi ekleyebileceğinizi paylaşacağım. Ağaç hiyerarşisine yeni bir girdi oluşturmak için en basit şekliyle aşağıda sıraladığım 3 temel parçacığa ihtiyaç [...]
Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek' rel='bookmark' title='IIS 7 Yöneticisine Kendi Modülünüzü Eklemek'>IIS 7 Yöneticisine Kendi Modülünüzü Eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/tip-powershell-oturumu-sistem-yoneticisi-olarak-mi-baslatilmis' rel='bookmark' title='Tip : PowerShell Oturumu Sistem Yöneticisi Olarak Mı Başlatılmış?'>Tip : PowerShell Oturumu Sistem Yöneticisi Olarak Mı Başlatılmış?</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/visual-studio-net-genisletme-paketleri-icin-tooltip-destegi' rel='bookmark' title='Visual Studio .Net genişletme paketleri için tooltip desteği'>Visual Studio .Net genişletme paketleri için tooltip desteği</a></li></ol>]]></description> <content:encoded><![CDATA[<div
class="addthis_toolbox addthis_default_style " addthis:url='http://www.enterprisecoding.com/blog/post/iis-7-yoneticisi-agac-hiyerarsisini-genisletme' addthis:title='IIS 7 Yöneticisi Ağaç Hiyerarşisini Genişletme '  ><a
class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a
class="addthis_button_tweet"></a><a
class="addthis_button_google_plusone" g:plusone:size="medium"></a><a
class="addthis_counter addthis_pill_style"></a></div><p><a
href="http://www.enterprisecoding.com/blog/post/IIS-7-Yoneticisine-Kendi-Modulunuzu-Eklemek" target="_blank">Bir önceki makalemde</a> sizlerle IIS 7 yöneticisi genişletilebilir mimarisinden ve kendi modülünüzü nasıl ekleyebileceğinizden bahsetmiştim. IIS 7 genişletilebilirlik anlamında bize pek çok yöntem sunmakta ve bu makalemde bu sizlerle IIS7 yöneticisi ağaç hiyerarşisine nasıl yeni bir girdi ekleyebileceğinizi paylaşacağım.</p><p>Ağaç hiyerarşisine yeni bir girdi oluşturmak için en basit şekliyle aşağıda sıraladığım 3 temel parçacığa ihtiyaç olacaktır;</p><ul><li><strong>Hiyerarşi Servisi</strong> : Tüm IIS 7 yönetici hiyerarşisini yöneten <em>Hiyerarşi Servisi</em> sunduğu Select, Delete, Refresh v.b. metodlar sayesinde programsal olarak hiyerarşiye müdahale edilmesine olanak sunmaktadır. Arayüz tarafından bizlere bir örneği verilen bu servise <em>ServiceProvider</em> üzerinden ulaşılabilir.</li><li><strong>Hiyerarşi Bilgisi</strong> : Ağaç üzerindeki bir düğümü temsil eden <em>Hiyerarşi Bilgisi,</em> temelde abstract olan <em>Microsoft.Web.Management.Client.HierarchyInfo</em> sınıfınden türetilen bir sınıftır. <em>HierarchyInfo</em>‘dan kalıtılmış metodlar yardımıyla alt düğümlerin bulunup bulunmadığı, düğümün adı gibi bilgileri verebilir ve seçildiğinde,silindiğinde ya da yeniden adlandırıldığında yapılacak olan işlemlerimizi yerine getirebiliriz.</li><li><strong>Hiyerarşi Sağlayıcısı</strong> : IIS 7 Yöneticisi ağaç hiyerarşisini genişletmekte giriş noktanız olan Hiyararşi Sağlayıcısı, temelde abstract <em>Microsoft.Web.Management.Client.HierarchyProvider</em> sınıfından türetilen bir sınıftır. Ağaç hiyerarşisi oluşturulurken hiyerarşi servisi tüm kayıtlı hiyerarşi sağlayıcılarını dolaşarak ağacı oluşturur.</li></ul><p>Konuyu pekiştirmek için yazımın devamında yer vereceğim örnek kodlar <a
href="http://www.enterprisecoding.com/blog/post/IIS-7-Yoneticisine-Kendi-Modulunuzu-Eklemek" target="_blank">IIS 7 Yoneticisine Kendi Modulunuzu Eklemek</a> başlıklı yazımında ele aldığım örnek projenin devamı olacaktır. Bu sebeple bir modülü IIS&#8217; yöneticisine nasıl kayıt edeceğiniz ve nasıl debug edebileceğiniz gibi ayrıntıları bildiğinizi yada <a
href="http://www.enterprisecoding.com/blog/post/IIS-7-Yoneticisine-Kendi-Modulunuzu-Eklemek" target="_blank">bir önceki makalemi</a> okuduğunuzu varsayıyorum.</p><p>Yukarıdaki teorik bilgi ışığında örnek kodumuzu yazmaya başlayalım. Oluşturacağımız ilk sınıf Hiyerarşi bilgisini verecek olan <em>OrnekHiyerarsiBilgisi</em> sınıf olacaktır.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekHiyerarsiBilgisi : HierarchyInfo {
    public OrnekHiyerarsiBilgisi(IServiceProvider serviceProvider) : base(serviceProvider) { }
    public override string NodeType {
        get { return &quot;Enterprisecoding.IISManagerModule.Ornek&quot;; }
    }
    public override bool SupportsChildren {
        get { return false; }
    }
    public override string Text {
        get { return &quot;Ornek IIS Modülü&quot;; }
    }
    protected override bool OnSelected() {
        return Navigate(typeof(OrnekModulSayfasi));
    }
}</pre><p><em>HierarchyInfo</em>&#160; sınıfından türettiğimiz <em>OrnekHiyerarsiBilgisi</em> sınıfında atadan kalıtılan aşağıdaki özellik ve metodlar kullanılarak hiyerarşi servisince kullanılacak bilgiler verilmiştir.</p><ul><li><strong>SupportsChildren</strong>; bool türünden olan bu özellik hiyerarşi servisince düğümümüze bağlı alt düğümler bulunup bulunmadığının sorgulanması için kullanılmaktadır. Bu örnekte varsayılan olan döndüğümüz false değeri bağlı herhangi bir alt düğüm bulunmadığını belirtmektedir.</li><li><strong>Text</strong>; string türünden olan bu özellik hiyerarşi servisinin düğümümüzü arayüzde hangi isimle göstereceğini belirtmek için kullanılır. Örneğimizde düğümümüz arayüzde &quot;<em>Ornek IIS Modülü</em>&quot; ismiyle gösterilecektir.</li><li><strong>NodeType</strong>; string türünden olan bu özellik programsal olarak düğümümüzün hangi türde olduğunu belirtmek ve düğüm türüne göre işlem yapabilmek amacıyla kullanılır. Bu örnek için <em>Enterprisecoding.IISManagerModule.Ornek</em> değerine sahiptir. Bu özelliğe düğüm türünüzü belirten tekil herhangi bir string verilebilir.</li><li><strong>OnSelected</strong> : IIS 7 yönetim konsolu üzerinden kullanıcının düğümümüzü seçmesi durumunda hiyerarşi servisince çağırılacak olan bu metod bize kendi iş mantığımızı çalıştırma imkanı sunmaktadır. Bu örnekte düğümümüz seçildiğinde IIS 7 yönetim konsolunda bir önceki makalemde oluşturduğumuz örnek modül sayfası gösterilecektir.</li></ul><p>Bu özellikler ve metodlar dışında <em>SupportsDelete</em> ve <em>SupportsRename</em> özellikleri sayesinde düğümün silme ve yeniden adlandırma fonksiyonaliteleri olup olmadığını belirtebilir ve <em>OnDeleting</em>, <em>OnRenamed</em>, <em>OnRenaming</em> gibi metodlarla da bu fonksiyonaliteleri kontrol edebilirsiniz.</p><p>Oluşturacağımız bir diğer sınıf ise <em>OrnekHiyerarsiBilgisi</em> sınıf örneğini hiyerarşi servisine tanıtacağımız hiyerarşi sağlayıcısıdır.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekHiyararsiSaglayicisi : HierarchyProvider {
    public OrnekHiyararsiSaglayicisi(IServiceProvider serviceProvider)
        : base(serviceProvider) {
    }
    public override HierarchyInfo[] GetChildren(HierarchyInfo item) {
        if (item.NodeType == HierarchyInfo.ServerConnection) {
            return new HierarchyInfo[] { new OrnekHiyerarsiBilgisi(this) };
        }
        return null;
    }
}</pre><p>Yukarıda mümkün olduğunca basit bir şekilde <em>OrnekHiyararsiSaglayicisi</em> sınıfı ile örneklediğim hiyerarşi sağlayıcısı HierarchyProvider sınıfında kalıtarak kullandığı <em>GetChildren</em> metodu ile hiyerarşi servisine gerekli hiyerarşi bilgilerini dönmektedir.</p><p>GetChildren metodu parametre olarak kabul ettiği hiyerarşi bilgisi yardımıyla hangi noktada bulunduğunu hiyerarşi servis sınıfından öğrenerek karar vermenizi sağlamaktadır. Yukarıdaki örnekte biraz önce oluşturduğumuz OrnekHiyerarsiBilgisi sınıfının sadece sunucu seviyesinde kullanıması sağlanmakta.</p><p>Hiyerarşi bilgisi ve hiyerarşi sağlayıcısı sınıflarını oluşturarak işin önemli bir kısmını tamamlamış oluyoruz. Bu noktada artık modülümüz içerisine giderek hiyerarşi sağlayıcısını tanıtmalıyız. Aşağıda bir önceki makalemde oluşturduğumuz OrnekModul sınıfı içerisinde yer alan initialize metodunu görebilirsiniz.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekModul : Module
{
    protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo)
    {
        base.Initialize(serviceProvider, moduleInfo);
        // ....
        //modül ile ilgili yapılan diğer ilklendirme işlemleri
        // ....
        var extensibilityManager = (IExtensibilityManager)GetService(typeof(IExtensibilityManager));
        extensibilityManager.RegisterExtension(typeof(HierarchyProvider), new OrnekHiyararsiSaglayicisi(serviceProvider));
    }
}</pre><p>Not; Hiyerarşi sağlayıcısını kayıt ettirdiğimiz bölüme odaklanabilmek için bir önceki makalemde&#160; bahsetmiş olduğum bunun dışındaki bölümlere yer vermiyorum.</p><p>Gördüğünüz gibi hiyerarşi sağlayıcısını kayıt etmek bu kadar kolay.</p><p>Kodumuzu derledikten sonra IIS yöneticisi konsolunu açtığımızda sol tarafta yer alan ağaç içerisinde oluşturduğumuz düğümü görebilir, bu düğümü seçtiğimizde ise daha önceden oluşturduğumuz modül sayfasının açıldığını test edebiliriz.</p><p><a
class="highslide img_5"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/OzellestirilmisAgacDugumu.png" getparams="null" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS Yöneticisi Özelleştirilmiş Ağaç Düğümü" border="0" alt="IIS Yöneticisi Özelleştirilmiş Ağaç Düğümü" src="http://www.enterprisecoding.com/blog/wp-content/uploads/OzellestirilmisAgacDugumu_thumb.png" width="443" height="291" /></a></p><p>Şimdi de isterseniz bu düğümün menüsüne yeni girdiler eklemeye çalışalım. Hiyerarşi servisi bir düğüme sağ tıklandığında gösterilecek olan menüye ait girdileri ilgili hiyerarşi bilgisi sınıfında yer alan <em>Tasks</em> özelliği sayesinde bulur. <em>TaskListCollection</em> türünden olan bu özellikte eklenecek olan tasklar <em>Microsoft.Web.Management.Client.TaskList</em> sınıfından türetilmiş bir sınıf vasıtasıyla eklenebilir.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekHiyerarsiTaskListesi : TaskList {
    public override System.Collections.ICollection GetTaskItems(){
        var items = new ArrayList();
        var taskItem = new MethodTaskItem(
                            &quot;MesajGoster&quot;,      // Metod Adı
                            &quot;Mesaj Göster&quot;,     // Menüde görülecek text
                            &quot;OrnekKategori&quot;);   // Kategori
        taskItem.Enabled = true;
        items.Add(taskItem);
        return items;
    }
    public void MesajGoster() {
        MessageBox.Show(&quot;Mesaj Göster'e butonuna basıldı&quot;);
    }
}</pre><p>Yukarıda yer alan ve TaskList’ten türetilmiş olan OrnekHiyerarsiTaskListesi sınıfında task tanımlaması GetTaskItems metodu içerisinde yapılmaktadır. Bu örnekte <em>MethodTaskItem</em> kullanılarak Mesaj Göster task’ı oluşturulmuştur. MethodTaskItem sınıfı oluşturulurken sırasıyla task’ın çalıştırılacağı metod adı, menüde gösterilecek text ve task’ın ait olduğu kategori adı verilmiştir. Verilen ilk parametre olan metod adı, task menüden seçildiğinde çalıştırılacak olan metodun adıdır. Parametresiz olması gereken bu metod ilgili sınıfta tanımlı olmalıdır. Yukarıdaki örnekte metod adı olarak MesajGoster verildiği ve bu metodun sınıf içerisinde tanımlandığı.</p><p><a
class="highslide img_6"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/AgacDugumuMenu.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Özelleştirilmiş Ağaç Düğümü Menü" border="0" alt="Özelleştirilmiş Ağaç Düğümü Menü" src="http://www.enterprisecoding.com/blog/wp-content/uploads/AgacDugumuMenu_thumb.png" width="443" height="291" /></a></p><p>Örnekte, kullanıcı menüden <em>Mesaj göster</em> seçeneğini seçtiğinde <em>MesajGoster</em> metodu çalıştırılarak kullanıcıya &quot;<em>Mesaj Göster’e butonuna basıldı</em>&quot; mesajı gösterilecektir.</p><p>Bazı tasarımlarda, eklediğimiz menü nesnesinin kullanacağı metoda parametre geçmek isteyebiliriz. Örneğin; aynı metodu kullanan birden fazla menü nesnesinden hangisinin çağrıyı tetiklediğini bilmek. Bunu yapabilmek için MethodTaskItem sınıfı oluşturulurken kullanıcı verisi geçebileceğimiz constructer’ını kullanmamız yeterli olacaktır.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekHiyerarsiTaskListesi : TaskList {
    public override System.Collections.ICollection GetTaskItems() {
        var items = new ArrayList();
        var taskItem1 = new MethodTaskItem(
                            &quot;MesajGoster&quot;,      // Metod Adı
                            &quot;Mesaj Göster 1&quot;,   // Menüde görülecek text
                            &quot;OrnekKategori&quot;,    // Kategori
                            &quot;Mesaj gösterir&quot;,   // Tanımlayıcı bilgi
                            null,               // Menüdeki resmi
                            &quot;Mesaj Göster 1&quot;);  // Parametre
        var taskItem2 = new MethodTaskItem(
                            &quot;MesajGoster&quot;,      // Metod Adı
                            &quot;Mesaj Göster 2&quot;,   // Menüde görülecek text
                            &quot;OrnekKategori&quot;,    // Kategori
                            &quot;Mesaj gösterir&quot;,   // Tanımlayıcı bilgi
                            null,               // Menüdeki resmi
                            &quot;Mesaj Göster 2&quot;);  // Parametre
        taskItem1.Enabled = true;
        taskItem2.Enabled = true;
        items.Add(taskItem1);
        items.Add(taskItem2);
        return items;
    }
    public void MesajGoster(object message) {
        MessageBox.Show(string.Format(&quot;{0}'e basıldı&quot;, message));
    }
}</pre><p>MethodTaskItem sınıfının object olarak kullanıcı verisini kabul eden constructer’ı yardımıyla metoda geçmek istediğimiz veriyi belirtebiliriz. Yalnız dikkat edilmesi gereken nokta, bu kullanımda bir öncekinden farklı olarak çağırılacak olan metodun parametresiz değil object kabul eden tek parametreli bir metod olması gerekmektedir. Yukarıdaki örnekte görüldüğü gibi her iki menü nesnesi de aynı metodu kullanmakta, metod kendisine gönderilen parametre doğrultusunda hangi menü nesnesince çağrıldığını bilmekte.</p><p>Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek' rel='bookmark' title='IIS 7 Yöneticisine Kendi Modülünüzü Eklemek'>IIS 7 Yöneticisine Kendi Modülünüzü Eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/tip-powershell-oturumu-sistem-yoneticisi-olarak-mi-baslatilmis' rel='bookmark' title='Tip : PowerShell Oturumu Sistem Yöneticisi Olarak Mı Başlatılmış?'>Tip : PowerShell Oturumu Sistem Yöneticisi Olarak Mı Başlatılmış?</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/visual-studio-net-genisletme-paketleri-icin-tooltip-destegi' rel='bookmark' title='Visual Studio .Net genişletme paketleri için tooltip desteği'>Visual Studio .Net genişletme paketleri için tooltip desteği</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisi-agac-hiyerarsisini-genisletme/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>IIS 7 Yöneticisine Kendi Modülünüzü Eklemek</title><link>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek</link> <comments>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek#comments</comments> <pubDate>Thu, 17 Jun 2010 16:19:20 +0000</pubDate> <dc:creator>Fatih Boy</dc:creator> <category><![CDATA[IIS]]></category> <category><![CDATA[Türkçe]]></category> <category><![CDATA[C#]]></category> <guid
isPermaLink="false">/blog/post/IIS-7-Yoneticisine-Kendi-Modulunuzu-Eklemek.aspx</guid> <description><![CDATA[IIS 7 ile birlikte Microsoft IIS Yönetici konsolunda radikal değişiklikler yaptı. Eskisi gibi sabit, sadece Microsoft destekli bir yönetim konsolu kabuğundan sıyrılarak genişletilebilir ve arkasınd topluluk desteği olan bir yönetim konsolu haline geldi. Bu sayede 3. parti geliştiriciler piyasa ihtiyaçları doğrultusunda IIS yönetim konsolu eklentileri çıkartabilmekte, özel kurumlar kendi eklentilerini kullanmakta. Bu makalemde sizlere IIS [...]
Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/tasarim-zamaninda-usercontrole-bilesen-eklemek' rel='bookmark' title='Tasarım-Zamanında UserControl’e bileşen eklemek'>Tasarım-Zamanında UserControl’e bileşen eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/dinamik-olusturulan-kodlara-debug-bilgisi-eklemek' rel='bookmark' title='Dinamik Oluşturulan Kodlara Debug Bilgisi Eklemek'>Dinamik Oluşturulan Kodlara Debug Bilgisi Eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/x64-uzerinde-appfabric-caching-referanslarini-eklemek' rel='bookmark' title='x64 üzerinde AppFabric Caching referanslarını eklemek'>x64 üzerinde AppFabric Caching referanslarını eklemek</a></li></ol>]]></description> <content:encoded><![CDATA[<div
class="addthis_toolbox addthis_default_style " addthis:url='http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek' addthis:title='IIS 7 Yöneticisine Kendi Modülünüzü Eklemek '  ><a
class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a
class="addthis_button_tweet"></a><a
class="addthis_button_google_plusone" g:plusone:size="medium"></a><a
class="addthis_counter addthis_pill_style"></a></div><p>IIS 7 ile birlikte Microsoft IIS Yönetici konsolunda radikal değişiklikler yaptı. Eskisi gibi sabit, sadece Microsoft destekli bir yönetim konsolu kabuğundan sıyrılarak genişletilebilir ve arkasınd topluluk desteği olan bir yönetim konsolu haline geldi. Bu sayede 3. parti geliştiriciler piyasa ihtiyaçları doğrultusunda IIS yönetim konsolu eklentileri çıkartabilmekte, özel kurumlar kendi eklentilerini kullanmakta.</p><p>Bu makalemde sizlere IIS 7.0’dan itibaren bizlere sunulan bu yeni IIS yönetim konsolu eklenti yapısını anlatarak C# ile nasıl kendi eklentilerinizi geliştirebileceğinizi paylaşacağım.</p><p>İsterseniz öncelikle IIS yönetici modül bileşenlerini tanıyalım. IIS yöneticisi modülleri en basit şekliyle aşağıdaki 3 temel parçadan oluşmaktadır;</p><ul><li><strong>Modül</strong> : Kendi yazdığımız IIS yönetici modülün giriş noktası olan modül sınıfı <em>Microsoft.Web.Management.Client.Module</em> sınıfından türemelidir. Bu sınıf, modülümüz içerisindeki gerekli ilklendirmeleri, modül arayüzünün kaydını v.b. işlemlerimizi yapabileceğimiz bir giriş noktası olacaktır. Bu işlemlerinizi yapmak için en uygun yer <em>Module</em> sınıfından gelen <em>Initialize</em> fonksiyonudur.</li><li><strong>Modül Sağlayıcısı</strong> : Modülümüz hakkında bazı temel bilgileri verebilmemizi sağlayan modül sağlayıcısı sınıfı <em>Microsoft.Web.Management.Server.ModuleProvider</em> sınıfından türemelidir. Bu sınıf içerisinde modülümüzü, hangi seviyede IIS yöneticisinde işlem yapacağını (uygulama, site, sunucu gibi), modül sağlayıcımızla ilişkilendirilmiş modül hizmetimizi belirtebiliriz.</li><li><strong>Modül Sayfası</strong> : Modülümüzün arayüzünü, dolayısıyla da pek çok fonksiyonalitesi sunan modül sayfası <em>Microsoft.Web.Management.Client.Win32.ModulePage</em> sınıfından türemelidir. Modülümüzün kullanıcıyla etkileşimini sağlayan modül sayfası aslında bir Windows Forms sınıfıdır dolayısıyla aynı bir masaüstü uygulamasında olduğu gibi arayüz bileşenleri kullanılabilir.</li></ul><p>&#160;</p><p>Pek çok IIS yöneticisi modülü yukarıdaki 3 temel bileşeni kullanmakla birlikte IIS yöneticisini genişletebilmek için bize sunulan başka bileşenlerde bulunmaktadır. Yukarıdaki bileşenlerden yola çıkarak basit bir modül yazacağımız bu makalem dışında takip eden makalelerde diğer bileşenlere de değinmeye çalışacağım.</p><p>IIS yöneticisi, tanımlı modüller hakkında ilk bilgiyi <em>Administration.config</em> dosyasında bulmaktadır. Bu dosya içerisinde yer alan <em>moduleProviders</em> bölümü altında modül isimleri ve bu modüllerin giriş noktası olan sınıfları listelenmetedir. IIS yönetici konsolu listelenen modülleri reflection kullanarak yüklemektedir. Bir modülün yüklenebilmesi için mutlaka GAC’ta bulunmalıdır.</p><p>Modülümüzü oluşturmak için işe Visual Studio’da yeni bir sınıf kütüphanesi (Class Library) oluşturarak başlayacağız;</p><p><a
class="highslide img_29"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/yeniSinifKutuphanesi.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Yeni Sınıf Kütüphanesi" border="0" alt="Yeni Sınıf Kütüphanesi" src="http://www.enterprisecoding.com/blog/wp-content/uploads/yeniSinifKutuphanesi_thumb.png" width="443" height="271" /></a></p><p>Projemizde IIS 7 yonetici modülü oluşturabilmek için yukarıda bahsetmiş olduğum <em>Microsoft.Web.Management.Client.Module</em>, <em>Microsoft.Web.Management.Server.ModuleProvider, Microsoft.Web.Management.Client.Win32.ModulePage</em> gibi sınıfları projemizde kullanarak bunlardan türetilen sınıflar oluşturabilmek için projemizde <strong>Microsoft.Web.Management.dll</strong> assembly referansı bulunmalı. Referansını ekleyeceğiniz bu dll <em>%WINDIR%\system32\inetsrv</em> klasörü altında (örneğin; <em>c:\Windows\system32\inetsrv</em>) bulunabilir. Bu dll yeni bir IIS 7 yöneticisi modülü oluştururken ihtiyacımız olacak tüm sınıfları barındırmaktadır. Ek olarak; bir modül sayfası da tasarlayacağımız için kullanacağımız arayüz sınıflarının bulunduğu ve projemizin türünün sınıf kütüphanesi olması nedeniyle varsayılan olan gelmeyen <em>System.Windows.Forms.dll</em>’de proje referanslarına eklenmeli.</p><p>Projemizi oluşturup ihtiyacımız olan referansları ekledikten sonra kodlamaya geçmeden önce yerine getirmemiz gereken bir kaç adımımız daha var. Yukarıda bahsettiğim gibi IIS yöneticisi modülleri GAC’tan bularak yüklemekte. Projemizin derlendikten sonra GAC’a atabilmek için öncelikle imzalanmış olması gerekmekte. Projeyi imzalamak için proje özellikleri sayfasında yer alan <em>Signing</em> segmesinde imzada kullanılacak olan anahtarı belirtmeliyiz. Projemizde önceden oluşturduğumuz bir anahtar var ise bunu kullanabileceğimiz gibi yeni bir tane de oluşturup kullanabiliriz.</p><p><a
class="highslide img_30"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/AnahtarOlustur.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AnahtarOlustur" border="0" alt="AnahtarOlustur" src="http://www.enterprisecoding.com/blog/wp-content/uploads/AnahtarOlustur_thumb.png" width="324" height="201" /></a></p><p><a
class="highslide img_31"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/imzalama.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Proje dll&#39;ini mzalama" border="0" alt="Proje dll&#39;ini mzalama" src="http://www.enterprisecoding.com/blog/wp-content/uploads/imzalama_thumb.png" width="443" height="263" /></a></p><p>Assembly’mizi imzalamak için gerekli anahtar dosyasını verdikten ve projemizi derledikten sonra Visual Studio komut satırından aşağıdaki komut yardımıyla assembly’mizi GAC’a atabiliriz;</p><pre class="brush: bash; title: ; notranslate">gacutil.exe /if &lt;DLL’imizin Adı&gt;</pre><p>Her derlememiz sonrası test edebilmek için bu komutu çalıştırmamız gerekli, aksi takdirde değişikliklerimizi IIS yönetici konsolunda göremeyiz. Bu işi her derleme sonrasında elle yapmak yerine otomatikleştirmek işimizi kolaylaştıracaktır. Otomatikleştirmek için projemizin özellikler penceresinde <em>Build Events</em> segmesine gelerek “<em>Post-build event command line</em>” bölümüne aşağıdaki komutları yazmamız yetecektir.</p><pre class="brush: bash; title: ; notranslate">call &quot;%VS100COMNTOOLS%\vsvars32.bat&quot; &gt; null
gacutil.exe /if &quot;$(TargetPath)&quot;</pre><p><a
class="highslide img_32"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/PostBuild.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Post-build evet command line" border="0" alt="Post-build evet command line" src="http://www.enterprisecoding.com/blog/wp-content/uploads/PostBuild_thumb.png" width="443" height="300" /></a></p><p>İlk satır Visual Studio araçlarının bulunduğu dizin bilgilerini, ortam değişkenlerini hazırlayan batch dosyasını çalıştıracaktır, takip eden ikinci satır ise derlenen assembly’nizin GAC’a atılması için gerekli kod çalışacaktır. Bizim yerimizi her başarılı derleme sonrasında çalışacak olan bu komutu Visual Studio 2010 yerine alt sürümlerinde kullacaksanız <em>%VS100COMNTOOLS%</em> bölümü yerine aşağıdaki tablodan kullandığımız Visual Studio sürümüne uygun olan değeri yazmanız gerekli.</p><table
border="1" cellspacing="0" cellpadding="0" width="400"><tbody><tr><th
valign="top" width="200">Visual Studio sürümü</th><th
valign="top" width="200">Kullanılacak değer</th></tr><tr><td
valign="top" width="200">Visual Studio 2010</td><td
valign="top" width="200">%VS100COMNTOOLS%</td></tr><tr><td
valign="top" width="200">Visual Studio 2008</td><td
valign="top" width="200">%VS90COMNTOOLS%</td></tr><tr><td
valign="top" width="200">Visual Studio 2005</td><td
valign="top" width="200">%VS80COMNTOOLS%</td></tr></tbody></table><p>Son olarak modülümüz IIS yöneticisi içerisinde çalışırken Visual Studio ile debug edebilmemiz için proje özelliklerinde debug segmesinde aşağı görülen değerleri vermeliyiz;</p><p><a
class="highslide img_33"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/DebugProperties.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Debug Ayarları" border="0" alt="Debug Ayarları" src="http://www.enterprisecoding.com/blog/wp-content/uploads/DebugProperties_thumb.png" width="443" height="291" /></a></p><table
border="1" cellspacing="0" cellpadding="0" width="491"><tbody><tr><th>Alan</th><th
width="286">Değer</th></tr><tr><td
valign="top" width="200">Start External Program</td><td
valign="top" width="286">%windir%\system32\inetsrv\InetMgr.exe</td></tr><tr><td
valign="top" width="200">Working Directory</td><td
valign="top" width="286">%windir%\system32\inetsrv</td></tr></tbody></table><p>Bu değerler, Visual Studio’nun modülümüzü debug ederken öncelikle IIS yöneticisini (InetMgr) başlatmasını ve ardından da debugger’ın IIS yöneticisine bağlanarak debug yapabilmemizi sağlayacaktır.</p><p>Modülümüzün ilk derlenmesi ve GAC’a atılması sonrası IIS yöneticisine tanıtılması gereklidir. Bunun için yukarıda da bahsettiğim gibi <em>Administration.config</em> dosyasına girdi eklememiz gerekir. <em>%WINDIR%\system32\inetsrv\config</em>&#160; klasörü altında bulabileceğiniz bu dosyayı açarak moduleProviders elementi altına kendi modülümüze ait aşağıdaki girdiyi eklemeliyiz;</p><pre class="brush: xml; title: ; notranslate">&lt;add
   name=&quot;OrnekModulSaglayicisi&quot;
   type=&quot;Enterprisecoding.IISManagerModule.OrnekModulSaglayicisi, Enterprisecoding.IISManagerModule,&amp;#160; Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc2c6213715f3b51&quot; /&gt;</pre><p>&#160;<a
class="highslide img_34" href="http://www.enterprisecoding.com/blog/wp-content/uploads/AdministratorConfig_moduleProviders.png" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Administrator.Config moduleProviders" border="0" alt="Administrator.Config moduleProviders" src="http://www.enterprisecoding.com/blog/wp-content/uploads/AdministratorConfig_moduleProviders_thumb.png" width="443" height="66" /></a></p><p><em>type</em> özniteliğine verilecek değer OrnekModulSaglayicisi sınıfının assembly qualified adı olmalıdır. Bu alanda kullanacağınız PublicKeyToken (<em>Genel Anahtar Simgesi</em>) değerini GAC klasörüne (<em>%WINDIR%\system32</em>) giderek bulabilirsiniz. GAC klasöründe assembly’nizi bularak sağ tıklama menüsünden özellikler yardımıyla açılan dialogta <em>Genel Anahtar Simgesi</em> başlığı ile verilen değeri kullanmalısınız.</p><p><a
class="highslide img_35"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/GAC_PublicKey.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="GAC Genel Anahtar Simgesi" border="0" alt="GAC Genel Anahtar Simgesi" src="http://www.enterprisecoding.com/blog/wp-content/uploads/GAC_PublicKey_thumb.png" width="443" height="348" /></a>&#160;</p><p>İkincil iş olarak aynı dosya içerisinde yer alan modules elementi altına da aşağıdaki satırı eklemeliyiz;</p><pre class="brush: xml; title: ; notranslate">&lt;add name=&quot;OrnekModulSaglayicisi&quot; /&gt;</pre><p>&#160;</p><p><a
class="highslide img_36"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/AdministratorConfig_modules.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Administrator.Config modules" border="0" alt="Administrator.Config modules" src="http://www.enterprisecoding.com/blog/wp-content/uploads/AdministratorConfig_modules_thumb.png" width="244" height="117" /></a></p><p>Bu adımlar sonrası artık ortamımız projemizi geliştirmek için hazır olacaktır. Geliştirmeye modül sağlayıcımızı oluşturarak başlamalıyız. Yazımın başında da bahsettiğim gibi, modül sağlayıcısı modülümüzü giriş noktası olacak ve modülümüz hakkında temel bilgileri sunacaktır.</p><p>Modül sağlayıcımızı oluşturmak için projemize <em>Microsoft.Web.Management.Server.ModuleProvider</em>&#160; sınıfında türeyen yeni bir sınıf eklemeli GetModuleDefinition, SupportsScope gibi metodlarının içerisini gerekli bilgilerle doldurmalıyız. Aşağıda en basit şekliyle bir modül sağlayıcısını bulabilirsiniz.</p><pre class="brush: csharp; title: ; notranslate">public class OrnekModulSaglayicisi : ModuleProvider
{
    public override Type ServiceType {
        get { return null; }
    }
    public override ModuleDefinition GetModuleDefinition(IManagementContext context) {
        return new ModuleDefinition(Name, typeof(OrnekModul).AssemblyQualifiedName);
    }
    public override bool SupportsScope(ManagementScope scope) {
        return true;
    }
}</pre><p>OrnekModulSaglayicisi sınıfı içerisindeki GetModuleDefinition metodu IIS yöneticisine modülümüz hakkında bilgi vermemizi sağlayacaktır, modülümüzün adı ve modülümüzün tanımlandığı sınıfın tam adını burada belirtmeliyiz. Bu örnekte, birazdan detaylarını paylaşacağım, OrnekModul sınıfı ile bir modül tanımladığımız için IIS yöneticisine bu sınıfın tam adını bildiriyoruz.</p><p>SupportsScope ise modülümüzün hangi seviyede aktif olduğunu belirtmemizi sağlayacaktır. Uygulama, site, sunucu gibi farklı düzey ve kombinasyonlarda tanımlayabileceğimiz modülümüz varsayılan olarak true döndüğümüzden dolayı bu örnek için tüm düzeylerde aktif olacaktır. Kullanıcı IIS yöneticisinde farklı düzeylere geçtikçe bu metod çağrılarak modülümüzün gösterilip gösterilmeyeceğine karar verilecektir. Modülün verilen düzeyde aktif olması için metod sonucunun true olması gereklidir. Örneğin modülümüzü sadece site düzeyince aktif olması için aşağıdaki gibi bir metod tanımlanmalıdır;</p><pre class="brush: csharp; title: ; notranslate">public override bool SupportsScope(ManagementScope scope) {
    return scope == ManagementScope.Site;
}</pre><p>Modülümüze giriş noktasının sağlayıcı ile belirtmemiz ardından artık modülümüzün koduna geçebiliriz.</p><p>Modülü oluşturmak için projemize <em>Microsoft.Web.Management.Client.Module</em> sınıfında türeyen yeni bir sınıf eklemeli ve <em>Initialize</em> metodu içerisinde modülümüzü ilklendirmeliyiz. Initialize modülümüzün tanımlı olduğu düzey aktif olduğunda IIS yöneticisi tarafından çağırılarak modülümüzü gerekli hazırlıkları yapmasını sağlar. Aşağıda en basit şekliyle bir modül sınıfı bulabilirsiniz.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekModul : Module
{
    protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo)
    {
        base.Initialize(serviceProvider, moduleInfo);
        MessageBox.Show(&quot;Örnek Modul ilklendiriliyor&quot;);
    }
}</pre><p>OrnekModulSaglayicisi sınıfımız IIS yöneticisi açıldığında oluşturulup GetModuleDefinition metodu çağrıldığında OrnekModul sınıfımız hakkında gerekli tanımlamaları oluşturup IIS yöneticisine dönecektir. Ardında OrnekModul sınıfı oluşturulacak ve ilklendirilmesi üzere Initialize metodu çağrılacaktır. Bu kodu derlemeniz sonrası IIS yöneticisini çağırdığınız karşınıza hemen &quot;<em>Örnek Modul ilklendiriliyor</em>&quot; yazılı bir dialoğun geldiğini göreceksiniz.</p><p>Şimdiye kadar yaptıklarımızla IIS yöneticisine entegrasyonda 3 önemli adımdan 2sini tamamlamış oluyoruz. Bir modül sağlayıcısı ile modülümüz hakkındaki bilgileri veriyor, modül sınıfı ile gerekli ilklendirmeyi yapıyor oluyoruz. 3. adımda ise asıl işimizi yaparak kullanıcı ile etkileşimi sağlayacağımız modül sayfasını oluşturmalı ve bu sayfanın IIS yöneticisine kaydını yapmalıyız.</p><p>Modül sayfamızı oluşturmak için projemize <em>Microsoft.Web.Management.Client.Win32.ModulePage</em>&#160; sınıfında türeyen yeni bir sınıf oluşturmalıyız. Daha önceki iki sınıftan farklı olarak modül sayfası sınıfımızda kullanmak zorunda olduğumuz bir metod bulunmamakta. Modül sayfamız aynı bir windows forms tasarlar gibi forms bileşenleriyle tasarlayabilirsiniz. Aşağıda OrnekModulSayfasi sınıfımında üzerinden bir buton bulunan basit bir modül sayfası bulabilirsiniz.</p><pre class="brush: csharp; title: ; notranslate">internal class OrnekModulSayfasi : ModulePage /*Form*/
    {
        private Button ornekButton;
        public OrnekModulSayfasi() {
            InitializeComponent();
            MessageBox.Show(&quot;Örnek Modul Sayfası ilklendirildi&quot;);
        }
        private void InitializeComponent()
        {
            this.ornekButton = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // ornekButton
            //
            this.ornekButton.Location = new System.Drawing.Point(51, 38);
            this.ornekButton.Name = &quot;ornekButton&quot;;
            this.ornekButton.Size = new System.Drawing.Size(92, 23);
            this.ornekButton.TabIndex = 0;
            this.ornekButton.Text = &quot;Buraya basınız&quot;;
            this.ornekButton.UseVisualStyleBackColor = true;
            this.ornekButton.Click += new System.EventHandler(this.ornekButton_Click);
            //
            // OrnekModulSayfasi
            //
            this.Controls.Add(this.ornekButton);
            this.Name = &quot;OrnekModulSayfasi&quot;;
            this.ResumeLayout(false);
        }
        private void ornekButton_Click(object sender, System.EventArgs e)
        {
            MessageBox.Show(&quot;Butona basıldı&quot;);
        }
    }</pre><p>Gördüğünüz gibi, bu sınıfı tasarlarken kolaylık olması adına forms’tan türetip işiniz bitince yeniden ModulPage’den türetebilirsiniz.</p><p><a
class="highslide img_37"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/ModulSayfasiTasarimi.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Modül Sayfası Tasarımı" border="0" alt="Modül Sayfası Tasarımı" src="http://www.enterprisecoding.com/blog/wp-content/uploads/ModulSayfasiTasarimi_thumb.png" width="443" height="392" /></a></p><p>Bu son adım ardından artık modülümüzü test edebiliriz. Başlat menüsünde yer alan çalıştır yardımıyla yada windows tuşu + R kombinasyonuyla açılan <em>çalıştır</em> diyaloğuna InetMgr yazarak IIS yöneticisini açabilirsiniz. Aşağıdaki resimde de gördüğünüz gibi giriş sayfasında Örnek Sayfa başlığıyla modülümüz için bir buton oluşturulmuş durumda. Bu butona bastığımızda modülümüzün ilklendiğini göstermek için kullandığımız mesaj diyalogu görülecektir.</p><p><a
class="highslide img_38"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/IISGirisSayfasi.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IIS Giriş Sayfası" border="0" alt="IIS Giriş Sayfası" src="http://www.enterprisecoding.com/blog/wp-content/uploads/IISGirisSayfasi_thumb.png" width="443" height="293" /></a></p><p>Diyalogu kapattığınızda bu defa da karşımıza eklediğimiz butonuyla örnek sayfamız gelecektir. Butona bastığımızda da eklediğimiz mesaj diyalogu gelecektir.</p></p><p><a
class="highslide img_39"  href="http://www.enterprisecoding.com/blog/wp-content/uploads/OrnekModulSayfasi.png" getparams="null" onclick="return hs.expand(this)"><img
style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Örnek Modül Sayfası" border="0" alt="Örnek Modül Sayfası" src="http://www.enterprisecoding.com/blog/wp-content/uploads/OrnekModulSayfasi_thumb.png" width="443" height="291" /></a></p></p><p>Bu noktadan sonra elimizde ilk çalışan IIS yönetim modülümüz olacak. Bu noktadan yola çıkarak ihtiyaçlarımız doğrultusunda IIS yöneticisi API’lerini kullanarak yeni modüller ekleyebilirsiniz.</p><p>Related posts:<ol><li><a
href='http://www.enterprisecoding.com/blog/post/tasarim-zamaninda-usercontrole-bilesen-eklemek' rel='bookmark' title='Tasarım-Zamanında UserControl’e bileşen eklemek'>Tasarım-Zamanında UserControl’e bileşen eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/dinamik-olusturulan-kodlara-debug-bilgisi-eklemek' rel='bookmark' title='Dinamik Oluşturulan Kodlara Debug Bilgisi Eklemek'>Dinamik Oluşturulan Kodlara Debug Bilgisi Eklemek</a></li><li><a
href='http://www.enterprisecoding.com/blog/post/x64-uzerinde-appfabric-caching-referanslarini-eklemek' rel='bookmark' title='x64 üzerinde AppFabric Caching referanslarını eklemek'>x64 üzerinde AppFabric Caching referanslarını eklemek</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://www.enterprisecoding.com/blog/post/iis-7-yoneticisine-kendi-modulunuzu-eklemek/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
