Aracılığıyla paylaş


İzlenecek yol: n-katmanlı veri uygulaması oluşturma

N-katmanlı veri uygulamalardır ve birden çok mantıksal katmanlara ayırarak veri erişim uygulamalarını veya katmanları.Uygulama bileşenlerine ayırarak ayrı katmanları devamlılık ve uygulama ölçeklenebilirliğini artırır.Bunu daha kolay tam çözümü yeniden tasarlamanız gerekmeden uygulanabilecek tek bir katmanı yeni teknolojileri kullanmaya başlamasına etkinleştirerek yapar.Bir veri katmanı ve n-katmanlý mimari bir orta katman, bir sunu katmanı içerir.Orta Katman genellikle veri erişim katmanı, iş mantığı katmanı ve kimlik doğrulaması ve onaylama gibi paylaşılan bileşenleri içerir.Veri katmanı bir ilişkisel veritabanı içerir.N-tier uygulamaları yalıtım sunu katmanı erişen son kullanıcılardan korumak için orta katman veri erişim katmanı genellikle hassas bilgileri depolayın.Daha fazla bilgi için bkz. N-katmanlı veri Applications'a genel bakış.

N-katmanlı uygulamanın çeşitli katmanlarını ayrı bir yolu uygulamanızda dahil etmek istediğiniz her katman için ayrı projeler oluşturmaktır.Typed DataSet içeren bir DataSet Project özelliği hangi projelerde oluşturulan veri kümesini belirleyen ve TableAdapter kod içine gitmek.

Bu izlenecek yolda, dataset ayırmak gösterilmiştir ve TableAdapter kullanarak ayrı bir sınıf kitaplığı projeleri koda Dataset Designer.Dataset ve TableAdapter kod ayırın sonra oluşturacağınız bir Windows Communication Foundation hizmetlerini ve Visual Studio wcf Veri Hizmetleri veri erişim katmanı çağırmak için hizmet.Son olarak, sunu katmanı olarak bir Windows Forms uygulaması oluşturur.Bu katman veri hizmetinden verilere erişiyor.

Bu anlatım sırasında aşağıdaki adımları gerçekleştirin:

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

  • İki sınıf kitaplığı projeleri n katmanı ekleyin.

  • Kullanarak bir typed dataset oluşturun Veri kaynağı Yapılandırma Sihirbazı'nı.

  • Oluşturulan ayrı TableAdapters ve dataset koda ayrı projeler.

  • Veri erişim katmanı çağırmak için bir Windows Communication Foundation (wcf) hizmet oluşturun.

  • Veri erişim Katmanı ' veri almak için hizmet işlevleri oluşturun.

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

  • Veri kaynağına bağlanmış Windows Forms denetimleri oluşturun.

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

video bağlantısı Bu konunun videosu için bkz: Video nasıl: bir n-katmanlı veri uygulaması oluşturma.

Önkoşullar

Bu izlenecek yolu tamamlamak için gerekir:

Dataset (DataEntityTier) tutmak için n-katmanlı çözüm ve sınıf kitaplığı oluşturma

Bu izlenecek yolda ilk adımı, bir çözüm ya da iki sınıf kitaplığı projeleri oluşturmaktır.Birinci sınıf kitaplığı (oluşturulmuş DataSet sınıfı hem de uygulamanın verileri tutacaktır DataTable) belirtilmiş tutacaktır.Bu proje, uygulama veri varlık katmanı olarak kullanılır ve genelde orta katman bulunur.Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme İlk veri kümesi oluşturun ve iki sınıf kitaplıkları otomatik olarak kod ayırmak için kullanılır.

[!NOT]

Proje ve çözüm tıklatmadan önce doğru adı mutlaka Tamam.Bunu yapmak için Bu izlenecek yolu tamamlamak için kolaylaştırır.

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

  1. Dan Dosya menüsünde, yeni bir proje yaratın.

    [!NOT]

    Dataset Designer bulunan Visual Basic ve C# projeleri.Bu dillerden birinde yeni bir proje oluşturun.

  2. İçinde Yeni bir proje iletişim kutusunda Proje türleri bölmesinde tıklatın Windows.

  3. ' I tıklatın Class Library şablonu.

  4. Projeyi DataEntityTier olarak adlandırın.

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

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

    DataEntityTier projesi içeren bir NTierWalkthrough çözüm oluşturulur ve eklenen Çözüm Gezgini.

TableAdapters (DataAccessTier) tutmak için sınıf kitaplığı oluşturma

DataEntityTier projesini oluşturduktan sonra sonraki adıma başka bir sınıf kitaplığı projesi oluşturmaktır.Bu proje oluşturulan tutun TableAdapters ve veri erişim katmanı uygulama.Veri erişim katmanı, genelde orta katman bulunur ve veritabanına bağlanmak için gereken bilgileri içerir.

