Aracılığıyla paylaş


Visual Studio'da Windows Communication Foundation Hizmetleri ve WCF Veri Hizmetleri

Visual Studio, dağıtılmış uygulamalar oluşturmak için Windows Communication Foundation (WCF) ve WCF Veri Hizmetleri, Microsoft teknolojileriyle çalışmaya yönelik araçlar sağlar. Bu konu, Visual Studio perspektifinden hizmetlere giriş niteliğindedir. Tüm belgeler için bkz. WCF Veri Hizmetleri 4.5.

WCF nedir?

Windows Communication Foundation (WCF), güvenli, güvenilir, işlem uygulanmış ve birlikte çalışabilen dağıtılmış uygulamalar oluşturmaya yönelik birleşik bir çerçevedir. ASMX web hizmetleri, .NET Uzaktan İletişimi, Enterprise Services (Dağıtılmış Bileşen Nesne Modeli (DCOM)) ve Microsoft İleti Kuyruğu (MSMQ) gibi eski işlemler arası iletişim teknolojilerinin yerini alır. WCF, tüm bu teknolojilerin işlevselliğini birleşik bir programlama modeli altında bir araya getirir. Bu, dağıtılmış uygulamalar geliştirme deneyimini basitleştirir.

WCF Veri Hizmetleri nedir?

WCF Veri Hizmetleri, Açık Veri (Açık Veri Protokolü (OData)) Protokolü standardının bir uygulamasıdır. WCF Veri Hizmetleri tablo verilerini rest API'leri kümesi olarak kullanıma sunmanıza olanak tanıyarak GET, POST, PUT veya DELETE gibi standart HTTP fiillerini kullanarak veri döndürmenizi sağlar. Sunucu tarafında, WCF Veri Hizmetleri yeni OData hizmetleri oluşturmak için ASP.NET Web API'sinin yerini almaktadır. WCF Veri Hizmetleri istemci kitaplığı, Visual Studio'dan bir .NET uygulamasında (Project>Add Service Reference) OData hizmetlerini kullanmak için iyi bir seçim olmaya devam eder. Daha fazla bilgi için bkz. WCF Veri Hizmetleri 4.5.

WCF programlama modeli

WCF programlama modeli iki varlık arasındaki iletişimi temel alır: WCF hizmeti ve WCF istemcisi. Programlama modeli .NET'teki ad alanında System.ServiceModel kapsüllenmiş.

WCF Hizmeti

WCF hizmeti, hizmetle istemci arasındaki bir sözleşmeyi tanımlayan bir arabirimi temel alır. Aşağıdaki kodda gösterildiği gibi bir ServiceContractAttribute öznitelikle işaretlenir:

[ServiceContract]
public interface IService1

WCF hizmeti tarafından kullanıma sunulan işlevleri veya yöntemleri bir OperationContractAttribute öznitelikle işaretleyerek tanımlarsınız.

[OperationContract]
string GetData(string value);

Buna ek olarak, bileşik bir türü bir öznitelikle DataContractAttribute işaretleyerek serileştirilmiş verileri kullanıma sağlayabilirsiniz. Bu, istemcide veri bağlamayı etkinleştirir.

Bir arabirim ve yöntemleri tanımlandıktan sonra, bunlar arabirimini uygulayan bir sınıfta kapsüllenir. Tek bir WCF hizmet sınıfı birden çok hizmet sözleşmesi uygulayabilir.

WCF hizmeti, uç nokta olarak bilinen hizmet aracılığıyla tüketim için kullanıma sunulur. Uç nokta, hizmetle iletişim kurmanın tek yolunu sağlar; diğer sınıflarda olduğu gibi doğrudan başvuru yoluyla hizmete erişemezsiniz.

Uç nokta bir adres, bağlama ve sözleşmeden oluşur. Adres, hizmetin bulunduğu yeri tanımlar; bu bir URL, Dosya Aktarım Protokolü (FTP) adresi veya ağ ya da yerel yol olabilir. Bağlama, hizmetle iletişim kurma yönteminizi tanımlar. WCF bağlamaları HTTP veya FTP gibi bir protokolü, Windows Kimlik Doğrulaması veya kullanıcı adları ve parolaları gibi bir güvenlik mekanizmasını ve çok daha fazlasını belirtmek için çok yönlü bir model sağlar. Sözleşme, WCF hizmet sınıfı tarafından kullanıma sunulan işlemleri içerir.

