Ana içeriğe atla

XML & JSON Web Servis Hazırlama

xml_json
Bu yazımızda Visual studio’da XML ve JSON web servis nasıl hazırlanır? örneklerle birlikte inceleyeceğiz. Öncelikle bir web servis hazırlayalım ve bu web servis ile bir takım içindeki çalışanların id, adı, maaşı ve pozisyonu bilgilerini hem xml hem de json olarak nasıl alabilceğimize bakalım.

Bu işlem için öncelikle visual studio içerisinden ister visual basic isterseniz c# dilinde bir proje açalım.

[VB]
 “File > New > Project > Visual Basic > Windows > Web > ASP.NET Web Application” 

[C#]
“File > New > Project > Visual C# > Windows > Web > ASP.NET Web Application” 

seçiminden sonra ekrana gelen seçimlerden “Empty” seçimi ile projemizi oluşturalım. 

Proje oluştuktan sonra proje üzerinde sağ tık ile “Add > Web Service(ASMX)” seçimi ile servisimizi ekleyelim. Artık proje için herşey hazır olduğuna göre şimdi servis içinde kullanacağımız class larımızı hazırlayalım. İlk olarak takım üyelerinin bilgilerinin oldugu “Member” classını ve sonrasında da “Team” classını oluşturalım.

[VB]

[Member.vb]

Public Class Member
    Private m_Id As Integer
    Public Property Id() As Integer
        Get
            Return m_Id
        End Get
        Set
            m_Id = Value
        End Set
    End Property

    Private m_Name As String
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set
            m_Name = Value
        End Set
    End Property

    Private m_Salary As Integer
    Public Property Salary() As Integer
        Get
            Return m_Salary
        End Get
        Set
            m_Salary = Value
        End Set
    End Property

    Private m_Position As String
    Public Property Position() As String
        Get
            Return m_Position
        End Get
        Set
            m_Position = Value
        End Set
    End Property 

End Class


[Team.vb]


Public Class Team
    Public Function GetTeamMembers() As Member()
        Dim teamMembers As Member() = New Member() {
            New Member() With {.Id = 1, .Name = "Samet", .Salary = 10000, .Position = "Software Specialist"},
            New Member() With {.Id = 2, .Name = "Kubilay", .Salary = 10000, .Position = "Software Specialist"},
            New Member() With {.Id = 3, .Name = "Erkan", .Salary = 10000, .Position = "Software Specialist"}}

        Return teamMembers
    End Function

End Class

[C#]

[Member.cs]

namespace JSONandXMLCs
{
    public class Member
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
        public string Position { get; set; }
    }

}

[Team.cs]

namespace JSONandXMLCs
{
    public class Team
    {
        public Member[] GetTeamMembers()
        {
            Member[] teamMembers = new Member[]
            {
            new Member() { Id=1,Name="Samet",Salary=10000,Position="Software Specialist"},
            new Member() { Id=2,Name="Kubilay",Salary=10000,Position="Software Specialist"},
            new Member() { Id=3,Name="Erkan",Salary=10000,Position="Software Specialist"},
            };

            return teamMembers;
        }
    }
}


İşlem yapacağımız classlarımız artık hazır şimdi bu classları kullanacağımız servisimizin içeriğini hazırlayalım. Servisimizin içinde iki adet metodumuz olacak, birisi XML olarak diğeride aynı veriyi JSON olarak bize verecek. Metodlarımız GetTeamFromXML ve GetTeamFromJSON olacak.

[JSONandXML.asmx.vb]

Imports System.ComponentModel
Imports System.Web.Script.Serialization
Imports System.Web.Script.Services
Imports System.Web.Services

<System.Web.Services.WebService(Namespace:="http://univera.com.tr/")>
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class JSONandXML
    Inherits System.Web.Services.WebService

    <WebMethod>
    Public Function GetTeamFromXML() As Member()
        Dim team As New Team()
        Return team.GetTeamMembers()
    End Function

    <WebMethod>
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
    Public Function GetTeamFromJSON() As String
        Dim team As New Team()
        Return New JavaScriptSerializer().Serialize(team.GetTeamMembers())
    End Function

End Class

[JSONandXML.asmx.cs]

using System.Web.Services;
using System.Web.Script.Services;
using System.Web.Script.Serialization;

namespace JSONandXMLCs
{
    [WebService(Namespace = "http://univera.com.tr/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class JSONandXML : System.Web.Services.WebService
    {
        [WebMethod]
        public Member[] GetTeamFromXML()
        {
            Team team = new Team();
            return team.GetTeamMembers();
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string GetTeamFromJSON()
        {
            Team team = new Team();
            return new JavaScriptSerializer().Serialize(team.GetTeamMembers());
        }
    }
}

Artık herşey kullanıma hazır şimdi projeyi çalıştırıp servisin çalışmasını ve dönen değerlere bakalım. Servis çalıştığında aşağıdaki gibi görünecektir.



XML metodunu çağıdığımızda karşımıza gelecek sonuç aşağıdaki gibi olmalıdır.

[GetTeamFromXML]

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfMember xmlns="http://univera.com.tr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Member>
<Id>1</Id>
<Name>Samet</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
<Member>
<Id>2</Id>
<Name>Kubilay</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
<Member>
<Id>3</Id>
<Name>Erkan</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
</ArrayOfMember>

JSON metodunu çağıdığımızda karşımıza gelecek sonuç aşağıdaki gibi olmalıdır.

 [GetTeamFromJSON]

<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://univera.com.tr/">[{"Id":1,"Name":"Samet","Salary":10000,"Position":"Software Specialist"},{"Id":2,"Name":"Kubilay","Salary":10000,"Position":"Software Specialist"},{"Id":3,"Name":"Erkan","Salary":10000,"Position":"Software Specialist"}]</string>

Bir sonraki makalemizde XML & JSON web servisinden nasıl veri alınır? örneklerle birlikte inceleyeceğiz

Samet ÇELİKBIÇAK

Yorumlar

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara