01
Ağ ve Veri Biçimleri
İstek işleyicilerinin ve ara katman kalıbının standart kitaplıkta kurulması, istemci tarafında zaman aşımı ve gövde kapatma sorumluluğu, yapı etiketleriyle alan adlarının karşıya taşınması, şablonların yalnız metin üretmesi, iki tarafın paylaştığı bir tarifle sözleşme temelli iletişim, ve uzun süreli bağlantılarda çerçevelemenin taşıdığı tek ortak bilgi.
- 01 HTTP Sunucusu Kursun açılış dersi. Bir isteğin taşıdığı yol, üstbilgi ve gövdenin üçünün de tip bilgisi taşımadığı `net/http/httptest` ile gerçek bağlantı noktası açmadan ölçülüyor; ara katman kalıbının bir işleyiciyi saran başka bir işleyici olduğu üç halkalı bir zincirle koşturuluyor. Sınırlayıcı ölçüm: içerik tipi üstbilgisi bir ipucudur, tip değil — yanlış bir ipucu sunucu tarafında hiçbir hata üretmiyor, hata yalnızca gövdeyi o ipucuna göre çözmeye çalışan tarafta ortaya çıkıyor.
- 02 HTTP İstemcisi Önceki ders sınırı alıcı taraftan ölçtü; bu ders aynı sınırı gönderen taraftan ölçüyor. Zaman aşımı bir süreyle değil, iptal edilmiş bir bağlamla kuruluyor. Bağlantının yeniden kullanılıp kullanılmadığı yanıt gövdesinin kapatılıp kapatılmadığına bağlı: gövde okunup kapatılınca sonraki istek aynı bağlantıyı kullanıyor, kapatılmayınca kullanmıyor. Sınırlayıcı ölçüm: yanıt gövdesi bir okuyucudur, bir değer değil — bir kez okunduktan sonra ikinci okuma boş dönüyor.
- 03 JSON Dizileştirme Kursun bağlayıcı sayısı burada üretiliyor: on üç sınır geçişinin 1'inde tip bilgisi korunuyor, 5'inde yeniden kuruluyor, 7'sinde kayboluyor. Bir yapının alan adlarını karşıya taşıyan tarif yapı etiketidir; aynı bayt dizisi tarifsiz bir kaba çözüldüğünde tamsayı `float64` olur, alıcıda karşılığı olmayan bir alan sessizce düşer ve hiçbir hata çıkmaz. Sınırlayıcı ölçüm: geri kuruldu görünmesi doğru kuruldu anlamına gelmiyor.
- 04 Şablonlar Aynı şablon metni iki farklı Go tipinden (bir tamsayı, bir ondalıklı sayı) geçirildiğinde bayt bayt aynı çıktıyı üretir; kaynaktaki tip bilgisi çıkışta tümüyle kayboluyor. Bir alan adı çıktıda yalnızca şablonun kendi metninde yazılmışsa görünür — tip sisteminden gelmez. Metin ve HTML şablonları aynı veriyi kaçırma bakımından farklı bayt dizilerine çevirir. Sınırlayıcı ölçüm: şablon alan adlarını çalışma zamanında arar, olmayan bir alan derlemede değil çalıştırmada belli olur, ve hata çıktının ortasında doğar.
- 05 Sözleşme Temelli Servis İletişimi İki bağımsız sürecin kaynağı aynı paylaşılan tariften (alan adı, alan tipi, JSON etiketi listesi) text/template ile üretiliyor ve ayrı ayrı derlenip çalıştırılıyor. Tarif ortakken üç alanın üçü de tipini koruyor — kursun on üç sınır geçişi arasında korunuyor sınıfına giren tek satır. Tarif ayrışınca (alıcı tarafın üreticisi güncel değilse) geçiş sessizce bozuluyor: üç alandan ikisi korunuyor, biri hiç hata vermeden kayboluyor.
- 06 Gerçek Zamanlı İletişim Uzun süreli bir bağlantı, gerçek bağlantı noktası açılmadan, io.Reader ve io.Writer'ı gerçekleştiren bir bayt arabelleğiyle modelleniyor. Sunucu üç mesajı art arda, aralarında bir istek beklemeden itiyor. Çerçevesiz bir akışta üç itme tek bir bayt dizisine karışıyor ve sabit boyutlu okumalar hiçbir mesajı doğru ayıramıyor (0/3); uzunluk ön ekiyle çerçevelenen akışta üçü de doğru geri ayrışıyor (3/3). Sınırlayıcı ölçüm: çerçeveleme mesajın nerede bittiğini veriyor, içindeki değerin tipini vermiyor.