Tek bir WCF hizmeti için birden çok uç nokta kullanıma sunulur. Bu, farklı istemcilerin aynı hizmetle farklı şekillerde iletişim kurmasını sağlar. Örneğin, bir bankacılık hizmeti çalışanlar için bir uç nokta ve her biri farklı bir adres, bağlama ve/veya sözleşme kullanan dış müşteriler için başka bir uç nokta sağlayabilir.

WCF istemcisi

WCF istemcisi, bir uygulamanın WCF hizmetiyle iletişim kurmasını sağlayan bir ara sunucu ve hizmet için tanımlanan uç noktayla eşleşen bir uç noktadan oluşur. Proxy, app.config dosyasında istemci tarafında oluşturulur ve hizmet tarafından kullanıma sunulan türler ve yöntemler hakkında bilgi içerir. Birden çok uç noktayı kullanıma sunan hizmetler için istemci, örneğin HTTP üzerinden iletişim kurmak ve Windows Kimlik Doğrulaması'nı kullanmak için gereksinimlerine en uygun olanı seçebilir.

Bir WCF istemcisi oluşturulduktan sonra, kodunuzdaki hizmete diğer nesneler gibi başvurursunuz. Örneğin, daha önce gösterilen yöntemi çağırmak GetData için aşağıdakine benzer bir kod yazabilirsiniz:

private void button1_Click(System.Object sender, System.EventArgs e)
{
    ServiceReference1.Service1Client client = new
        ServiceReference1.Service1Client();
    string returnString;

    returnString = client.GetData(textBox1.Text);
    label1.Text = returnString;
}

Visual Studio'da WCF araçları

Visual Studio, hem WCF hizmetleri hem de WCF istemcileri oluşturmanıza yardımcı olacak araçlar sağlar. Araçları gösteren bir izlenecek yol için bkz . İzlenecek Yol: Windows Forms'da basit bir WCF hizmeti oluşturma.

WCF hizmetleri oluşturma ve test

Kendi hizmetinizi hızlı bir şekilde oluşturmak için WCF Visual Studio şablonlarını temel olarak kullanabilirsiniz. Ardından, hizmette hata ayıklamak ve test etmek için WCF Hizmeti Otomatik Ana Bilgisayarı ve WCF Test İstemcisi'ni kullanabilirsiniz. Bu araçlar birlikte hızlı ve kullanışlı bir hata ayıklama ve test döngüsü sağlar ve bir barındırma modeline erken aşamada bağlanma gereksinimini ortadan kaldırır.

WCF Şablonları

WCF Visual Studio şablonları hizmet geliştirme için temel bir sınıf yapısı sağlar. Yeni Proje Ekle iletişim kutusunda çeşitli WCF şablonları bulunur. Bunlar WCF hizmet kitaplığı projelerini, WCF hizmet web sitelerini ve WCF Hizmet öğesi şablonlarını içerir.

Şablon seçtiğinizde, bir hizmet sözleşmesi, hizmet uygulaması ve hizmet yapılandırması için dosyalar eklenir. Tüm gerekli öznitelikler zaten eklenerek basit bir "Merhaba Dünya" hizmet türü oluşturulur ve herhangi bir kod yazmanız gerekmez. Gerçek dünya hizmetiniz için işlevler ve yöntemler sağlamak için kod eklemek isteyeceksiniz, ancak şablonlar temel temeli sağlar.

WCF şablonları hakkında daha fazla bilgi edinmek için bkz . WCF Visual Studio şablonları.

WCF hizmet konağı

Bir WCF hizmet projesi için Visual Studio hata ayıklayıcısını başlattığınızda (F5 tuşuna basarak), WCF Hizmet Ana Bilgisayarı aracı hizmeti yerel olarak barındırmaya otomatik olarak başlatılır. WCF Hizmet Konağı bir WCF hizmet projesindeki hizmetleri numaralandırır, projenin yapılandırmasını yükler ve bulduğu her hizmet için bir konak oluşturur.

