Aracılığıyla paylaş


İzlenecek Yol: N Katmanlı Bir Veri Uygulaması Oluşturma

N katmanlı veri uygulamaları verilere erişen ve birden çok mantıksal katmana veya katmana ayrılan uygulamalardır.Uygulama bileşenlerini farklı katmanlara ayırmak uygulamanızın yönetilebilirliğini ve ölçeklenebilirliğini artırır.Bunu, tüm çözümü yeniden tasarlamanıza gerek kalmadan tek bir katmana uygulanabilen yeni teknolojilerin daha kolay benimsenmesini sağlayarak yapar.N katmanlı mimaride bir sunu katmanı, bir orta katman ve bir veri katmanı bulunur.Orta katmanda genellikle bir veri erişim katmanı, iş mantığı katmanı ve kimlik doğrulaması ve doğrulama gibi paylaşılan bileşenler bulunur.Veri katmanında ilişkisel bir veritabanı vardır.N katmanlı uygulamalar hassas bilgileri orta katmanın veri erişimi katmanında depolayarak sunu katmanına erişimi olan son kullanıcılardan uzakta tutulmasını sağlar.Daha fazla bilgi için N Katmanlı Veri Uygulamalarına Genel Bakış.

N katmanlı uygulamada çeşitli katmanları ayırma yollarından biri, uygulamanıza eklemek istediğiniz her katman için ayrı projeler oluşturmaktır.Türü belirtilmiş veri kümelerinde, üretilen veri kümesinin ve DataSet Project kodunun gitmesi gereken projeleri belirleyen bir TableAdapter özelliği bulunur.

Bu kılavuzda TableAdapterVeri Kümesi Tasarımcısı kullanılarak veri kümesinin ve **kodunun farklı sınıf kitaplığı projelerine nasıl ayrıldığı gösterilir.**Veri kümesi ve TableAdapter kod ayırmak sonra oluşturacak bir Visual Studio'da Windows Communication Foundation Hizmetleri ve WCF Veri Hizmetleri veri erişim katmanı çağrılacak hizmet.Son olarak, sunu katmanı olarak bir Windows Forms uygulaması oluşturacaksınız.Bu katman veri hizmetindeki verilere erişir.

Bu kılavuzda aşağıdaki adımları gerçekleştireceksiniz:

  • Birden fazla proje içeren yeni bir n katmanlı çözüm oluşturma.

  • N katmanlı çözüme iki sınıf kitaplığı ekleme.

  • Veri Kaynağı Yapılandırma Sihirbazı'nı kullanarak türü belirtilmiş veri kümesi oluşturma.

  • Oluşturulan ayırmak TableAdapters ve ayrık projeleri koda veri kümesi.

  • Veri erişim katmanına çağrı göndermek için bir Windows Communication Foundation (WCF) hizmeti oluşturma.

  • Veri erişim katmanından veri almak için hizmet içinde işlevler oluşturma.

  • Sunu katmanı olarak hizmet verecek bir Windows Forms uygulaması oluşturma.

  • Veri kaynağına bağlanan Windows Forms denetimleri oluşturma.

  • Veri tablolarını doldurmak için kod yazma.

video bağlantısıBu konu video sürümü için bkz: Video nasıl yapılır: N katmanlı veri uygulama oluşturma.

Önkoşullar

Bu kılavuzu tamamlamak için gerekenler:

Veri Kümesini Tutacak N Katmanlı Çözüm ve Sınıf Kitaplığı Oluşturma (DataEntityTier)

Bu kılavuzun ilk adımı bir çözüm ve iki sınıf kitaplığı projesi oluşturmaktır.Birinci sınıf kitaplığı veri kümesini tutacaktır (uygulama verilerini tutacak, üretilen türü belirtilmiş DataSet sınıfı ve DataTable tabloları).Bu proje uygulamanın veri varlık katmanı olarak kullanılır ve genellikle orta katmanda bulunur.Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme ilk veri kümesi oluşturmak ve otomatik olarak iki sınıf kitaplıkları kod ayırmak için kullanılır.