TableAdapters için yeni sınıf kitaplığı oluşturmak için

  1. Dan Dosya menüsünde, yeni bir proje NTierWalkthrough ekleyin.

  2. İçinde Yeni bir proje iletişim kutusunda şablonları bölmesinde tıklatın Sınıf kitaplığı.

  3. DataAccessTier adını verin ve projeyi tıklatın Tamam.

    DataAccessTier proje oluşturulur ve NTierWalkthrough çözüme eklenir.

Veri kümesi oluşturma

Sonraki adım, türü belirtilmiş veri kümesi oluşturmaktır.Typed DataSet (DataTable sınıflarına dahil) her iki dataset sınıfı ile oluşturulan ve TableAdapter tek bir projede sınıfları.(Tüm sınıflar, tek bir dosya olarak oluşturulur.) Dataset ayırmak ne zaman ve TableAdapters farklı projeler içine bırakarak diğer proje için dataset sınıfı olan TableAdapter özgün projedeki sınıfları.Bu nedenle, sonuçta içeren projede bir dataset yaratmak TableAdapters (DataAccessTier projesi).Dataset kullanarak oluşturacağınız Veri kaynağı Yapılandırma Sihirbazı'nı.

[!NOT]

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

Veri kümesi oluşturmak için

  1. DataAccessTier içinde tıklatın Çözüm Gezgini.

  2. Üzerinde veri menüsünde tıklatın Veri kaynağını Göster.

  3. İçinde Veri kaynakları penceresinde tıklatın Yeni veri kaynağı Ekle başlatmak için Veri kaynağı Yapılandırma Sihirbazı'nı.

  4. Üzerinde bir veri kaynağı türü seç sayfasında, tıklatın Veritabanı ve ardından İleri.

  5. Üzerinde Choose Your Data Connection sayfasında, aşağıdaki eylemlerden birini gerçekleştirin:

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

    -veya-

    ' I tıklatın Yeni bir bağlantı açmak için Add Connection iletişim kutusu.Daha fazla bilgi için bkz. Ekle/Değiştir bağlantısı iletişim kutusunda (Genel).

  6. Veritabanı parola gerektiriyorsa, önemli verileri içerir ve sonra'seçeneğini İleri.

    [!NOT]

    Bir yerel veritabanı dosyasını (sql Server'a bağlanmak yerine) seçtiyseniz, projeye dosya eklemek istediğiniz istenebilir.' I tıklatın Evet veritabanı dosyasını projenize eklemek için.

  7. ' I tıklatın İleri , Bağlantı dizesini uygulama yapılandırma dosyasına kaydet sayfa.

  8. Genişletme Tablolar düğümde Veritabanı nesnelerinizi sayfa.

  9. Onay kutularını tıklatın müşterilerin ve siparişleri tablolar ve sonra Son.

    NorthwindDataSet DataAccessTier projenize eklenir ve yer Veri kaynakları pencere.

TableAdapters Dataset nesnesinden ayıran

Veri kümesi oluşturduktan sonra oluşturulan dataset sınıfı TableAdapters ayırın.Ayarlayarak bunu DataSet proje özelliğini dataset sınıfı ayrılmış depolanacağı projenin adı.

Dataset nesnesinden TableAdapters ayırmak için

  1. Çift NorthwindDataSet.xsd , Çözüm Gezgini dataset içinde açmak için Dataset Designer.

  2. Tasarımcı üzerinde boş bir alanı tıklatın.

  3. Bulun DataSet proje düğümünde özelliklerini pencere.

  4. İçinde DataSet proje tıklatın DataEntityTier.

  5. Yapı menüsünde, Çözümü Derle'yi tıklatın.

Dataset ve TableAdapters iki sınıf kitaplığı projeleri ayrılır.Başlangıçta şimdi tüm dataset (DataAccessTier) yer alan proje TableAdapters içerir.Proje içinde belirlenen DataSet proje (DataEntityTier) özelliği türü belirtilmiş veri kümesini içerir: NorthwindDataSet.Dataset.Designer.vb (veya NorthwindDataSet.Dataset.Designer.cs).

[!NOT]

Ne zaman, ayrı veri kümeleri ve TableAdapters (ayarlayarak DataSet proje özelliği), varolan projenin kısmi dataset sınıflarda değil taşınabilir otomatik olarak.Varolan veri kümesi parçalı sınıflar, veri kümesini projeye el ile taşınmalıdır.

Yeni bir hizmet uygulaması oluşturuluyor

Bu anlatımda bir wcf hizmeti kullanarak veri erişim katmanı nasıl gösterilir, çünkü yeni bir wcf hizmeti uygulaması oluşturun.

Yeni bir wcf hizmeti uygulaması oluşturmak için

  1. Dan Dosya menüsünde, yeni bir proje NTierWalkthrough ekleyin.

  2. İçinde Yeni bir proje iletişim kutusunda Proje türleri bölmesinde tıklatın wcf.İçinde şablonları bölmesinde tıklatın wcf hizmet kitaplığı.

  3. DataService adını verin ve projeyi tıklatın Tamam.

    DataService proje oluşturulur ve NTierWalkthrough çözüme eklenir.

Yöntemi müşteriler ve Siparişler veri döndürmek için veri erişim katmanı oluşturma

İki yöntem veri erişim katmanı Aranacak veri hizmeti vardır: GetCustomers ve GetOrders.Bu yöntemler Northwind müşteriler ve Siparişler tablolarını döndürecektir.GetCustomers ve GetOrders yöntemleri DataAccessTier projesi oluşturun.

Müşteriler tablosunu döndüren bir yöntem veri erişim katmanı oluşturmak için

  1. İçinde Çözüm Gezgini, dataset içinde açmak için NorthwindDataset.xsd çift Türü Belirtilmiş Veri Kümeleri Oluşturma ve Düzenleme.

  2. TableAdapter sağ tıklatıp Sorgu Ekle açmak için Sorgu TableAdapter Configuration Wizard.

  3. Üzerinde komut türü seçin sayfasında, varsayılan değeri bırakın Use sql deyimleri 'ı tıklatın İleri.

  4. Üzerinde sorgu türü seçin sayfasında, varsayılan değeri bırakın seçin, satır döndürür 'ı tıklatın İleri.

  5. Üzerinde belirtme sql select deyimi sayfa, varsayılan sorgu bırakın ve tıklayın İleri.

  6. Üzerinde Oluşturma yöntemlerini seçin sayfasında, GetCustomers için yazın Yöntem adı , bir DataTable dönmek bölüm.

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

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

  1. ' OrdersTableAdapter'ı sağ tıklatın ve Sorgu Ekle.

  2. Üzerinde komut türü seçin sayfasında, varsayılan değeri bırakın Use sql deyimleri 'ı tıklatın İleri.

  3. Üzerinde sorgu türü seçin sayfasında, varsayılan değeri bırakın seçin, satır döndürür 'ı tıklatın İleri.

  4. Üzerinde belirtme sql select deyimi sayfa, varsayılan sorgu bırakın ve tıklayın İleri.

  5. Üzerinde Oluşturma yöntemlerini seçin sayfasında, GetOrders için yazın Yöntem adı , bir DataTable dönmek bölüm.

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

  7. Yapı menüsünde, Çözümü Derle'yi tıklatın.

Veri hizmeti veri varlık başvurusu ve veri erişim katmanı ekleme

Veri Hizmeti dataset ve TableAdapters bilgi gerektirdiğinden, DataEntityTier ve DataAccessTier projelere başvurular ekleyin.

Veri hizmeti eklemek için

  1. Sağ tıklatın, DataService Çözüm Gezgini 'ı tıklatın Add Reference.

  2. ' I tıklatın projeleri sekmesinde Add Reference iletişim kutusu.

  3. Her ikisini de seçin DataAccessTier ve DataEntityTier projeleri.

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

İşlevler veri erişim katmanı GetCustomers ve GetOrders yöntemleri çağırmak için hizmet ekleme

Veri erişim katmanı içeren veri döndürmek için yöntemleri, yöntemleri veri erişim katmanı yöntemleri çağırmak için veri hizmeti oluşturun.

[!NOT]

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

GetCustomers ve GetOrders işlevleri veri Hizmeti'nde oluşturmak için

  1. İçinde DataService projesi, IService1.vb veya IService1.cs çift tıklatın.

  2. Altında aşağıdaki kodu ekleyip hizmet işlemleri burada eklemek yorum:

    <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 dosyasını) çift tıklatın.

  4. Service1 sınıfına aşağıdaki kodu 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. Yapı menüsünde, Çözümü Derle'yi tıklatın.

