5 Business Tasks You Didn’t Know You Could Automate

From scheduling to data entry, here’s how Bima can help you reclaim hours every week.

Furkan Deveci

21 Nis 2025

gprc API
gprc API

Simple Object Access Protocol

SOAP, sistemler ve uygulamalar arasında veri iletmek için kullanılan bir protokoldür. API mimari tasarım stillerinden biri olarak karşımıza çıkar. SOAP’a ve özelliklerine değinmeden önce nasıl ortaya çıktığına ve neden ihtiyacımız olduğunu anlamaya çalışalım.

İşaretleme Dilleri (Markup Language)

Bir belge içindeki metinlerin yapısını, sunumunu ve amacını tanımlamak için kullanılan bir yapıdır. Örneğin HTML sayesinde web sayfaları geliştiriyoruz. Verinin istediğimiz formatta gösterilmesini sağlıyoruz. HTML, web’in ilk zamanlarında ortaya çıktı ve web geliştikçe XML yapıları ortaya çıktı. XML, veri depolama ve veri taşıma için görevli bir işaretleme dilidir. HTML den farklı olarak veriyi gösterme ve sunma amacı taşımaz. XML’ de kendi etiketleriniz oluşturarak verilerimizi oluşturabiliriz. Bu XML yapılarında tanımladığımız verileri karşıya iletmek için bir web servisleri fikrine ihtiyacımız var. İşte SOAP bu noktada doğuyor.

Örnek bir XML

<okul>
  <ogrenci no="12345">
    <ad>Ahmet</ad>
    <soyad>Yılmaz</soyad>
    <sinif>10-A</sinif>
    <notlar>
      <ders kod="MAT">
        <vize>85</vize>
        <final>90</final>
      </ders>
    </notlar>
  </ogrenci>
</okul>


SOAP Web Servisleri - SOAP API

SOAP, 1999 yılında XML ile daha iyi bir veri iletişimi yapmak için ortaya çıkmıştır. API’leri sunmaya yönelik diğer yaklaşımlar gibi, SOAP da aktarım için HTTP kullanır, ancak mesajları iletmek için basit posta aktarım protokolü (SMTP), aktarım kontrol protokolü (TCP) ve kullanıcı veri protokolü (UDP) de kullanabilir. Bu, veri içerik ve medya aktarımında daha fazla esneklik sağlar. SOAP’un çok katı uygulama kuralları olmasına rağmen, genişletilebilirliği ile de bilinir. Mimari yapıları REST kadar HTTP ile tam uyumlu değildir. REST daha çok bir stil iken, SOAP size istek ve yanıtın yapısı, mesaj içeriği ve nasıl kodlanacağı konusunda çok daha fazla rehberlik sağlar. SOAP kullanmak doğrudan sadece iletilen mesaja odaklanır. REST ise bunları bir resource olarak tanımlamaya, stilize etmeye odaklanır.

SOAP API ve REST API karşılaştırılması

SOAP dil, aktarım ve hatta platformdan bağımsızdır, oysa REST, HTTP kullanımını gerektirir.

SOAP çok güvenlidir, bu da onu finansal hizmetler ve çevrimiçi bankacılık uygulamaları gibi hassas verileri işleyen sistemler için mükemmel hale getirir.

SOAP, doğrudan noktadan noktaya iletişime bağlı olmak yerine, dağıtılmış kurumsal ortamlarda iyi çalışır.

SOAP, yerleşik hata işleme özelliklerine sahiptir, bu da bir istek başarısız olduğunda ne olduğunu anlamayı kolaylaştırır.

SOAP, API çağrılarının önbelleğe alınmasını desteklemez.

SOAP, REST’ten çok daha karmaşıktır ve bu da performans üzerinde olumsuz etkilere neden olabilir.

SOAP, REST’ten çok daha az uyarlanabilir.

SOAP, genellikle REST’ten daha yavaştır.

SOAP Web Servislerini Kodlamak

Bu servileri geliştirmede iki yaklaşım vardır.

top-down (contract-first): İlk olarak WSDL oluştururuz. WSDL, web servisimizi tanıtır. Request ve response yapılarımızın kurallarını belirleyen bir interface gibi düşünebilirsiniz. XML yapısı ile yazılır.



1-WSDL oluşturalım
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.com/user"
           xmlns:tns="http://example.com/user"
           elementFormDefault="qualified">

    <xs:element name="getUserRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="id" type="xs:long"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="getUserResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="user" type="tns:User"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="createUserRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="email" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="createUserResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="user" type="tns:User"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="User">
        <xs:sequence>
            <xs:element name="id" type="xs:long"/>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="email" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>


2-Bu yaklaşımda WSDL den sonra gerekli java sınıflar üretilir.

bottom-up (contract-last): Bu yaklaşımda ise ilk önce java sınıfları geliştirilir. Daha sonra WSDL belgesi üretilir.


WSDL içindeki yapıları

Bölüm

Açıklama

<types>

XML şema (XSD) tanımları - Kullanılan veri tiplerini ve mesaj formatlarını belirtir.

<message>