[!NOT]

Tamam'a tıklamadan önce projeyi ve çözümü doğru adlandırdığınızdan emin olun.Böylece bu kılavuzu tamamlamanız kolaylaşır.

N katmanlı çözüm ve DataEntityTier sınıf kitaplığı oluşturmak için

  1. Öğesinden Dosya menüsü, yeni bir proje oluşturun.

    [!NOT]

    Veri Kümesi Tasarımcısı, Visual Basic ve C# projelerinde desteklenir.Yeni projeyi bu dillerden birinde oluşturun.

  2. Yeni Proje iletişim kutusundaki Proje türleri bölmesinde Windows'a tıklayın.

  3. Sınıf Kitaplığı şablonuna tıklayın.

  4. Projeyi DataEntityTier olarak adlandırın.

  5. Çözümü NTierWalkthrough olarak adlandırın.

  6. Tamam düğmesini tıklatın.

    DataEntityTier projesini içeren bir NTierWalkthrough çözümü oluşturulur ve Çözüm Gezgini'ne eklenir.

TableAdapter Bağdaştırıcılarını Tutacak Sınıf Kitaplığı Oluşturma (DataAccessTier)

DataEntityTier projesini oluşturduktan sonraki adım başka bir sınıf kitaplığı projesi oluşturmaktır.Bu proje oluşturulan TableAdapter bağdaştırıcılarını tutar ve uygulamanın veri erişim katmanı olarak adlandırılır.Veri erişim katmanında, veritabanına bağlanmak için gereken bilgiler bulunur ve genelde orta katmanda yer alır.

TableAdapter bağdaştırıcılarına yönelik yeni sınıf kitaplığı oluşturmak için

  1. Dosya menüsünden NTierWalkthrough çözümüne yeni bir proje ekleyin.

  2. Yeni Proje iletişim kutusunda Şablonlar bölmesinde Sınıf Kitaplığı'na tıklayın.

  3. Projeyi DataAccessTier olarak adlandırın ve Tamam'a tıklayın.

    DataAccessTier projesi oluşturulur ve NTierWalkthrough çözümüne eklenir.

Veri Kümesi Oluşturma

Sonraki adım türü belirtilmiş bir veri kümesi oluşturmaktır.Türü belirtilmiş veri kümeleri, her iki veri kümesi sınıfıyla (DataTable sınıfları dahil) ve TableAdapter sınıflarıyla tek bir projede oluşturulur.(Tüm sınıflar, tek bir dosyaya üretilir.) Veri kümesi ayırmak olduğunda ve TableAdapters farklı projeleri içine bırakarak diğer projeye taşınır veri kümesi sınıfı olan TableAdapter özgün proje sınıfları.Bu nedenle, veri kümesini sonuçta TableAdapter bağdaştırıcılarını içerecek projede oluşturun (DataAccessTier projesi).Veri kümesini Veri kaynağı Yapılandırma Sihirbazı'nı kullanarak oluşturacaksınız.

[!NOT]

Bağlantıyı oluşturmak için Northwind örnek veritabanına erişiminiz olmalıdır.Northwind örnek veritabanı ayarlama hakkında daha fazla bilgi için bkz: Nasıl Yapılır: Örnek Veritabanları Yükleme.

