WebApi Task Async Benchmark | Await Task | Async Task Api

Поділитися
Вставка
  • Опубліковано 18 гру 2021
  • Asenkron iletişimde Task, async ve await keyword leri çok kullanılıyor. Ancak bunların kullanımlarında öp plana çıkan detaylar da mevcut. Bir WebApi projesi geliştiriyorken bu detayları en etkili şekilde nasıl kullanabiliriz, bunu anlattığım bu video da cevaplarını bulabileceksiniz.
    Microsoft Dokümanı: docs.microsoft.com/en-us/arch...
    #await #task #benchmark
    #blazor #docker #dotnet
    Kanala Abone Olmayı Unutmayın!
    To Subscribe: bit.ly/3kvj2vw
    Github: github.com/salihcantekin
    Discord: bit.ly/33T4yzB
    Üyelik ayrıcalıkları için: / @techbuddytr
  • Наука та технологія

КОМЕНТАРІ • 33

  • @ozancakin3922
    @ozancakin3922 2 роки тому +6

    Salih Bey, yine çok açıklayıcı bir eğitim videosu çekmişsiniz emeğinize sağlık

  • @teknolojiuzmaniburada
    @teknolojiuzmaniburada 2 роки тому +7

    Sabah karanlıkta sırf bu videoyu izleyip ben de denemek için 2 saat erken geldim işe :) Yıllardır sorun yaşadığım, yüzlerce video izleyip ve makale okumuş olmama rağmen hala tam oturtamadığım, bana göre güvenlikten sonra en kritik konu olan bu konuyu sonunda anlayabildim hocam. Sadece 3 videoda tüm sorularıma cevap verdiniz. Ne kadar teşekkür etsem az. Bu verdiğiniz bilgileri bu şekilde bir anlatımla hiçbir yerde bulamıyordum. Burada bizimle paylaştığınız bilgilerin çok değerli hatta paha biçilmez. Çok çok teşekkür ederim hocam. Emeğinize sağlık. Tekrar iyi ki varsınız.

  • @oaa2632
    @oaa2632 2 роки тому +2

    Harika! Çok güzel eğitim. Teşekkürler

  • @ermekbakyt5507
    @ermekbakyt5507 2 роки тому +3

    Allah razi olsun! Cok guzel bir ders olmus!

  • @TyfnCTN
    @TyfnCTN 2 роки тому +4

    Eline sağlık bu hafta tamda multi treading işleriyle uğraştım :) temiz ve gayet başarılı anlatım her zaman ki gibi 😎

    • @TechBuddyTR
      @TechBuddyTR  2 роки тому +4

      Multi threading önemli ve üzerinde gerekli zamanın harcanması gereken bir konu bence. Faydalı olması dileği ile.

  • @ugursesen7629
    @ugursesen7629 2 роки тому +2

    Salih hocam döktürüyorsun her zamanki gibi :)

    • @TechBuddyTR
      @TechBuddyTR  2 роки тому +1

      Estağfurullah. İyi seyirler

  • @asadullazadeh
    @asadullazadeh 2 роки тому +2

    Mükemmel anlatım olmuş

  • @berkdev
    @berkdev 8 місяців тому +1

    Çok güzel örneklerle açıklanmış. Teşekkürler.

  •  2 роки тому +2

    Elinize sağlık.

  • @BatuhanxBayram
    @BatuhanxBayram 10 місяців тому

    çok güzel bir video olmuş elinize sağlık

  • @muzafferakn6834
    @muzafferakn6834 2 роки тому +1

    Hocam elinize sağlık çok güzel bir eğitim olmuş. Yalnız request count bilgisini kullanmadığınız 26 dakika boyunca elim ayağım titredi bağırdım ama duymadınız. En sonunda farkettiğinizde bi rahatlama geldi :D

    • @TechBuddyTR
      @TechBuddyTR  2 роки тому +1

      Çok teşekkür ederim. Arada bu tarz detaylar kaçabiliyor video sırasında :-) Geç olsun da güç olmasın

  • @sametersoy6806
    @sametersoy6806 2 роки тому +1

    Bu karşılaştırma örnekleri yazlımda çok değerli ama çok az maalesef bunun için öncelikle teşekkür ederiz. Monolitic vs microservis tarafında da böyle bir istek cevaplama örneği olsa çok değerli olurdu diye düşünüyorum.

    • @TechBuddyTR
      @TechBuddyTR  2 роки тому +2

      Çok teşekkür ederim. Bu örneğin Monolith ve Microservice tarafında olmasının çok bir önemi yok aslında. Çünkü her webapi projesi bu şekilde çalışıyor olacaktır. :)

    • @sametersoy6806
      @sametersoy6806 2 роки тому

      @@TechBuddyTR Hocam hem cevap için hem her video için ayrı yarı teşekkürler. Bende dediğinize katılıyorum sanırım kendi aklımdan geçeni doğru anlatamadım. Micro servislerde login için ayrı api projesi order için ayrı api projesi vs yapıyoruz ve bu projeler birbirleri ile iletişim halinde monolith de tek proje her şey kendi içinde çalışıyor onu kastetmiştim. Mesela login olup sepete ürün ekleyip ödemesini yapan 1000 istek göndersek hem monolith ve micro servis projesine sunucu yükünü ve işlem sürelerini görsek diye hayal etmiştim. Umarım bu sefer anlatabilmişimdir :)

  • @oyunkompetan7123
    @oyunkompetan7123 2 роки тому

    Salih Bey konu ile alakalı 2 videoyu da izledim hala istediğimi yapamıyorum. 2 siteden api istekleri ( client.GetAsync return ) 2 siteden de websocket dinliyorum ( client.ConnectAsync SendSocketMessage ). api de sorun çıkmıyor. Fakat iş websocket e geldiğin işler karışıyor. Websocket ten bağlantıyı kesemiyorum sürekli paketler geliyor ve içinde sürekli dönen while döngüsü var iş hiç bitmiyor. İş bitmediği içinde birinin bitip diğerini çalıştır gibi bir seçeneğim olmuyor. Ben saçma bir şekilde 3 program çalıştırıyorum. 1.si websocket 542 kalalı dinliyor ve .txt ye yazıyor , 2.si 613 numaralı kanalı dinliyor ve .txt ye yazıyor. 3.sü. 2 api den verileri alırken Anaform da da 542 ve 613 numaralı kanalların .txt lerini alıp işleyip verileri karşılaştırıyorum. Birde saçma bir olay var kanalları dinlerken form uygulamasında kanaldan gelen paketleri kaçırırken Console ile hiç kaçırmadan alabiliyorum. API leri Anaform dan Thread lar ile çalıştırıyorum, websocketler zaten ayrı 2 program. Bunları tek bir program da toplamak istiyorum.
    Anaform = --------------------------------------------------
    API 1 = -- -- - - ------ - - - -- - - - - - -- ---- ---- - -
    API 2 = -- - - - - - -- - - - -- - - - -
    WS 1 =----------------------------------------------------
    WS 2 =----------------------------------------------------
    Umarım yukarıda yapmak istediğim şeyi anlatabilmişimdir. Bununla ilgili bir video hazırlar mısınız? Olumlu yada olumsuz dönüş yaptığınız için teşekkürler. Çalışmalarınızda başarılar diliyorum.

  • @mansurdegirmenci8618
    @mansurdegirmenci8618 Рік тому

    güzel anlatım olmuş hocam teşekürler. yalnız kafaya takılan soru şu olabilir o zaman her şeyi async yapalım dümdüz gidelim :)) bu durumun eksileri yokmudur? Sync yapmanın async yapmaya göre artısı nedir hocam?

    • @TechBuddyTR
      @TechBuddyTR  Рік тому

      eğer her şeyi async yapabiliyorsak yapalım zaten :) Hayatımızı kolaylaştırıyor elbette ama bunun da bir maliyeti var. Şöyle bir arama yaparak biraz daha detaylı bilgiye ulaşabilirsiniz belki, ".net async state machine"

  • @teknolojiuzmaniburada
    @teknolojiuzmaniburada 2 роки тому +2

    Hocam anlamadığım bir konu daha var. Sizin kanalda arattım ama bulamadım. Başkalarının anlatımını izliyorum hala ama gerçekten de onları izlemek zaman kaybı gibi geliyor artık bana. Ne işe yaradığını, kullanım alanlarını, hangi durumlarda kullanılabileceğini, çalışma mantığını hiç kimse sizin gibi anlatmıyor. 4 işlem üzerinden gösteriyorlar hep. Sizin gibi gerçek hayatta kullanımından bahsetmiyorlar. Bir tek ahanda hadi kullanalım şunu şuraya koyuyoz bunu buraya koyuyoz diyip bitiriyorlar videoları :) Konu ne diye sorduğunuzu duyar gibiyim :) Tabiki Delegeler :) Bu Delegate kavramını da rica etsem bize anlatabilir misiniz? Delegatelerin bir tek formlar, methodlar, sınıflar arasında iletişime yaradığı gibi bir izlenimim var izlediğim okuduğum kaynaklardan ama nedir ne değildir hala bilmiyorum.
    Bu konunun yeniden aklıma gelmesine vesile olan şey bir parmak okuyucu cihazın sdksını kullanırken f12 f12 yapa yapa sonunda events isimli bir interface'e ulaşıp içindeki EventHandlerlara da f12 yapınca birer satırlık delege oluşturulduğunu görmem oldu.
    Gidiş yolu şu şekildeydi f12 yapınca.
    public class CZKEMClass : IZKEM, CZKEM, _IZKEMEvents_Event
    public interface _IZKEMEvents_Event
    event _IZKEMEvents_OnDoorEventHandler OnDoor;
    public delegate void _IZKEMEvents_OnDoorEventHandler(int EventType);
    Ne amaçla kullanıldığını hiç kestiremiyorum şu an. Tamam bu sdk hazır, belki hiç bu kısımlarına ulaşıp kullanma ihtiyacım olmayacak ama kendi uygulamalarımda da sıfırdan delege yapısı oluşturabilip kullanabilmek istiyorum. Winforms uygulamalarında dinamik olarak farklı formlara veri gönderme gibisinden de kullanılıyor sanırım ama emin değilim. Bir video da Delegeler için gelir mi acaba? :)
    Bir ekleme daha:
    Yukarıda verdiğim bilgilerde delegate ve ilgili delege ismiyle event oluşturulmuş. Client tarafında eventa += yaparak bir metod veriyoruz kullanıyor. Cihazda birisi parmak okuttuğunda direkt bu event tetikleniyor. Anlayamadığım kısımlardan biri şu. Bu event ve delege olayı sanki bir listener gibi çalışıyor. Ama cihaza sürekli yeni veri var mı yok mu diye gidip bakmıyor olmasına rağmen, cihazda parmak okunduğunda nasıl oluyor da, cihaz veri gönderip bu eventı tetikleyebiliyor? Bu cihazın içinde var olan bir özellik mi? IP ve Port ile bağlanınca bağlı neresi varsa oraya veri mi gönderiyor.Bunu nasıl yapıyor olabilir ki anlamıyorum hocam :) Mesela ben winform uygulamamı kullanan tüm kullanıcılarıma db kullanmadan direkt bir mesaj ya da bildirim gönderebilir miyim? Mantığı nedir tam olarak?
    Çok teşekkür ederim.

    • @TechBuddyTR
      @TechBuddyTR  2 роки тому +2

      Selamlar,
      delegate ler metodlarımızın referansını tutan nesnelerdir. Bu konu yazarak anlatması biraz zor olan bir konu. Video için yakın dönemde gündemime alabilirim :-)

    • @teknolojiuzmaniburada
      @teknolojiuzmaniburada 2 роки тому +1

      @@TechBuddyTR Çok teşekkür ederim hocam. Sabırsızlıkla bekliyor olacağım :)

    • @saidcodesov2114
      @saidcodesov2114 2 роки тому +1

      Eger dogru anladiysam konuyu :) soru guzel dostum . 1)delegate arkada nesne olaraq methodun referansini sakliyor(yani bellekdeki methodun addressini ) ve gerekdiginde call ediyorsun.....2) eventin isi listener gibi davranmak ola bilir amma o listener(event) neyi tetikleyecek ? delegate'i tabiiki ,
      delegate == method . Dusunceme gore mantigi bu, programatik olaraq programda methodlari delegeler ile yazmak ve cagirmak, buyuk projelerde yuksek avantaj sagliyor. Cihazda surekli yeni veri varmi yokmu bakib bakmamasida methodun algortimasi ile alakali ola bilir. Cihaz veriyi barmak izinden aliyor ve internet(local olabilir) yoluyla, aldigi datani veritabanina gonderiyor eger veritabaninda eslesen "barmak verisi" (kimlik (ID)) varsa ---> return edib diger islemlere geciyor .Eger barmak okuyucuda "cache" mekanizmasi varsa gecici olaraq hizli calismasi amaciyla barmak izi ID'leri kendi dahili depolama belleyinde saklayabilir. Dusundugume gore anlamadigin konu barmak izi teknolojisi, onuda anlatirdim amma uzun konu, karisiklik ola bilir :) . Kisaca ozetlemek gerekirse :1) Barmak okuyucuya barmak koyulur 2)Sensor aktivlenir 3) Tarayici barmak izini gorur 4) Barmak izini ID'ye (baska bir ozellikde ola bilir) gore okumak icin database'e istek gondermek icin Eventi tetikler, Eventde methodu(delegate)'i tetikler 5) Db'e eslesen ID varsa veya yoksa ona gore davranilir

    • @teknolojiuzmaniburada
      @teknolojiuzmaniburada 2 роки тому +1

      @@saidcodesov2114 çok teşekkür ederim dillerinize sağlık çok güzel anlamışsınız 😊🙏

    • @saidcodesov2114
      @saidcodesov2114 2 роки тому

      @@teknolojiuzmaniburada Rica ederim , teknolojide birlik ve bir birimize yardim etmek ve kafa kafaya vurub gelismek icin variz :0 :))))

  • @Furkan24664
    @Furkan24664 11 місяців тому

    Benim kafam biraz karıştı , burada işi yapan threadler mi yoksa işi farklı bir yere mi taşıyor 'telefon bağlama örneginde oldugu gibi' . async durumda thread 2 işi aynı anda nasıl yapıyor alt trhread gibi bir şeyler mi var ? cevaplarsnı sevirinim.

    • @TechBuddyTR
      @TechBuddyTR  11 місяців тому

      Her uygulama, Application seviyesinde bir Ana Thread üzerinde çalışıyor. Bunun dışında biz istersek farklı thread ler oluşturabiliyoruz. Teorik olarak , Task'lar ana thread'i kilitlemeyen ayrı birer alt thread gibi düşünülebilir. Eğer await ile bekleme işlemi yapıyorsak, ana threadi kilitlemeden ama ana thread de bekleme yaparak alt thread'in işini bitirmesini bekliyoruz. Eğer bir Task çağırmışsak ve await ile beklememişsek, o thread alt thread tarafından çalıştırılıp bitiriliyor ve biz ne zaman bittiğini bilmiyoruz :)

  • @someone9757
    @someone9757 Рік тому +1

    asyncde 1000 tanesi nasıl aynı anda çalışıyor 12 thread varsa,sadece bekleme yaptımız için mi öyle oldu mantıklı değil bence

    • @TechBuddyTR
      @TechBuddyTR  Рік тому +1

      12 thread yok, 12 fiziksel core var thread create edebilen. Bunların içinde de her biri 32 bin thread oluşturup kullanabiliyor gibi düşünebiliriz. Ama bunu set de edebiliyoruz tabi ki

    • @someone9757
      @someone9757 Рік тому

      @@TechBuddyTR Hocam biraz araştırdım şimdi bizim UI olarak kullandığımız bi proje var o bir process, backend olark yine bir process bunların içinde sizin pcde 32k thread oluşturabiliyoruz. Biz backend processinin maxını 12 ye sabitledik ön tarafta hala 32k var. Anlamadığım nokta biz ön yüzden 1k istek atınca arkada 12 max thread yaptık, şimdi bu arkadaki 12 thread isteği alıyor task olarak direk ön tarafa mı döndürüyor yani öndeki 32k dan 12 tanesine yüklüyor işi ve tekrar bi 12 tane daha diye mi oluyor? Teşekkürler şimdiden.

  • @murad-dov
    @murad-dov 2 роки тому +1

    Hocam teşekkürler ama beynim yandı)