İletişimde kullanılacak mesajların yapısını tanımlar (Request/Response/Fault)

<portType>

Servisin sunduğu operasyonları (fonksyionları) ve mesaj akışını belirtir (SOAP operasyonlarının mantıksal tanımı)

<binding>

portType'daki operasyonların fiziksel uygulama detaylarını (SOAP/HTTP gibi) tanımlar

<service>

Servisin erişim noktasını (endpoint URL) ve bağlama bilgilerini içerir


SOAP API kodladıktan sonra request ve response yapılar

Yukarıda WSDL de bulunan create user metodu için aşağıdaki request gönderilmeli:


Bu request e cevap olarak ürettiğimiz response:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:createUserResponse xmlns:ns2="http://example.com/user">
         <ns2:user>
            <ns2:id>3</ns2:id>
            <ns2:name>Ali Veli</ns2:name>
            <ns2:email>ali.veli@example.com</ns2:email>
         </ns2:user>
      </ns2:createUserResponse>
   </soap:Body>
</soap:Envelope>

SOAP aşağıdaki ögeler ile geliştirilir.
  • Envelope: SOAP mesajının başlangıcını ve sonunu tanımlayan kök öğe.

  • Header: Kimlik doğrulama veya işlem ayrıntıları gibi meta veriler için isteğe bağlı bir bölüm

  • Body: İletilen gerçek mesajı veya verileri içerir.

  • Fault: Hata ve durum bilgileri için isteğe bağlı bir bölüm.

İlginizi Çekebilecek İçerikler

gprc API

[

OTOMASYON

]

Hızlı İletişim: gRPC API

Mikroservis mimarilerinde servisler arası iletişimde yaygın olarak gRPC kullanılır. Hızlı bir şekilde çalışması nedeniyle servisler arasında data transferi, hesaplama işlemleri hızlıca client tarafına hazırlanır. Bu yazımızda gRPC üzerine yoğunlaşacağız. “API nedir?” yazımıda birden fazla API çeşiti olduğunda bunların farklı yerlerde efektif bir şekilde kullanılması gerektiğini söylemiştik. Şimdi adım adım gRPC’yi anlamaya çalışalım.

gprc API

[

OTOMASYON

]

Hızlı İletişim: gRPC API

Mikroservis mimarilerinde servisler arası iletişimde yaygın olarak gRPC kullanılır. Hızlı bir şekilde çalışması nedeniyle servisler arasında data transferi, hesaplama işlemleri hızlıca client tarafına hazırlanır. Bu yazımızda gRPC üzerine yoğunlaşacağız. “API nedir?” yazımıda birden fazla API çeşiti olduğunda bunların farklı yerlerde efektif bir şekilde kullanılması gerektiğini söylemiştik. Şimdi adım adım gRPC’yi anlamaya çalışalım.

gprc API

[

OTOMASYON

]

Hızlı İletişim: gRPC API

Mikroservis mimarilerinde servisler arası iletişimde yaygın olarak gRPC kullanılır. Hızlı bir şekilde çalışması nedeniyle servisler arasında data transferi, hesaplama işlemleri hızlıca client tarafına hazırlanır. Bu yazımızda gRPC üzerine yoğunlaşacağız. “API nedir?” yazımıda birden fazla API çeşiti olduğunda bunların farklı yerlerde efektif bir şekilde kullanılması gerektiğini söylemiştik. Şimdi adım adım gRPC’yi anlamaya çalışalım.

[

FLUTTER

]

Flutter’da Cubit ve Bloc Yapıları: Temel Farklar ve Bir Sayaç Uygulaması

Learn when to automate, when to delegate, and how to get the best of both worlds.

[

FLUTTER

]

Flutter’da Cubit ve Bloc Yapıları: Temel Farklar ve Bir Sayaç Uygulaması

Learn when to automate, when to delegate, and how to get the best of both worlds.

[

FLUTTER

]

Flutter’da Cubit ve Bloc Yapıları: Temel Farklar ve Bir Sayaç Uygulaması

Learn when to automate, when to delegate, and how to get the best of both worlds.

[

TASARIM

]

Komponent Tabanlı Düşünmek: Tasarımda Lego Mantığı

“Komponent tabanlı düşünceyle tasarımda tutarlılığı, hızı ve ölçeklenebilirliği nasıl yakalarsınız? Lego mantığı üzerinden Figma kullanımı ve gerçek örneklerle anlatım.”

[

TASARIM

]

Komponent Tabanlı Düşünmek: Tasarımda Lego Mantığı

“Komponent tabanlı düşünceyle tasarımda tutarlılığı, hızı ve ölçeklenebilirliği nasıl yakalarsınız? Lego mantığı üzerinden Figma kullanımı ve gerçek örneklerle anlatım.”

[

TASARIM

]

Komponent Tabanlı Düşünmek: Tasarımda Lego Mantığı

“Komponent tabanlı düşünceyle tasarımda tutarlılığı, hızı ve ölçeklenebilirliği nasıl yakalarsınız? Lego mantığı üzerinden Figma kullanımı ve gerçek örneklerle anlatım.”