Veri hizmetinden verileri görüntülemek için bir sunu katmanı oluşturma

Çözüm veri erişim katmanı çağrı yöntemlerini içeren veri hizmeti içerir, veri hizmeti çağırmak ve veri sunmak için kullanıcıların başka bir projesi oluşturun.Bu anlatım için bir Windows Forms uygulaması oluşturun; n-katmanlı uygulamanın sunu katmanı budur.

Sunu katmanı projesi oluşturmak için

  1. Dan Dosya menüsünde, yeni bir proje NTierWalkthrough ekleyin.

  2. İçinde Yeni bir proje iletişim kutusunda Proje türleri bölmesinde tıklatın Windows.İçinde şablonları bölmesinde tıklatın Windows Forms uygulaması.

  3. PresentationTier adını verin ve projeyi tıklatın Tamam.

  4. PresentationTier proje oluşturulur ve NTierWalkthrough çözüme eklenir.

PresentationTier proje başlangıç projesi olarak ayarlama

Sunu katmanı sunmak ve veriyle etkileşim kurmak için kullanılan gerçek istemci uygulaması olduğundan PresentationTier projesini başlangıç projesi olacak şekilde ayarlamanız gerekir.

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

  • İçinde Çözüm Gezgini, sağ PresentationTier 'ı tıklatın başlangıç projesi olarak ayarla.

