Microsoft SQL Server 2008

Yağız Gönüler tarafından yayınlanmıştır 17. Ağustos 2008 16:26

Efsane, 2008 modeliyle karşımızda. Türkçe makalelerde hızla gelmeye başladı. Yoğun günler bizi bekliyor :)

Microsoft SQL Server 2008 hakkında detaylı bilgi: http://www.microsoft.com/sqlserver/2008/en/us/default.aspx
Ücretsiz SQL Express sürümü: http://www.microsoft.com/express/sql/register/default.aspx
180 günlük deneme sürümü: http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx

Tamer Şahiner'den 2 güzel makale:

SQL Server 2008 Yenilikleri - 1 (SQL Server 2008 Giriş)
SQL Server 2008 Yenilikleri - 2 (Central Management Server)

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Database | Software

Remoting ile doğrulama

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:00

Bu örneğimizde amacımız oluşturacağımız bir nesnede, kullanıcı adı ile şifre doğrulaması yapılması ve sunucu ile bunu yayınlayıp diğer istemcilerden kullanılmasının sağlanmasıdır.

 

İlk önce kullanıcıların verilerini tutacak çok basit bir veritabanı hazırlayalım. Ben ismini RemotingDB dedim, veritabanı içinde Users isimli bir tablo yarattım ve bilgilerini aşağıdaki şemadaki gibi girdim;

 

 

Şimdi ise yeni bir Windows Uygulaması açıyoruz. Ben ismine RemotingSunucu dedim. Daha sonra yine bu solutiona yeni bir Class Library ekleyin. Ben ismini RemotingNesne dedim. Burada ilk önce nesnemizi oluşturacağız. Nesnemiz ADO.NET ile veritabanına connected ortamda bağlanıp, aradığımız nesne var mı diye kontrol edecek. Aşağıdaki kodları Class Library’imize yazıyoruz;

 

Imports System.Data.SqlClient

 

Public Class RemotNesne

 

    Inherits MarshalByRefObject

 

    Public Function Dogrula(ByVal uName As String, ByVal uPass As String) As String

 

        Dim conn As SqlConnection

        conn = New SqlConnection("data source=.; initial catalog=RemotingDB; uid=sa, password=;")

        Dim sql As String

        sql = "select UserRName from Users Where UserName= '" & uName & "' AND UserPassword= '" & uPass & "'"

        Dim comm As SqlCommand = New SqlCommand(sql, conn)

        conn.Open()

        Dim dr As SqlDataReader = comm.ExecuteReader

        If dr.HasRows Then

            dr.Read()

            Return dr.GetString(0)

        Else

            Return ""

        End If

 

    End Function

 

End Class

 

Bu kodlarla öncelikle sql server 2000’e erişmek için gerekli olan namespace’i ekledim. Daha sonra aktivasyon kullanabilmek için MarshallByRefObject türettim. Bir public function yazdım, bildiğimiz gibi Remoting’de bir methodun kullanılabilmesi için mutlaka public olarak tanımlanması gerekiyor. Bu function string türden parametre alıyor ve geriye yine string döndürüyor. Fonksiyonda ilk önce connection yapılıyor sonra command ile veritabanında sorgu çalıştırılıyor ve daha sonra bu sorgunun sonucu bir DataReader’a atılıyor. Eğer yoksa boş olarak geri dönüyor.

 

Şimdi bu nesneyi yayınlayacak olan sunucu uygulamasını yapıyoruz. Bunun için aşağıdaki resimdeki gibi, bir textbox’ın text özelliğini silip multiline özelliğini true yaparak formumuza geniş olarak ekliyoruz;

 

 

Yukarıdaki görüntüyü elde etmek için hemen aşağıda belirteceğim kodları yazıyoruz. Kodlarımızda ise değişik gelebilecek tek şey RemotingConfiguration classının RegisterActivatedServiceType shared metodunun kullanılması olabilir. Bu metod istemci taraflı aktivasyon yapmak için kullanılıyor, nesnenin veri türü alınıyor, RegisterWellKnownServiceType’taki gibi bir Remoting yolu almıyor. Aşağıdaki kodları yazıp nesnemizi çalıştırdığımızda yukarıdaki form görüntüsü ile karşılaşıyoruz;

 