WCF Hizmet Ana Bilgisayarı kullanarak, ek kod yazmadan veya geliştirme sırasında belirli bir konağa işleme yapmadan bir WCF hizmetini test edebilirsiniz.

WCF Hizmet Konağı hakkında daha fazla bilgi edinmek için bkz . WCF hizmet konağı (WcfSvcHost.exe).

WCF test istemcisi

WCF Test İstemcisi aracı, test parametrelerini girmenize, bu girişi bir WCF hizmetine göndermenize ve hizmetin geri gönderdiği yanıtı görüntülemenize olanak tanır. WCF Hizmet Konağı ile birleştirdiğinizde kullanışlı bir hizmet testi deneyimi sağlar. Aracı %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE klasöründe bulun.

BIR WCF hizmet projesinde hata ayıklamak için F5 tuşuna bastığınızda, WCF Test İstemcisi açılır ve yapılandırma dosyasında tanımlanan hizmet uç noktalarının listesini görüntüler. Parametreleri test edebilir ve hizmeti başlatabilir ve hizmetinizi sürekli test etmek ve doğrulamak için bu işlemi yineleyebilirsiniz.

WCF Test İstemcisi hakkında daha fazla bilgi edinmek için bkz. WCF test istemcisi (WcfTestClient.exe).

Visual Studio'da WCF hizmetlerine erişme

Visual Studio, Hizmet Başvurusu Ekle iletişim kutusunu kullanarak eklediğiniz hizmetler için otomatik olarak bir ara sunucu ve uç nokta oluşturarak WCF istemcileri oluşturma görevini basitleştirir. Tüm gerekli yapılandırma bilgileri app.config dosyasına eklenir. Çoğu zaman, tek yapmanız gereken hizmeti kullanmak için örneği açmaktır.

Hizmet Başvurusu Ekle iletişim kutusu, bir hizmetin adresini girmenizi veya çözümünüzde tanımlanan bir hizmeti aramanızı sağlar. İletişim kutusu, hizmetlerin ve bu hizmetler tarafından sağlanan işlemlerin listesini döndürür. Ayrıca koddaki hizmetlere başvuracağınız ad alanını tanımlamanıza da olanak tanır.

Hizmet Başvurularını Yapılandır iletişim kutusu, bir hizmetin yapılandırmasını özelleştirmenizi sağlar. Bir hizmetin adresini değiştirebilir, erişim düzeyini, zaman uyumsuz davranışı ve ileti sözleşmesi türlerini belirtebilir ve tür yeniden kullanımını yapılandırabilirsiniz.

Hizmet uç noktası seçme

Bazı Windows Communication Foundation (WCF) hizmetleri, istemcinin hizmetle iletişim kurabileceği birden çok uç noktayı kullanıma sunar. Örneğin, bir hizmet HTTP bağlaması ve kullanıcı adı ve parola güvenliği kullanan bir uç nokta ile FTP ve Windows Kimlik Doğrulaması kullanan ikinci bir uç noktayı kullanıma verebilir. İlk uç nokta, hizmete güvenlik duvarı dışından erişen uygulamalar tarafından, ikincisi ise intranette kullanılabilir.

Böyle bir durumda, bir hizmet başvurusu için oluşturucuya parametre olarak belirtebilirsiniz endpointConfigurationName .

Not

Bilgisayarınız bu makaledeki Bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Visual Studio'nun farklı bir sürümünü veya farklı ortam ayarlarını kullanıyor olabilirsiniz. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.

