




[Döküman] - Windows Communication Foundation Uygulaması
-
1. Önce interface imizi hazırlıyoruz.
using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Text; namespace WelcomeServiceLibrary { [ServiceContract] public interface IWelcomeService { [OperationContract] string GetWelcome(string mesaj); [OperationContract] DateTime Getdate(); [OperationContract] int topla(int x, int y); [OperationContract] int Carp(int x, int y); } }
2.İnterface deki metodların ne yapacağını tasarlıyoruz.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WelcomeServiceLibrary { public class WelcomeService:IWelcomeService { public string GetWelcome(string mesaj) { if (mesaj == null) throw new ArgumentNullException("mesaj"); mesaj = "Ziverbey Bey Hoşgeldiniz"; return mesaj; //mesaj = "Ziverbey Bey Hoşgeldiniz"; //return mesaj; } public DateTime Getdate() { return DateTime.Now; } public int topla(int x, int y) { int z = x + y; return z; } public int Carp(int x, int y) { int z = x*y; return z; } } }
3.Host uygulamasını geliştirmeye başlıyoruz.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.ServiceModel; using System.Text; using System.Windows.Forms; using WelcomeServiceLibrary; using System.ServiceModel.Description; namespace HostApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ServiceHost _host; private void btn_SrvStart_Click(object sender, EventArgs e) { Uri adres = new Uri("http://localhost:1245/ismail_Services/Wservice"); //_host = new ServiceHost(typeof(WelcomeService), new Uri("http://localhost:1245/ismail_Services/Wservice")); _host =new ServiceHost(typeof(WelcomeService),adres); //Servisin abc si yani endpoint tanımlaması yapılıyor. //_host.AddDefaultEndpoints(); default endpoint tanımlaması fakat ben manuel yapacağım.. _host.AddServiceEndpoint(typeof (IWelcomeService), new WSHttpBinding(), adres.ToString()); //istemciler http üzerinden bu servise talepte bulunup wsdl içeriklerini alabilir default olarak kapalı ServiceMetadataBehavior MDBeh =new ServiceMetadataBehavior(); MDBeh.HttpGetEnabled = true; //host a metadatabehavior özelliğinin true olduğu bildiriliyor. _host.Description.Behaviors.Add(MDBeh); _host.Open(); lbl_SrvDurum.Text = "Servis açıldı ve çalışıyor..."; lbl_Durum2.Text = _host.State.ToString(); } private void btn_SrvStop_Click(object sender, EventArgs e) { _host.Close(); lbl_SrvDurum.Text = "Servis Durduruldu ve Çalışmıyor"; lbl_Durum2.Text = _host.State.ToString(); } } }
Servisimizin çalışıp çalışmadığını kontrol ediyoruz..
4.Client için Proxy ve Konfigürasyon dosyası üretiyoruz..
Bu iki dosyayı istemci uygulamamıza ilave edeceğiz.
5.İstemci (Client) uygulamamızı oluşturup app.config ve Proxy.cs dosyalarını ekleyelim.
6. Class diyagramda Görelim
Gördüğünüz üzere servisimizi yazarken kullandığımız methodların başına [OperationContract] yazmazsak burada o metodu göremeyiz ve kullanamayız.
7. İstemcimizi (CLIENT) kodlayalım.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ClientApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WelcomeServiceClient client = new WelcomeServiceClient("WSHttpBinding_IWelcomeService"); lbl_durum1.Text = "Servise bağlandım"; client.Close(); } private void btn_tarih_Click(object sender, EventArgs e) { WelcomeServiceClient client = new WelcomeServiceClient("WSHttpBinding_IWelcomeService"); string result = client.Getdate().ToString(); lbl_tarih.Text = result; client.Close(); } } }
Client ı sadece getdate() metodu için yazdım.
8. Ve mutlu son uygulamamızı çalıştırıyoruz. Metodu çağırabildiğimizi görüyoruz.
Not: Bazı açıklamalarım muadil olabilecek kodlar örn; _host nesnesinin yaratıldığı bölüm..
Not2: Tüm referanslarda System.ServiceModel mutlaka olmalıdır! Ek olarak ta Hostapplication a WelcomeServiceLibrary referans geçilmelidir.
Bu doküman TBT adına tarafımdan hazırlanmıştır.
-
İstek üzerine kaynak kodlar aşağıdadır..
ClientApp için Form1.cs
HostApplication için Form1.Designer.cs ve Form1.cs
WelcomeServiceLibrary için IWelcomeService.cs ve WelcomeService
-
güzel anlatmışsn hocam, ilerde lazım olursa okurum...
bu arada projenin download linkini de verseydn güzel olurdu :)
-
bi çizikte ben atayım güzel döküman :)
-
Ercab bunu yazdı:
-----------------------------bu arada projenin download linkini de verseydn güzel olurdu :)
----------------------------- -
güzel olmuşta download ve source koysaydın daha güzel olurdu. bu net3 mü ister?
-
Framework 4 ister hajım..
Eve şimdi geldim ve tekrar çıkmak zorundayım. Gece kaynak kodlarıda koyacağım beyler..
-
çizik hocam eline sağlık
-
ellerine sağlık hacım faydalı bir döküman,bunu dökümanlara ekleyelim istersen?
birde neden ziyaretçilere kapadın hacım konuyu?
-
güzel döküman olmuş , eline sağlık
-
SharpShooter bunu yazdı:
-----------------------------ellerine sağlık hacım faydalı bir döküman,bunu dökümanlara ekleyelim istersen?
birde neden ziyaretçilere kapadın hacım konuyu?
-----------------------------SharpShooter hajım aslında evet dökümanlara eklenmesi için desteğe bi mail atayım ben..
Ziyaretçilere kapama konusu da aslında anlık bişeydi:) ne bileyim hani c/p yapılarak başka yerlere gitmesin TBT ye özel kalsın istedim.. Emek var dedim:)
Kaynak kodlar 15 dk sonra 2. mesaj da olucak arkadaşlar..