Imports System.Runtime.Remoting

Imports System.Runtime.Remoting.Channels

Imports System.Runtime.Remoting.Channels.tcp

 

Public Class Form1

    Inherits System.Windows.Forms.Form

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

        TextBox1.Text = "Sunucu Açıldı" & vbNewLine

        Dim chn As TcpChannel = New TcpChannel(8989)

        ChannelServices.RegisterChannel(chn)

 

        RemotingConfiguration.RegisterActivatedServiceType(GetType(RemotingNesne.RemotNesne))

        TextBox1.Text &= "Sunucu, İstemci aktivasyonu ile çalışıyor"

 

    End Sub

 

End Class

 

 

Şimdi sırada istemcimizi yazmak var. İstemci için farklı bir Windows Uygulaması oluşturuyoruz. Ben ismine RemotingIstemci yazdım. İstemcimizin formuna 3 label, 2 textbox ve 1 button yerleştirip aşağıdaki görüntüyü elde ediyoruz;

 

 

Buttonumuzun tıklama olayına aşağıdaki kodları yazıyoruz;

Imports System.Runtime.Remoting

 

Public Class Form1

    Inherits System.Windows.Forms.Form

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        Static i As Boolean

 

        If Not i Then

 

         RemotingConfiguration.RegisterActivatedClientType(GetType(RemotingNesne.RemotNesne), _

            "tcp://Localhost:8989")

            i = True

 

        End If

 

        Try

            Dim nesnem As RemotingNesne.RemotNesne = New RemotingNesne.RemotNesne

            Dim donusdegeri As String = nesnem.Dogrula(TextBox1.Text, TextBox2.Text)

            If CBool(Len(donusdegeri)) Then

                Label1.Text &= "Merhabalar" & donusdegeri

            Else

                Label1.Text &= "Kullanıcı Adı ve7veya Şifre Hatalı!"

            End If

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

 

    End Sub

 

End Class

 

Bir kanala bağlantıyı 1 kere kurup nesneyi kendi uygulamamızın domaninie geçirdikten sonra bir daha aynı nesneye geçiremeyiz. Bunun için ben i’yi static boolean anahtar değişkeni tanımladım, sadece 1 kere çalışması için gerekli kodları yazdım. Bu metot RegisterActivatedClientType metodu, ilk parametresi nesnenin veri türünü, ikinci parametresi ise nesnenin yolunu istiyor. TCP kanalını kullanmıştık ve 8989 no’lu porttan yayın yapıyorduk. Remoting uygulamalarda sıkça problem oluşabileceği için try catch bloğunu da yazıyoruz.

 

Uygulamamızı çalıştırdıktan sonra veritabanımızı kullanarak, bir kanal yoluyla verilerimizi yolluyoruz ve sonucumuzu, sonuc label’ında bize geri dönen değer ile görüyoruz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Articles | Database | Windows

Her yazılımcının bilmesi gereken 10 konsept

Yağız Gönüler tarafından yayınlanmıştır 25. Temmuz 2008 11:12

Yazılım dünyası, kalabalık ekiplerin yerini büyük ve karmaşık işleri bir kaç iyi yazılımcının yapacağı bir yöne doğru ilerliyor.

yazılım mühendisi
yazılım mühendisi

Alex Iskold, bu ekiplerde yer alacak mühendislerin bilmesi gereken 10 konsepti listelemiş.

10 İlişkisel Veritabanları

learning mysql
learning mysql

İlişkisel veritabanları, çok büyük web servislerinde kötü performanslar sergilediği için son zamanlarda sevilmiyor. Ancak yazılım dünyası daha uzun bir süre onları kullanmaya devam edecek.