Veri kümesi oluşturma

  1. Çözüm Gezgini'nde DataAccessTier katmanına tıklayın.

  2. Veri menüsünden Veri Kaynaklarını Göster'i tıklatın.

  3. Veri Kaynağı Yapılandırma Sihirbazı'nı başlatmak için Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'ye tıklayın.

  4. Bir Veri Kaynağı Türü Seçin sayfasında Veritabanı'na ve ardından İleri'ye tıklayın.

  5. Üzerinde Bilgisayarınızı veri bağlantısı seçin sayfasında, aşağıdaki eylemlerden birini gerçekleştirin:

    Bir veri bağlantısı Northwind örnek veritabanına aşağı açılan listede kullanılabilir durumda,'ı tıklatın.

    -veya-

    Tıklatın Yeni bağlantı açmak için Bağlantı Ekle iletişim kutusu.

  6. Veritabanınız parola gerektiriyorsa, hassas verileri eklemek için bir seçenek belirleyip İleri'ye tıklayın.

    [!NOT]

    Bir yerel veritabanı dosyası (SQL Server'a bağlanmak yerine) seçtiyseniz projeye dosya eklemek isteyip istemediğiniz sorulabilir.Projeye veritabanı dosyası eklemek için Evet'e tıklayın.

  7. Tıklatın sonraki üzerinde bağlantı dizesini uygulama yapılandırma dosyası Kaydet sayfa.

  8. Veritabanı Nesnelerinizi Seçin sayfasında Tablolar düğümünü genişletin.

  9. Customers ve Orders tablolarının onay kutularına ve sonra Son'a tıklayın.

    NorthwindDataSet DataAccessTier projesine eklenir ve Veri Kaynakları penceresinde görünür.

TableAdapter Bağdaştırıcılarını Veri Kümesinden Ayırma

Veri kümesi oluşturduktan sonra, üretilen veri kümesi sınıfını TableAdapter bağdaştırıcılarından ayırın.Bunu, DataSet Projesi özelliğini ayrılmış veri kümesi sınıfını depolayacak projenin adına ayarlayarak yapın.

TableAdapter Bağdaştırıcılarını Veri Kümesinden ayırmak için

  1. Veri kümesini Veri Kümesi Tasarımcısı'nda açmak için Çözüm Gezgini'nde NorthwindDataSet.xsd'ye çift tıklayın.

  2. Tasarımcı üzerinde boş bir alana tıklayın.

  3. Özellikler penceresinde DataSet Projesi düğümünü bulun.

  4. DataSet Projesi listesinde DataEntityTier katmanına tıklayın.

  5. Oluştur menüsünde Çözümü Derle öğesine tıklatın.

Veri kümesi ve TableAdapter bağdaştırıcıları iki sınıf kitaplığı projesine ayrılır.Başlangıçta tüm veri kümesini (DataAccessTier) içeren projede şimdi yalnızca TableAdapter bağdaştırıcıları bulunur.DataSet Projesi özelliğinde belirtilen proje (DataEntityTier) türü belirtilmiş veri kümesi içerir: NorthwindDataSet.Dataset.Designer.vb (veya NorthwindDataSet.Dataset.Designer.cs).

[!NOT]

Veri kümelerini ve TableAdapter bağdaştırıcılarını ayırdığınızda ( DataSet Projesi özelliğini ayarlayarak), projede bulunan kısmi veri kümesi sınıfları otomatik olarak taşınmaz.Mevcut veri kümesi kısmi sınıflarının veri kümesi projesine el ile taşınması gerekir.

Yeni Hizmet Uygulaması Oluşturma

Bu kılavuz bir WCF hizmetini kullanarak veri erişim katmanına nasıl erişileceğini gösterdiğinden yeni bir WCF hizmeti uygulaması oluşturun.

Yeni bir WCF Hizmeti uygulaması oluşturmak için

  1. Dosya menüsünden NTierWalkthrough çözümüne yeni bir proje ekleyin.

  2. Yeni Proje iletişim kutusundaki Proje türleri bölmesinde WCF'ye tıklayın.Şablonlar bölmesinde WCF Hizmet Kitaplığı'na tıklayın.

  3. Projeyi DataService olarak adlandırın ve Tamam'a tıklayın.

    DataService projesi oluşturulur ve NTierWalkthrough çözümüne eklenir.

Müşteri ve Sipariş Verilerini Döndürmek İçin Veri Erişim Katmanında Yöntemler Oluşturma

Veri hizmetinin veri erişim katmanında iki yöntem çağırması gerekir: GetCustomers ve GetOrders.Bu yöntemler Northwind Customers ve Orders tablolarını döndürür.DataAccessTier projesinde GetCustomers ve GetOrders yöntemlerini oluşturun.

Veri erişim katmanında Customers tablosunu döndüren bir yöntem oluşturmak için

  1. İçindeki Çözüm Gezgini, NorthwindDataset.xsd kümesindeki açmak için çift tıklatın Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme.

  2. TableAdapter sağ tıklatın ve Sorgu Ekle açmak için TableAdapter Sorgu Yapılandırma Sihirbazı.

  3. Bir Komut Türü Seçin sayfasında SQL deyimi kullan'ın varsayılan değerini bırakın ve İleri'ye tıklayın.

  4. Bir Sorgu Türü Seçin sayfasında Satırı döndüren SELECT'in varsayılan değerini bırakın ve İleri'ye tıklayın.

  5. Bir SQL SELECT deyimi belirtin sayfasında varsayılan sorguyu bırakın ve İleri'ye tıklayın.

  6. Oluşturmak için Yöntemleri Seçin sayfasındaki DataTable Döndür bölümünde Yöntem adı için GetCustomers yazın.

  7. Son düğmesini tıklatın.

Veri erişim katmanında Orders tablosunu döndüren bir yöntem oluşturmak için

  1. OrdersTableAdapter bağdaştırıcısına sağ tıklayın ve Sorgu Ekle'ye tıklayın.

  2. Bir Komut Türü Seçin sayfasında SQL deyimi kullan'ın varsayılan değerini bırakın ve İleri'ye tıklayın.

  3. Bir Sorgu Türü Seçin sayfasında Satırı döndüren SELECT'in varsayılan değerini bırakın ve İleri'ye tıklayın.

  4. Bir SQL SELECT deyimi belirtin sayfasında varsayılan sorguyu bırakın ve İleri'ye tıklayın.

  5. Oluşturmak için Yöntemleri Seçin sayfasındaki DataTable Döndür bölümünde Yöntem adı için GetOrders yazın.

  6. Son düğmesini tıklatın.

  7. Oluştur menüsünde Çözümü Derle öğesine tıklatın.

Veri Hizmetinin Veri Varlığı ve Veri Erişimi Katmanlarına Başvuru Ekleme

Veri hizmetinin veri kümesinden ve TableAdapter bağdaştırıcılarından bilgi alması gerektiğinden DataEntityTier ve DataAccessTier projelerine başvurular ekleyin.

Veri hizmetine başvuru eklemek için

  1. Çözüm Gezgini'nde DataService hizmetine sağ tıkladıktan sonra Başvuru Ekle'ye tıklayın.

  2. Başvuru Ekle iletişim kutusunda Projeler sekmesine tıklayın.

  3. DataAccessTier ve DataEntityTier projelerinin her ikisini de seçin.

  4. Tamam düğmesini tıklatın.

Veri Erişim Katmanındaki GetCustomers ve GetOrder Yöntemlerini Çağırmak İçin Hizmete İşlev Ekleme

Şimdi veri erişim katmanında veri döndürme yöntemleri bulunduğuna göre, veri erişim katmanındaki yöntemleri çağırmak için veri hizmetinde yöntemler oluşturun.

[!NOT]

C# projelerinde aşağıdaki kodu derlemek için System.Data.DataSetExtensions derlemesine bir başvuru eklemeniz gerekir.

Veri hizmetinde GetCustomers ve GetOrders işlevlerini oluşturmak için

  1. DataService projesinde IService1.vb veya IService1.cs öğesine çift tıklayın.

  2. Hizmet işlemlerinizi buraya ekleyin açıklamasının altına aşağıdaki kodu ekleyin:

    <OperationContract()> _
    Function GetCustomers() As DataEntityTier.NorthwindDataSet.CustomersDataTable
    
    <OperationContract()> _
    Function GetOrders() As DataEntityTier.NorthwindDataSet.OrdersDataTable
    
    [OperationContract]
    DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers();
    
    [OperationContract]
    DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders();
    
  3. DataService projesinde Service1.vb (veya Service1.cs) öğesine çift tıklayın.

  4. Aşağıdaki kodu Service1 sınıfına ekleyin:

    Public Function GetCustomers() As DataEntityTier.NorthwindDataSet.CustomersDataTable Implements IService1.GetCustomers
        Dim CustomersTableAdapter1 As New DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter
        Return CustomersTableAdapter1.GetCustomers()
    End Function
    
    Public Function GetOrders() As DataEntityTier.NorthwindDataSet.OrdersDataTable Implements IService1.GetOrders
        Dim OrdersTableAdapter1 As New DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter
        Return OrdersTableAdapter1.GetOrders()
    End Function
    
    public DataEntityTier.NorthwindDataSet.CustomersDataTable GetCustomers()
    {
        DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter
             CustomersTableAdapter1
            = new DataAccessTier.NorthwindDataSetTableAdapters.CustomersTableAdapter();
        return CustomersTableAdapter1.GetCustomers();
    
    }
    public DataEntityTier.NorthwindDataSet.OrdersDataTable GetOrders()
    {
        DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter
             OrdersTableAdapter1
            = new DataAccessTier.NorthwindDataSetTableAdapters.OrdersTableAdapter();
        return OrdersTableAdapter1.GetOrders();
    
    }
    
  5. Oluştur menüsünde Çözümü Derle öğesine tıklatın.

Veri Hizmetinden Verileri Görüntülemek İçin Bir Sunu Katmanı Oluşturma

Şimdi çözümde veri erişim katmanına çağrı gönderen yöntemler bulunduğuna göre, veri hizmetine çağrı gönderecek ve verileri kullanıcılara sunacak başka bir proje oluşturun.Bu kılavuz için bir Windows Forms uygulaması oluşturun; bu n katmanlı uygulamanın sunu katmanıdır.

Sunu katmanı projesi oluşturmak için

  1. Dosya menüsünden NTierWalkthrough çözümüne yeni bir proje ekleyin.

  2. Yeni Proje iletişim kutusundaki Proje türleri bölmesinde Windows'a tıklayın.Şablonlar bölmesinde Windows Forms Uygulaması'na tıklayın.

  3. Projeyi PresentationTier olarak adlandırın ve Tamam'a tıklayın.

  4. PresentationTier projesi oluşturulur ve NTierWalkthrough çözümüne eklenir.

PresentationTier Projesini Başlangıç Projesi Olarak Ayarlama

Sunu katmanı verileri sunmak ve verilerle etkileşimde bulunmak için kullanılan gerçek istemci uygulaması olduğundan PresentationTier projesini Başlangıç projesi olarak ayarlamanız gerekir.

Yeni sunu katmanı projesini Başlangıç projesi olarak ayarlamak için

  • Çözüm Gezgini'nde PresentationTier katmanına sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'ya tıklayın.

Sunu Katmanına Başvuru Ekleme

PresentationTier istemci uygulaması, hizmetteki yöntemlere erişmek için veri hizmetine yönelik bir hizmet başvurusu gerektirir.Buna ek olarak, WCF hizmeti tür paylaşımını etkinleştirmek için veri kümesine bir başvuru gerektirir.Veri hizmeti aracılığıyla tür paylaşımı etkinleştirilinceye kadar kısmi veri kümesi sınıfına eklenen kod sunu katmanı tarafından kullanılamaz.Genelde veri tablosundaki satır ve sütun değişikliği olaylarını doğrulama gibi bir kod ekleyeceğiniz için büyük olasılıkla bu koda istemcisinden erişmek isteyeceksiniz.

Sunu katmanına bir başvuru eklemek için

  1. Çözüm Gezgini'nde PresentationTier katmanına sağ tıkladıktan sonra Başvuru Ekle'ye tıklayın.

  2. İçindeki Başvuru Ekle iletişim kutusunda, tıklatın projeleri sekmesi.

  3. DataEntityTier katmanını seçin ve Tamam'a tıklayın.

Sunu katmanı hizmeti başvuru eklemek için

  1. Çözüm Gezgini'nde PresentationTier katmanına sağ tıkladıktan sonra Hizmet Başvurusu Ekle'ye tıklayın.

  2. Hizmet Başvurusu Ekle iletişim kutusunda Keşfedin'e tıklayın.

  3. Service1'i seçin ve Tamam'a tıklayın.

    [!NOT]

    Geçerli bilgisayarda birden çok hizmetiniz varsa, bu kılavuzda önceden oluşturduğunuz hizmeti seçin (GetCustomers ve GetOrders yöntemlerini içeren hizmet).

Veri Hizmetinin Döndürdüğü Verileri Görüntülemek İçin Forma DataGridView Görünümleri Ekleme

Veri Hizmetine hizmet başvurusunu ekledikten sonra Veri Kaynakları penceresi hizmet tarafından döndürülen verilerle otomatik olarak doldurulur.

Forma iki DataGridView veri bağlama öğesi eklemek için

  1. Çözüm Gezgini'nde PresentationTier projesini seçin.

  2. Veri Kaynakları penceresinde NorthwindDataSet'i genişletin ve Customers düğümünü bulun.

  3. Customers düğümünü Form1 üzerine sürükleyin.

  4. Veri Kaynakları penceresinde Customers düğümünü genişletin ve ilişkili Orders düğümünü bulun. ( Customers düğümüyle iç içe geçmiş Orders düğümü).

  5. İlişkili Orders düğümünü Form1 üzerine sürükleyin.

  6. Formda boş bir alanı çift tıklayarak bir Form1_Load olay işleyicisi oluşturun.

  7. Aşağıdaki kod ekleyin Form1_Load olay işleyicisi.

    Dim DataSvc As New ServiceReference1.Service1Client
    NorthwindDataSet.Customers.Merge(DataSvc.GetCustomers)
    NorthwindDataSet.Orders.Merge(DataSvc.GetOrders)
    
    ServiceReference1.Service1Client DataSvc = 
        new ServiceReference1.Service1Client();
    northwindDataSet.Customers.Merge(DataSvc.GetCustomers());
    northwindDataSet.Orders.Merge(DataSvc.GetOrders());
    

Hizmet Tarafından İzin Verilen En Büyük İleti Boyutunu Artırma

Hizmet, Customers ve Orders tablolarından veri döndürdüğünden, maxReceivedMessageSize için varsayılan değer verileri tutabilecek kadar büyük değildir ve artırılması gerekir.Bu kılavuz için değeri 6553600 olarak değiştirin.İstemcideki değeri değişirin; bunu yaptığınızda hizmet başvurusu otomatik olarak güncelleştirilir.

[!NOT]

Varsayılan alt sınır boyutu hizmet reddi (DoS) saldırılarına maruz kalmayı sınırlamak içindir.Daha fazla bilgi için bkz. MaxReceivedMessageSize.

MaxReceivedMessageSize değerini artırmak için

  1. Çözüm Gezgini'nde, PresentationTier projesindeki app.config dosyasına çift tıklayın.

  2. maxReceivedMessage boyut özniteliğini bulun ve değerini 6553600 olarak değiştirin.

Uygulamayı Test Etme

Uygulamayı çalıştırın.Veriler veri hizmetinden alınır ve formda görüntülenir.

Uygulamayı test etmek için

  1. F5 tuşuna basın.

  2. Customers ve Orders tablolarındaki veriler veri hizmetinden alınır ve formda görüntülenir.

Sonraki Adımlar

Uygulama gereksinimlerinize bağlı olarak, Windows tabanlı bir uygulama içinde ilgili verileri kaydettikten sonra gerçekleştirmek isteyebileceğiniz birkaç adım vardır.Örneğin, bu uygulamada aşağıdaki geliştirmeleri yapabilirsiniz:

Ayrıca bkz.

Diğer Kaynaklar

N Katmanlı Uygulamalarda Veri Kümeleriyle Çalışma

Hiyerarşik Güncelleştirme

Visual Studio'da Veri Erişimi