NuGet Private Repository (Server) Kurulumu

Nuget Private Repositry Nedir?

Kendimize özel bir NuGet private repository yani bir NuGet server kurmak istediğimiz zamanlar oluşabilir. Örneğin bir yazılım geliştirme şirketiniz var ve kendi componentlerinizi geliştiriyorsunuz ve bu componenetlarin bir çok başka projede kullanılmasını istiyorsunuz. Bu gibi durumlarda NuGet versiyonlama vs gibi güzel özellikler sunduğu için private bir NuGet repository'e ihtiyaç duyabiliriz. Haliyle şirketinize özel componentleri hekesin kullanmasını istemeyeceğiniz için Public NuGet'e koyamazsınız.


NuGet Private Repository Nasıl Kurulur?

  1. Visual Studio üzerinden boş bir Asp.Net Web Forms application açıyoruz.
  2. Package Manager Console'u kullanarak Install-Package Nuget.Server komutu ile package'ı projemize kuruyoruz.

Artık bir NuGet Private Repository'imiz var.

   

Basit bir configuration yapmamız gerekiyor. Web.Config dosyası içerisinde

 <add key="apiKey" value="123"/> bölümüne gidiyoruz ve value değeri içierine ApiKey'imizi giriyoruz. Bu ApiKey'a daha sonra bizim NuGet repositroy'mize bir package push ederken veya var olan package'i silerken ihtiyac duyacağız. Ben örnek olması açısından 123 yazdım.

NuGet Private Repoistory şuanda hazır hale geldi. Artık IIS üzerinde host ediyoruz ve kullanıma hazır oluyor.


Nasıl yeni bir package oluşturulur ve private repository'e push edilir?   

  1. Yeni package push etmek için https://nuget.codeplex.com/ adresinden NuGet.exe dosyasını indiriyoruz.
  2. NuGet.exe spec MyPackage komutu ile spec dosyası oluşturuyoruz. Bu dosya nuget package'imizin ayarlarının bulunduğu dosyadır. Bu dosyayı editlemeniz gerekmektedir. Detaylı bilgi: http://docs.nuget.org/Create/Nuspec-Reference
  3. NuGet.exe pack MyPackage.nuspec komutu ile package dosyasımı oluşturuyoruz ve MyPackage.1.0.0.nupkg isimli dosyasımızı oluşturuyoruz.
  4. NuGet.exe push MyPackage.1.0.0.nupkg -source http://localhost/MyPrivateServer -ApiKey 123

    Dosyasımızı artık repository'imize gönderdik.

  5. Veya tüm bunlarla uğraşmak istemezseniz, bu işler için yapılmış, http://docs.nuget.org/Create/using-a-gui-to-build-packages adresinden ulaşabileceğiniz bir UI tool mevcut.

   

MyPackage.nuspec


Visual Studio üzerinden private NuGet Repository'e nasıl ulaşılır?

  • Visual Studio Tools menüsü altında bulunan Nuget Package Manager -> Package Manager Settings'e giriyoruz.
     

    Microsoft Visual Studio Package Manager Settings

       

  • Açılan pencerede sol tarafdan Package Source'a tıklıyoruz ve sağ üstte bulunan + butonuna basarak yeni bir source ekliyoruz. Alt tarafta bulunan Name bölümüne Nuget serverimiza bir isim veriyoruz. (Bu isim sadece visual studio içinde nasıl görüneceğini belirleyecektir.) Source bölümüne ise IIS üzerinde host edilen pivate NuGet repository'imizin Url'sini veriyoruz. Ok diyerek kapatıyoruz.

       

NuGet Package Manager - Package Sources

   

  • Artık Visual Studio bizim NuGet Private Repository'imizden haberdar ve erişebilir durumda. Package manager'a gidererek Package Source'larin arasında yarattığınız NuGet Server'i görebilirsiniz.

       

Package Manager Console

Azure Service Bus: Topic Subscription

Azure üzerinde ServiceBus adında bir hizmet olduğunu duymuşunuzdur diye tahmin ediyorum. Aslında Serbice Bus oldukça geniş ve çok işlevli bir konu ben bu yazıda sadece Topic & Subscription bölümünü kısaca özetleyeceğim.

   

Bu arada service bus sadace Azure üzerinde olan bir hizmet değil, kendi on-prem serveriniz üzerine kurup kullanabilirsiniz. Private cloud kavramıyla bu konuyuda inceleyebilirsiniz. Deneme fırsatım oldu, oldukca kolay bir kurulumu var.

   

Topic Nedir?

Sonuç olarak ingilizce bir terimden bahsediyoruz ve türkçesini düşünecek olursak: "KONU".

   

Subscription Nedir?

Aynı mantık ile üyelik diye biliriz.

   

Peki nedir bunlar? Konu çok basit aslında. Bir Topic olduğunu düşünün ve adı "Günlük Haberler" olsun. Birde subscriber olsun, ve bu topic'e subscribe olsun. Yani örneğin subscriber "Günlük Haberler" topic'ine üye oldu. Bu sayede "Günlük Haberler" topic'i içine giren her mesajdan subscriber haberdar olacaktır ve topic'e konulan mesajları okuyabilecektir.

   

Bir yada birden fazla üreticimiz var, topic'lerin içerisinde BrokeredMessage koyuyorlar.

Bir yada birden fazla subscriber(üye ?)'imiz var bunlarda topic'leri takip ediyor ve topic içine konulan mesajları okuyorlar konu bukadar basit.

   

Bahsettimiz işler Queue ilede yapılabilir mi? Şimdiye kadar evet diyebiliriz. Ancak Topic & Subscription mekanizmasında Topic ve Subscriptionlar var. Topic içine konulan her mesaj, belirlenen Topic'e subscribe etmiş tüm subscriberlara iletilmeyi garantiler. Queue'da ise mesaj queue'ya girer ve ilk alan consumer'in elinde kalır, ikinci vb. consumerlar o mesaja ulaşamazlar. Ama Subscription'da Topic'e giren her mesaj tüm subscriberlara iletilmeyi garanti eder.

   

Filtre

Subscriber topic'e subscribe olurken hangi mesajları almak istediğini filtreleyebilir. Bu işi şu şekilde yaparız, gelen mesajın propertylerinden biri veya bir kaçı belirtilen değerlerde ise mesaj ulaşsın. Bu yapı için SqlFilter class'indan yaralanıyoruz.

   

Connection String (config dosyasında olmalı)

   

<ConfigurationSettings>
<Setting name="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://[SERVICEBUSNAME].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedSecretValue=KEY" />
</ConfigurationSettings>

   

Yeni Topic Yaratmak, C#

   

Topic'i Silmek, C#

   

Mesaj Göndermek, C#

   

Subscription Oluşturmak ve Mesajı Okumak

   

Receive methodu ile mesajları alabilirsiniz. Eğer geri dönen instance null ise topic içerisinde mesaj olmadığını anlayabilirsiniz.

   

   

   

OnMessage, C#

OnMessage() methodu ile yukarida kurduğumuz yapının otomatik olarak oluşmasını sağlayabilirsiniz ve verdiğiniz action mesaj geldiğinde çalışır. Böylece sizin while() gibi bir loop ile kontrol etmenize gerek kalmaz, mesaj geldiğinde verdiğiniz action call edilir.

   

   

   

Daha detaylı bilgi için,

   

http://azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/#configuring-your-connection-string-when-using-websites-or-virtual-machines

   

http://www.4sln.com/Articles/microsoft-azure-service-bus-queue-topic-subscription