İlişkisel veritabanlarında veriler tablolarda kayıtlar olarak tutuluyor ve genellikle SQL adı verilen dil ile bu veriler sorgulanıyor. SQL’in veri ekleme, silme, güncelleme, filtreleme ve birden çok tablodaki verileri bir arada getirme gibi güzel yetenekleri var.
İlişkisel veritabanlarında veri yazıp okuma işini performanslı bir şekilde halledebilmek için SQL, stored procedure’ler (yerleşik yordamlar), constraint’ler (kısıtlamalar) gibi pek çok konuya hakim olmak gerekiyor.

9 Güvenlik

web security, privacy and commerce
web security, privacy and commerce

Hack olayları ve veri güvenliği önem kazandıkça güvenlik bilgisinin de önemi artıyor. Veri güvenliği; kullanıcı yönetimi, yetkilendirme, bilgi aktarımı gibi pek çok kavram içeren geniş bir konu.
Kullanıcı yönetimi, bir sistemde her kullanıcının kendisini ilgilendiren bilgilerle muhattap olması ve diğer kullanıcıların bilgilerini görememesi ile alakalı. Yetkilendirme, kullanıcıların yalnızca izin verilen işlemleri yapabilmeleriyle alakalı. Daha çok şirketleri ve iş akışı bulunduran sistemleri ilgilendiriyor. Yeni geliştirilen OAuth protokolü, web servislerde güvenliği sağlamak konusunda yardımcı oluyor. Bu sistemi flickr kullanıyor.

8 Cloud Computing

programming amazon web services
programming amazon web services

Cloud Computing, bir işin daha hızlı yapılması için aynı anda birden fazla bilgisayarın çalıştırılması esasına dayanan paralel programlamadan yola çıkılıp geliştirilmiş bir yöntem. Yararlananılabilecek hizmetlerin zaman, kullanıcı yoğunluğu gibi parametrelere bağlı olarak değişmesi esasına dayanıyor.





7 Eş Zamanlılık

java threads
java threads

Eş zamanlılık, birden fazla işin bir programın kendi içinde aynı anda yapılması ile alakalı. Örneğin java ile yazılan uygulamalarda bunun için thread’ler kullanılıyor.

Üretici / Tüketici modeli tipik bir örnek. Üretici durumunda olan kısım sürekli olarak işlenecek verileri üretiyor, tüketici olan kısım ise sürekli olarak bu verileri alıp işliyor. Bu iki kısım aynı anda çalışıyor. Her thread’in kendi içinde çalışma mantığı ayrı olsa da thread’ler verileri aynı anda ve ortak olarak kullandığı için çalışırlarken yapabilecekleri hataları önlemek uzmanlık gerektiriyor. En karmaşık thread kütüphanelerinden birisi Doug Lea tarafından üretilmiş ve java çekirdeğinde yerini almış.

6 Caching

web caching
web caching

Caching, normalde veritabanında tutulan verilerden çok sık kullanılanların hızlı ulaşılabilecek bir yere alınması ve buradan hızla kullanılması anlamına geliyor. Örneğin bir kitap siteniz varsa ve geçen haftanın popüler kitaplarını listeleyen bir kısım mevcutsa, bu verileri her gerektiğinde hesaplamak yerine haftada bir kez hesaplayıp uygun bir yere kaydediyor ve gerektiğinde buradan okuyorsunuz.
Cache’lenen verilerin tamamını bellekte tutmak maliyetli bir işlem olduğu için, bellekte tutulacak verilerin seçilmesi için uygulanacak yöntemleri seçmek yine uzmanlık gerektiriyor.
Facebook’un da aralarında olduğu bir çok modern uygulama, Brad Firzpatrick tarafından geliştirilen memcached adlı sistemi kullanıyor.

5 Hashing

lecture notes in computer science
lecture notes in computer science

Hashing, verilere hızlı ulaşmak için başka bir yöntem. Bu yöntemde, her verinin içeriğine bakılarak bu veriye özel daha kısa bir veri üretiliyor ve bu kısa veriler index olarak kullanılıyor. Index içerisinde arama yapmak da çok daha hızlı oluyor.

Hashing yapılırken her verinin farklı bir hash kodunun olması ve bu hash kodlarının hızlı ulaşımı mümkün olduğu kadar kolaylaştıracak şekilde ayarlanması farklı bir uzmanlık gerektiriyor.