Hizmet uç noktası seçmek için

  1. Çözüm Gezgini proje düğümüne sağ tıklayıp Hizmet başvurusu ekle'yi seçerek WCF hizmetine başvuru ekleyin.

  2. Kod Düzenleyicisi'nde hizmet başvurusu için bir oluşturucu ekleyin:

    ServiceReference.Service1Client proxy = new ServiceReference.Service1Client(
    

    Not

    ServiceReference değerini hizmet başvurusunun ad alanıyla, Service1Client değerini ise hizmetin adıyla değiştirin.

  3. Oluşturucu için aşırı yüklemeleri içeren bir IntelliSense listesi görüntülenir. endpointConfigurationName As String Aşırı yüklemeyi seçin.

  4. Aşırı yüklemenin ardından ConfigurationName yazın = ; burada ConfigurationName, kullanmak istediğiniz uç noktanın adıdır.

    Not

    Kullanılabilir uç noktaların adlarını bilmiyorsanız, bunları app.config dosyasında bulabilirsiniz.

WCF hizmetinin kullanılabilir uç noktalarını bulmak için

  1. Çözüm Gezgini'da, hizmet başvurusunu içeren projenin app.config dosyasına sağ tıklayın ve ardından Aç'a tıklayın. Dosya Kod Düzenleyicisi'nde görünür.

  2. Dosyada <Client> etiketi arayın.

  3. etiketi altında <Client> ile <Endpoint>başlayan bir etiket arayın.

    Hizmet başvurusu birden çok uç nokta sağlıyorsa iki veya daha fazla <Endpoint etiket olacaktır.

  4. Etiketin <EndPoint> içinde bir name="SomeService" parametresi bulursunuz (Burada SomeService bir uç nokta adını temsil eder). Bu, hizmet başvurusu için bir oluşturucunun endpointConfigurationName As String aşırı yüklemesine geçirilebilen uç noktanın adıdır.

Bir hizmet yöntemini zaman uyumsuz olarak çağırma

Windows Communication Foundation (WCF) hizmetlerindeki yöntemlerin çoğu zaman uyumlu veya zaman uyumsuz olarak çağrılabilir. Bir yöntemin zaman uyumsuz olarak çağrılması, yavaş bir bağlantı üzerinden çalıştığında yöntem çağrılırken uygulamanızın çalışmaya devam etmelerini sağlar.

Varsayılan olarak, bir projeye bir hizmet başvurusu eklendiğinde, yöntemleri zaman uyumlu olarak çağıracak şekilde yapılandırılır. Hizmet Başvurusunu Yapılandır iletişim kutusundaki bir ayarı değiştirerek davranışları zaman uyumsuz olarak çağırmak için değiştirebilirsiniz.

Not

Bu seçenek hizmet başına olarak ayarlanır. Bir hizmet için bir yöntem zaman uyumsuz olarak çağrılırsa, tüm yöntemler zaman uyumsuz olarak çağrılmalıdır.

Not

Bilgisayarınız bu makaledeki Bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Visual Studio'nun farklı bir sürümünü veya farklı ortam ayarlarını kullanıyor olabilirsiniz. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.

Bir hizmet yöntemini zaman uyumsuz olarak çağırmak için

  1. Çözüm Gezgini'da hizmet başvurusunu seçin.

  2. Proje menüsünde Hizmet Başvurusunu Yapılandır'a tıklayın.

  3. Hizmet Başvurusunu Yapılandır iletişim kutusunda Zaman uyumsuz işlemler oluştur onay kutusunu seçin.

Hizmet tarafından döndürülen verileri bağlama

Windows Communication Foundation (WCF) hizmeti tarafından döndürülen verileri bir denetime bağlayabildiğiniz gibi, diğer veri kaynaklarını da bir denetime bağlayabilirsiniz. WCF hizmetine başvuru eklediğinizde, hizmet veri döndüren bileşik türler içeriyorsa, bunlar otomatik olarak Veri Kaynakları penceresine eklenir.

Denetimi WCF hizmeti tarafından döndürülen tek veri alanına bağlamak için

  1. Veri menüsünde Veri Kaynaklarını Göster'e tıklayın.

    Veri Kaynakları penceresi görüntülenir.

  2. Veri Kaynakları penceresinde hizmet başvurunuzun düğümünü genişletin. Hizmet tarafından döndürülen bileşik türler görüntülenir.

  3. Bir tür için düğümü genişletme. Bu tür için veri alanları görüntülenir.

  4. Bir alan seçin ve açılan liste okuna tıklayarak veri türü için kullanılabilen denetimlerin listesini görüntüleyin.

  5. Bağlamak istediğiniz denetim türüne tıklayın.

  6. Alanı forma sürükleyin. Denetim, bir bileşen ve BindingNavigator bir BindingSource bileşenle birlikte forma eklenir.

  7. Bağlamak istediğiniz diğer tüm alanlar için 4. ama 6. adımları yineleyin.

Denetimi WCF hizmeti tarafından döndürülen bileşik türe bağlamak için

  1. Veri menüsünde Veri Kaynaklarını Göster'i seçin. Veri Kaynakları penceresi görüntülenir.

  2. Veri Kaynakları penceresinde hizmet başvurunuzun düğümünü genişletin. Hizmet tarafından döndürülen bileşik türler görüntülenir.

  3. Bir tür için bir düğüm seçin ve açılan liste okuna tıklayarak kullanılabilir seçeneklerin listesini görüntüleyin.

  4. Verileri bir kılavuzda görüntülemek için DataGridView'a veya tek tek denetimlerde verileri görüntülemek için Ayrıntılar'a tıklayın.

  5. Düğümü forma sürükleyin. Denetimler, bir bileşen ve BindingNavigator bir BindingSource bileşenle birlikte forma eklenir.

Bir hizmeti mevcut türleri yeniden kullanacak şekilde yapılandırma

Projeye bir hizmet başvurusu eklendiğinde, hizmette tanımlanan tüm türler yerel projede oluşturulur. Çoğu durumda, bir hizmet ortak .NET türleri kullandığında veya türler paylaşılan bir kitaplıkta tanımlandığında bu yinelenen türler oluşturur.

Bu sorunu önlemek için başvurulan derlemelerdeki türler varsayılan olarak paylaşılır. Bir veya daha fazla derleme için tür paylaşımını devre dışı bırakmak istiyorsanız, bunu Hizmet Başvurularını Yapılandır iletişim kutusunda yapabilirsiniz.

Tek bir derlemede tür paylaşımını devre dışı bırakmak için

  1. Çözüm Gezgini'da hizmet başvurusunu seçin.

  2. Proje menüsünde Hizmet Başvurusunu Yapılandır'a tıklayın.

  3. Hizmet Başvurularını Yapılandır iletişim kutusunda, Belirtilen başvuruda bulunan derlemelerde türleri yeniden kullan'ı seçin.

  4. Tür paylaşımını etkinleştirmek istediğiniz her derleme için onay kutusunu seçin. Derleme için tür paylaşımını devre dışı bırakmak için onay kutusunu temiz bırakın.

Tüm derlemelerde tür paylaşımını devre dışı bırakmak için

  1. Çözüm Gezgini'da hizmet başvurusunu seçin.

  2. Proje menüsünde Hizmet Başvurusunu Yapılandır'a tıklayın.

  3. Hizmet Başvurularını Yapılandır iletişim kutusunda, Başvuruda bulunılan derlemelerde türleri yeniden kullan onay kutusunu temizleyin.

Ünvan Açıklama
İzlenecek yol: Windows Forms içinde basit bir WCF Hizmeti oluşturma Visual Studio'da WCF hizmetleri oluşturma ve kullanma konusunda adım adım bir tanıtım sağlar.
İzlenecek yol: WPF ve Entity Framework ile WCF veri hizmeti oluşturma Visual Studio'da WCF Veri Hizmetleri oluşturma ve kullanma hakkında adım adım bir tanıtım sağlar.
WCF geliştirme araçlarını kullanma Visual Studio'da WCF hizmetlerinin nasıl oluşturulacağını ve test yapılacağını açıklar.
Nasıl yapılır: WCF Veri Hizmeti başvurusu ekleme, güncelleştirme veya kaldırma
Hizmet başvurularında sorun giderme Hizmet başvurularında ve bunların nasıl önlenebileceğiyle ilgili bazı yaygın hatalar sunar.
WCF hizmetlerinde hata ayıklama WCF hizmetlerinde hata ayıklama sırasında karşılaşabileceğiniz yaygın hata ayıklama sorunlarını ve tekniklerini açıklar.
İzlenecek yol: N katmanlı veri uygulaması oluşturma Yazılan bir veri kümesi oluşturmak ve TableAdapter ile veri kümesi kodunu birden çok projede ayırmak için adım adım yönergeler sağlar.
Hizmet Başvurusunu Yapılandır iletişim kutusu Hizmet Başvurusunu Yapılandır iletişim kutusunun kullanıcı arabirimi öğelerini açıklar.

Başvuru

Ayrıca bkz.