Web servislerle ilgili internete birçok doküman bulabilirsiniz. Web servis sudur, su ise yarar, söyle çalisir gibi bilgiler vermeden direk olarak bir web servis nasil olusturuluru konusacagiz. Aldigi parametreye göre veritabanindan sorgu yaparak sonucu geri döndüren basit bir web servis metodu olusturacagiz. Hadi baslayalim.
Visual Studio 2008 de New Project -> Visual C# -> Web menusu altindan ASP.NET Web Service Application seçenegini seçerek devam edelim.
Yukaridaki ekranda Ok butonuna bastiginiz zaman web servisiniz otomatik olarak olusturulacak. Visual Studio web servisimizin çalismasi için gerekli asagidaki kodlari olusturacak.
namespace WebServiceBaslangic
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
Kod içinde [WebService(Namespace = "http://tempuri.org/")] kismini [WebService(Namespace = "http://yazilimmutfagi.com/")] olarak degistirelim. Yukaridaki kodu inceleyecek olursak HelloWorld adinda bir metot olusturulmus ve çagirildigi durumda “Hello World” string degerini döndürmekle görevli. Burada dikkat edilmesi gereken [WebMethod] kismi. Eger web servisinize yazdiginiz fonksiyona disaridan erisilmesini istiyorsaniz [WebMethod] etiketini metot isminin hemen üstüne koymak zorundasiniz.
Gelelim kendi web metodumuzu yazmaya. Yazacagimzi metod aldigi parametre ile veritabaninda sorgu çalistirarak veritabanindan dönen verileri metodu çagiran istemciye gönderecek. Bunun için ilk olarak kullanacagimiz veritabani tablomuzu olusturalim. Ben örnegimizde Kisi adinda bir tablo kullanacagim. Tablomuzun scripti asagidaki gibidir.
CREATE TABLE [dbo].[Kisi](
[No] [int] IDENTITY(1,1) NOT NULL,
[Ad] [varchar](50) NULL,
[Soyad] [varchar](50) NULL,
[TCKimlikNo] [char](11) NULL,
[Numara] [int] NULL,
[Cinsiyet] [char](1) NULL,
[DogumYeri] [varchar](50) NULL,
)
Olusturdugunuz tabloya kendi istediginiz verileri girin. Daha sonra web servisimizi kod kismini açarak asagidaki kodlari ekleyin.
[WebMethod]
public DataSet KisiDondur(string ad)
{
string query = String.Format("SELECT * FROM Kisi WHERE Ad = '{0}'",ad);
return SorguCalistir(query);
}
[WebMethod]
public DataSet KisiDondurTCKimlikNoIle(string tcKimlikNo)
{
string query = String.Format("SELECT * FROM Kisi WHERE TCKimlikNo = '{0}'", tcKimlikNo);
return SorguCalistir(query);
}
public DataSet SorguCalistir(string query)
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Ornek;Integrated Security=True");
con.Open();
SqlDataAdapter da = new SqlDataAdapter(query, con);
da.SelectCommand.ExecuteNonQuery();
DataSet dt = new DataSet();
da.Fill(dt);
return dt;
}
Yukarida gördügünüz gibi KisiBilgilerini Donduren iki fonksiyon tanimladik ve tanimlamalarinin hemen üstüne [WebMethod] ekledik. Ama SorguCalistir adiyla tanimladigimiz fonksiyona [WebMethod] eklemedik. Çünkü bu fonksiya disardan erisilmesini istemiyoruz. Web Servisimizi çalistirarak sonuçlara bakalim ve makalemizi sonlandiralim.
Yukarida görüldügü gibi [WebMethod] ekledigimiz tüm fonksiyonlarimiz listelendi. Bunlardan KisiDondur linkini tiklayarak devam edelim.
Ad kismina Metin yazarak Çagir dedigimizde Metin adli bir kisi tablomuzda var ise Metine ait tüm bilgiler asagida görüldügü gibi XML formatinda bize dönecektir.
<DataSet>
−
<xs:schemaid="NewDataSet">
−
<xs:elementname="NewDataSet"msdata:IsDataSet="true"msdata:UseCurrentLocale="true">
−
<xs:complexType>
−
<xs:choiceminOccurs="0"maxOccurs="unbounded">
−
<xs:elementname="Table">
−
<xs:complexType>
−
<xs:sequence>
<xs:elementname="No"type="xs:int"minOccurs="0"/>
<xs:elementname="Ad"type="xs:string"minOccurs="0"/>
<xs:elementname="Soyad"type="xs:string"minOccurs="0"/>
<xs:elementname="TCKimlikNo"type="xs:string"minOccurs="0"/>
<xs:elementname="Numara"type="xs:int"minOccurs="0"/>
<xs:elementname="Cinsiyet"type="xs:string"minOccurs="0"/>
<xs:elementname="DogumYeri"type="xs:string"minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
−
<diffgr:diffgram>
−
<NewDataSet>
−
<Tablediffgr:id="Table1"msdata:rowOrder="0">
<No>2</No>
<Ad>Metin</Ad>
<Soyad>Tosun</Soyad>
<TCKimlikNo>76543244233</TCKimlikNo>
<Numara>124</Numara>
<Cinsiyet>E</Cinsiyet>
<DogumYeri>Ankara</DogumYeri>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
Olusturdugumuz bir web servisi baska bir projeden nasil çagiracagimiz hakkinda bilgiyi sonraki makalelerimizde vermeye çalisacagiz.