4 Algoritmik Karmaşıklık Seviyesi

data structures and algorithms
data structures and algorithms

Çok yaygın olarak büyük O harfi notasyonuyla ifade edilen karmaşıklık seviyesi, bir algoritmanın hızının, algoritmanın işlediği veri miktarına göre değişimini belirliyor. Örneğin O(n) ile ifade edilen bir algoritma, n tane veriyi t zamanda işliyorsa 2n tane veriyi 2t zamanda işler. O(n^2) ile ifade edilen algoritma ise n tane veriyi t zamanda işlerken 2n tane veriyi t’nin karesi kadar zamanda işler. İşlenen veri miktarları çok büyük olunca, bunları işleyen algoritmanın karmaşıklığı çok büyük önem kazanıyor.

3 Katmanlı Mimari

large scale c++ software design
large scale c++ software design

Katmanlı mimari, bir yazılımın çalışması için gereken bileşenlerin piramit şeklinde yapılandırılması gerektiğini ifade ediyor. Piramitin her katmanındaki bileşenin çalışması, kendi altında bulunan bileşenlere bağlı olabilir ancak kendi üzerinde çalışanlara bağlı olamaz.
Bu konuda bilgi alınabilecek Structure 101 ve SA4J adlı iki güzel kaynak var.

2 Kurallar ve Şablonlar

developing java beans
developing java beans

İsimlendirme kuralları ve şablonlar üzerinde en çok durulan ve muhtemelen en önemli tasarım desenleri.
İsimlendirme kuralları yazılım geliştirilirken kullanılan tüm isimlendirmelerin ortak kurallara dayanmasını gerektiriyor. Örneğin JUnit adlı java bileşeni, test metodlarını, isimlerinin başında yer alan test kelimesi sayesinde tanıyor.

Şablonlar ise verilerin gösterimlerinin verilerden bağımsız bir şekilde yapılması ile ilgili. Örneğin XML verilerini göstermek için XSL şablonları kullanılır.

1 Arayüzler

agile software development
agile software development

Arayüz, yazılımdaki en önemli konsept. Yazılım geliştirirken problemleri mümkün olduğunca basit modellemek ve bu modellere mümkün olduğunca basit ve anlaşılır arayüzler sunmak gerekiyor.

Bu konudaki tavsiyeler şöyle:

  • Asla ileride kullanışlı olabilecek metodlar yazmayın. Minimalist olun.
  • Daha önce yaptığınız hatalar ile yüzleşmekten korkmayın. Hatalarınızı düzeltmeye açık olun.
  • Sabırlı olun ve süreçten zevk alın. Adım adım ilerleyin.

Kaynak: Bildirgec

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Algorithm | Database | Software | Web Security



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Anket

Yazılım geliştirirken en keyif aldığınız alan hangisi?




Sonuçlar

Son Yorumlar

Comment RSS

Calendar

<<  Kasım 2008  >>
PaSaÇaPeCuCuPa
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster

Ne Dinliyorum?

Şevval Sam - Ben Seni Sevduğumi (20 saat önce)
Şevval Sam - Oy Benim Sevduceğim (20 saat önce)
Şevval Sam - Giresun Karsilamasi (20 saat önce)
Şevval Sam - Karardı Karadeniz (20 saat önce)
Şevval Sam - Potbori (20 saat önce)
Şevval Sam - Ahmedum (20 saat önce)
Şevval Sam - Çayeli'nden Oteye/Menşure (20 saat önce)
Şevval Sam - Dertliyim Kederliyim (20 saat önce)
Şevval Sam - Bu Dünya Bir Pencere (20 saat önce)
Şevval Sam - Ander Sevdaluk (20 saat önce)

Ne Okuyorum?

Haftanın Sözü



"Savaşlara ait kitaplar kütüphanemin en güzel eserleridir. Yorgunluğumu gidermeye çalıştığım zamanlarda okuduğum ve bana en çok zevk veren kitaplardır. "

Napolyon Bonapart
(1769-1821)

Ziyaretçi Sayısı

Ziyaretçi Sayısı