Sunu katmanı başvuruları ekleme

İstemci uygulaması PresentationTier hizmetinde yöntemlerine erişmek için bir veri hizmeti hizmet başvuru gerektirir.Buna ek olarak, DataSet nesnesine bir başvuru türü wcf hizmeti tarafından paylaşımı etkinleştirmek için gereklidir.Kısmi dataset sınıfına eklediğiniz kod türü veri hizmeti aracılığıyla paylaşımını etkinleştirene kadar sunu katmanı için kullanılamaz.Satır ve sütun veri tablosunun bir olaylar değiştirme gibi doğrulama kodu genellikle ekleyin çünkü bu kod istemcisinden erişmek istediğiniz olasıdır.

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

  1. İçinde Çözüm Gezgini, PresentationTier sağ tıklatın ve'ı tıklatın Add Reference.

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

  3. Seçin DataEntityTier 'ı tıklatın Tamam.

Sunu Katmanı hizmeti başvuru eklemek için

  1. İçinde Çözüm Gezgini, PresentationTier sağ tıklatın ve'ı tıklatın Hizmet Başvuru Ekle.

  2. İçinde Hizmet Başvuru Ekle iletişim kutusunda, tıklatın bulma.

  3. Seçin Service1 'ı tıklatın Tamam.

    [!NOT]

    Geçerli bilgisayarda birden çok hizmet varsa, Bu yönergede (GetCustomers ve GetOrders yöntemlerini içeren hizmeti) daha önce oluşturduğunuz hizmet seçin.

DataGridViews veri hizmeti tarafından döndürülen verileri görüntülemek için Form ekleme

Veri hizmeti hizmet başvuru ekledikten sonra Veri kaynakları pencere hizmet tarafından döndürülen verilerle doldurulan otomatik olarak.

DataGridViews forma bağlı iki veri eklemek için

  1. İçinde Çözüm Gezgini, PresentationTier projesini seçin.

  2. İçinde Veri kaynakları penceresinde genişletin NorthwindDataSet bulun müşterilerin düğümü.

  3. Sürükleme müşterilerin Form1 üzerine düğüm.

  4. İçinde Veri kaynakları penceresinde, genişletin Müşteriler düğümü ve ilgili bulun siparişleri düğümü ( siparişleri iç içe düğüm içinde Müşteriler düğümü).

  5. İlgili sürükleyin siparişleri Form1 üzerine düğüm.

  6. Oluşturma bir Form1_Load olay işleyicisi form boş bir alanı çift tıklatarak.

  7. Form1_Load olay işleyicisine aşağıdaki kodu ekleyin.

    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 izin verilen en büyük ileti boyutunu artırma

Hizmet Customers ve Orders tablolarının veri getirmesi nedeniyle, maxReceivedMessageSize için varsayılan değer verileri tutabilecek kadar büyük değildir ve artırılması gerekiyor.Bu izlenecek yol için 6553600 değerini değiştirir.İstemcideki değeri değişir ve bu hizmeti başvurusu otomatik olarak güncelleştirir.

[!NOT]

Daha düşük varsayılan boyutu (DoS) hizmet reddi saldırılarına maruz kalma sınırlamak için tasarlanmıştır.Daha fazla bilgi için bkz. MaxReceivedMessageSize.

MaxReceivedMessageSize değerini artırmak için

  1. İçinde Çözüm Gezgini, PresentationTier projesinde app.config dosyasını çift tıklatın.

  2. Bulun maxReceivedMessage boyut öznitelik ve değer değiştirme 6553600.

Uygulamayı Test Etme

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

Uygulamayı test etmek için

  1. F5'e basın.

  2. Müşteriler ve Siparişler tablolarındaki verileri veri hizmetinden alınan ve formda görüntülenir.

Sonraki Adımlar

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

Ayrıca bkz.

Kavramlar

Visual Studio 2012'deki Veri Uygulaması Geliştirme Yenilikleri

Diğer Kaynaklar

n-katmanlı uygulamalarda DataSet nesneleri ile çalışma

Hiyerarşik güncelleştirme

Visual Studio verilere erişme