Altbilgi içeriğine atla
.NET YARDıM

Blazor .NET 8 (Geliştirici Eğitimi)

Blazor, tam yığın web UI çerçevesi, .NET 8.0 sürümü ile önemli ölçüde gelişti. Bu güncelleme, geliştiricilerin C# ve .NET kullanarak etkileşimli ve modern web uygulamaları oluşturmalarını güçlendiren çeşitli özellikler ve iyileştirmeler içerir.

Bu makalede, Blazor .NET 8.0'ın anahtar yönlerini inceleyeceğiz, yeni render modlarını, proje şablonlarını, araç geliştirmelerini ve daha fazlasını keşfedeceğiz.

Blazor .NET 8 (Geliştirici Eğitimi): Şekil 1

Blazor Render Modlarını Anlamak

Blazor, .NET 8.0'da üç render modu sunar:

  1. Statik sunucu render'i: Optimal performans için statik HTML üretir.
  2. Etkileşimli Sunucu render'i: İlk render ve etkileşim için sunucu tarafı ASP.NET Core çalışma zamanını kullanır.
  3. Etkileşimli WebAssembly render'i: Takip eden render ve etkileşim için istemci üzerinde .NET WebAssembly çalışma zamanını kullanır.

Çok Yönlü Etkileşimli Otomatik Rendering

Öne çıkanlardan biri, içerik için sunucu tarafı rendering ve sonrasında istemci üzerinde .NET WebAssembly çalışma zamanı kullanarak etkileşim sağlayan Etkileşimli Otomatik rendering modudur. Bu durum, uygulama başlangıç deneyimini hızlandırır ve geliştiriciler için çekici bir seçenek haline getirir.

Blazor Web Uygulama Şablonunun Tanıtımı

.NET 8.0, Blazor Sunucu ve Blazor WebAssembly barındırma modellerinin gücünü birleştiren birleşik bir başlangıç noktası olan Blazor Web Uygulama şablonunu tanıtır.

Bu şablon, statik sunucu render'i, akışlı render, geliştirilmiş navigasyon ve form işleme gibi yeni özellikleri içerir. Proje şablonlarının birleştirilmesi, geliştirme sürecini basitleştirir.

Blazor Web Uygulamaları İçin Basitleştirilmiş JS Başlatıcılar

Geleneksel JS başlatıcılar, Blazor Web Uygulamaları için yeni bir set ile değiştirildi ve yükleme süreci özelleştirme, günlük seviyeleri ve diğer seçenekler gibi görevler üzerinde daha iyi kontrol sağlar. Bu değişiklik, geliştirme deneyimini iyileştirir ve .NET 8.0'da barındırma modellerini birleştirme hedefine uyum sağlar.

Önyüklemeyi ve Entegrasyon Rehberini Bölmek

Önyükleme ve entegrasyon rehberi üzerindeki kapsamı daha odaklı hale getirmek amacıyla ayrı makaleler şeklinde bölündü. Bu değişiklik, en iyi uygulamaların takip edilmesini kolaylaştırarak anlamayı ve uygulamayı basitleştirmeyi amaçlar.

Blazor Web Uygulamalarında Kolay Durum Sürekliliği

Blazor Web Uygulamaları artık, önyükleme sırasında oluşturulan herhangi bir kayıtlı uygulama düzeyi durumunu otomatik olarak sürekli hale getiriyor. Bu, Bileşen Durumu Süreklilik Etiketi Yardımcısına gerek kalmaz. Bileşen durumunu sürekli hale getirme ve okuma sürecini basitleştirir.

Geliştirilmiş Form İşleme ve Model Bağlama

.NET 8.0, Blazor bileşenlerine model bağlama ve veri doğrulama dahil olmak üzere geliştirilmiş form işleme yetenekleri getiriyor. Çerçeve, veri sözleşme özniteliklerine saygı gösterir ve bu, geliştiricilere form verilerinin modele nasıl bağlanacağı konusunda daha fazla kontrol sağlar. Anti-aldatmacalık desteğinin eklenmiş olması, form gönderimlerine ek bir güvenlik katmanı ekler.

Gelişmiş Gezinme ve Form İşleme

Blazor .NET 8.0'da statik sunucu render'i, sayfa gezinmesinde ve form işlemede önemli bir iyileştirme sunar. Geleneksel olarak, gezinirken veya bir form gönderildiğinde tam sayfa yenilemeleri meydana gelirdi.

Gelişmiş gezinme özelliği sayesinde, Blazor isteği keser ve bir al fetch isteği yapar, render edilmiş yanıt içeriğini sorunsuz bir şekilde tarayıcı DOM'una ekler. Bu, tam sayfa yenilemelerini önleyerek daha hızlı ve daha sorunsuz sayfa yüklemeleri sağlar ve sayfa durumunun daha fazlasını korur.

Gelişmiş gezinme, Blazor betiği (blazor.web.js) yüklendiğinde varsayılan olarak aktif hale gelir ve belirli formlar için isteğe bağlı olarak etkinleştirilebilir. Yeni gelişmiş gezinme API'si, geliştiricilere kullanıcı deneyimi üzerinde daha fazla kontrol sağlamak için mevcut sayfayı programlı olarak yenileme imkanı tanır.

Akışlı Render

Blazor .NET 8.0, uzun süreli asenkron görevler yürüten sayfalar için kullanıcı deneyimini geliştiren güçlü bir özellik olan akışlı render'i tanıtır. Akışlı render ile, sayfalar asenkron işlemler devam ederken placeholder içeriği render edebilir.

Tamamlandığında, güncellenmiş içerik aynı yanıt bağlantısında istemciye akış olarak gönderilir ve DOM'a sorunsuz bir şekilde ekleştirilir. Bu yaklaşım, uygulamanın ana düzeninin hızla render edilmesini ve içerik mevcut olduğunda sayfanın hemen güncellenmesini sağlar.

Anahtarlı Servis Enjeksiyonu

Blazor şimdi Inject özelliğini kullanarak anahtar hizmetlerin enjekte edilmesini destekliyor. Anahtarlar, bağımlılık enjeksiyonu senaryolarında servis kaydı ve tüketimini sınırlar.

Yeni InjectAttribute.Key özelliği, geliştiricilere enjekte edilecek hizmet için anahtarı belirtme olanağı tanır ve hizmet kapsamı için yeni olanaklar açar.

HttpContext'i Geçişli Bir Parametre Olarak Erişme

Blazor .NET 8.0, statik bir sunucu bileşeninden geçişli bir parametre olarak mevcut HttpContext erişme yeteneğini tanıttı. Bu gelişme, başlıklar veya HTTP bağlamı ile ilgili diğer özellikleri incelemek ve değiştirmek için özellikle yararlıdır.

ASP.NET Core Dışında Razor Bileşenleri Render Etme

Blazor .NET 8.0, HTTP isteği bağlamı dışında Razor bileşenlerini render etme olasılığını açar. Bu esneklik, geliştiricilerin Razor bileşenlerini ASP.NET Core barındırma ortamından bağımsız olarak doğrudan bir dizeye veya akışa render etmesine olanak tanır.

Bu özellik, e-postalar veya statik site içeriği gibi HTML parçaları oluşturmanın gerekli olduğu senaryolar için özellikle kullanışlıdır.

Bölüm Desteği

Blazor .NET 8.0'da, SectionOutlet ve SectionContent bileşenlerinin tanıtılması, içerik yönetimini devrimleştiriyor. Bu bileşenler, özel sayfalar tarafından doldurulacak şekilde düzenlerde yer tutucular tanımlamaya olanak tanır.

Bölümler, dinamik web düzenleri oluşturma sırasında esneklik ve yeniden kullanılabilirlik sağlayarak benzersiz isimler veya nesne kimlikleri kullanılarak referanslanabilir.

Hata Sayfası Desteği

Blazor Web Uygulamaları .NET 8.0'daki API ile artık ASP.NET Core hata işleme middleware ile kullanılmak üzere özel hata sayfaları tanımlama yeteneğine sahiptir.

Varsayılan hata sayfası (Components/Pages/Error.razor), tutarlı bir kullanıcı deneyimi sunar. Etkinlik olsa bile, hata sayfası statik bir sunucu bileşeni olarak render edilir ve hata senaryoları sırasında istikrar sağlar.

QuickGrid Deneyselden Temel Hale

QuickGrid, yüksek performanslı ızgara bileşeni, deneysel statüden çıkıp .NET 8'de Blazor çerçevesinin ayrılmaz bir parçası haline geldi.

Bu bileşen, sıralama, filtreleme, sayfalama ve sanallaştırma gibi güçlü özellikler sunarken, tablolarda veri görüntülemeyi basitleştirir. ASP.NET Core Blazor QuickGrid dokümantasyonunda QuickGrid hakkında daha fazla bilgi edinin.

Adlandırılmış Öğelere Yönlendirme

Blazor .NET 8.0, sayfa üzerinde belirli HTML öğelerine standart URL parçaları kullanarak doğrudan geçiş yapmak için müşteri tarafı yönlendirme desteğini tanıtır. Bir HTML öğesi için standart id özniteliği ile bir tanımlayıcı belirterek, Blazor, URL parçası öğe kimliği ile eşleştiğinde o öğeye sorunsuz bir şekilde kaydırır.

Kök Düzeyde Yayınsal Değerler

Blazor .NET 8.0, tüm bileşen hiyerarşisi için kayıt edilebilecek kök düzeyde yayınsal değerler sunarak yayınsal değerleri geliştirir. Adlandırılmış yayınsal değerler ve güncelleme bildirimleri için abonelikler artık desteklenmekte olup, daha fazla esneklik ve kontrol sağlar.

Boş İçeriği Sanallaştırma

Virtualize bileşenindeki yeni EmptyContent parametresi, bileşen yüklendiğinde içeriğin sağlanmasına olanak tanıyarak hem öğe boş olduğunda hem de ItemsProviderResult<t>.TotalItemCount sıfır olduğunda içerik sağlar.

Bu, geliştiricilere daha sezgisel ve kullanıcı dostu arayüzler oluşturma gücü verir.

Devre Yönetimi ve SignalR İzleme

Blazor .NET 8.0, kalan etkileşimli sunucu bileşenleri olmadığında devreleri kapatma yeteneği tanıtır. Bu optimizasyon, sunucu kaynaklarını serbest bırakır ve genel performansı artırır.

Ayrıca, geliştiriciler artık sunucu tarafı uygulamalarda gelen devre etkinliğini CircuitHandler üzerindeki CreateInboundActivityHandler yöntemiyle izleyebilir.

Jiterpreter ile Daha Hızlı Çalışma Zamanı Performansı

Jiterpreter, .NET 8'deki yeni bir zamanında oyun (JIT) derleme desteği olan bir çalışma zamanı özelliği olarak WebAssembly üzerinde çalışırken kısmi JIT derleme desteği sunar. Bu, Blazor WebAssembly uygulamaları ile etkileşimde bulunan kullanıcılar için daha akıcı bir deneyim sunarak, geliştirilmiş bir çalışma zamanı performansı sağlar.

Önceden Derleme (AOT) SIMD ve İstisna Yönetimi

Blazor WebAssembly'nin AOT derlemesi artık varsayılan olarak WebAssembly Sabit Genişlikli SIMD ve WebAssembly İstisna yönetimini kullanır. Bu stratejik seçim, daha verimli ve tepki veren bir kullanıcı deneyimi sunarak çalışma zamanı performansını önemli ölçüde artırır.

Web Dostu Dağıtım İçin Webcil Paketleme

Blazor WebAssembly artık .NET bileşenlerinin web dostu bir paketlemesi olan Webcil'i kullanır. Bu, .dll dosyalarının indirilmesini veya kullanılmasını engelleyen ortamlarda uyumluluğu sağlar ve dağıtım zorluklarını ele alır. Webcil, Blazor WebAssembly uygulamaları için varsayılan olarak etkindir.

Blazor WebAssembly Hata Ayıklama İyileştirmeleri

Blazor WebAssembly uygulamalarının hata ayıklaması, .NET 8'de daha düzenli hale geldi. Hata ayıklayıcı artık NuGet paketleri kullanan uygulamalar için hata ayıklama deneyimini geliştiren Visual Studio tercihlerinde yapılandırılmış konumlarından sembol bilgilerini indirir.

Ek olarak, hata ayıklama artık uzak hata ayıklamayı yapılandırmayı ve .NET WebAssembly hata ayıklama proxy'si aracılığıyla bağlanmayı gerektiren Firefox'ta destekleniyor.

İçerik Güvenlik Politikası (CSP) Uyumluluğu

Blazor WebAssembly, .NET 8.0'da bir İçerik Güvenlik Politikası (CSP) belirlerken güvensiz değerlendirme betik kaynağını etkinleştirme ihtiyaçını ortadan kaldırır. Bu iyileştirme, Blazor WebAssembly uygulamaları için güçlü bir CSP'yi uygulamayı kolaylaştırarak güvenlik yapılandırmalarını basitleştirir.

Bileşen Yaşam Döngüsünün Dışında İstisnaları Yönetme

ComponentBase.DispatchExceptionAsync'nın tanıtılması, geliştiricilere bir Razor bileşeninin yaşam döngüsü çağrı yığınının dışında atılan istisnaları işleme imkanı sağlar.

Bu özellik, bileşenin kodunun istisnaları yaşam döngüsü metodu istisnası olarak ele almasına izin vererek daha tutarlı ve kontrol edilen bir hata yönetim mekanizması sağlar.

Iron Suite'i Tanıtıyoruz

Iron Suite, Iron Software tarafından geliştirilen, geliştiricilerin güçlü Blazor uygulamaları oluşturmasını sağlayan birkaç yararlı kütüphaneden oluşur. PDF işlevselliği, Excel veya CSV dosya işlevselliği ekleme, görüntüden metne tanıma, barkod ve QR kodları oluşturma ve okuma, dosyaları sıkıştırma veya açma yeteneği sunar.

Iron Suite, Blazor WebAssembly barındırma modelini veya Blazor WebAssembly uygulaması, Blazor sunucu uygulaması, ASP.NET Core MVC UYGULAMASI, ASP.NET core WEB API'leri veya herhangi bir .NET çalışma zamanında oluşturulan uygulama da dahil olmak üzere, Microsoft teknolojilerini kullanarak web geliştirmeleri için düşünülmesi gereken mükemmel bir seçimdir.

Iron Suite Kitaplıkları

  1. PDF dosyalarından kolayca veri oluşturma, manipüle etme ve çıkarma için IronPDF.

    IronPDF'nin öne çıkan işlevi, tam düzeni ve stil korunumu ile HTML'den PDF'ye dönüştürmedir. Web içeriğinden PDF oluşturmak, raporlar, faturalar ve dokümantasyon dahil, için mükemmeldir. HTML dosyalarını, URL'lerini veya HTML dizelerini PDF dosyalarına dönüştürebilirsiniz.

    using IronPdf;
    
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();
    
            // 1. Convert HTML String to PDF
            var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
            var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
            pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
    
            // 2. Convert HTML File to PDF
            var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
            var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
    
            // 3. Convert URL to PDF
            var url = "http://ironpdf.com"; // Specify the URL
            var pdfFromUrl = renderer.RenderUrlAsPdf(url);
            pdfFromUrl.SaveAs("URLToPDF.pdf");
        }
    }
    using IronPdf;
    
    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();
    
            // 1. Convert HTML String to PDF
            var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
            var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
            pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
    
            // 2. Convert HTML File to PDF
            var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
            var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
    
            // 3. Convert URL to PDF
            var url = "http://ironpdf.com"; // Specify the URL
            var pdfFromUrl = renderer.RenderUrlAsPdf(url);
            pdfFromUrl.SaveAs("URLToPDF.pdf");
        }
    }
    Imports IronPdf
    
    Friend Class Program
    	Shared Sub Main(ByVal args() As String)
    		Dim renderer = New ChromePdfRenderer()
    
    		' 1. Convert HTML String to PDF
    		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
    		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
    		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
    
    		' 2. Convert HTML File to PDF
    		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
    		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
    		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
    
    		' 3. Convert URL to PDF
    		Dim url = "http://ironpdf.com" ' Specify the URL
    		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
    		pdfFromUrl.SaveAs("URLToPDF.pdf")
    	End Sub
    End Class
    $vbLabelText   $csharpLabel
  2. Taranmış görüntülerden veya PDF'lerden metin çıkarmak, veri erişilebilirliğini artırmak için IronOCR (Optik Karakter Tanıma).
  3. Excel elektronik tablolarını verimli bir şekilde okuma, yazma ve işleme için IronXL.
  4. Çeşitli formatlarda barkod oluşturma ve okuma, veri kodlama ve geri çekme işlemlerini kolaylaştırmak için IronBarcode.
  5. Makine Öğrenmesi kullanarak QR kodları oluşturma ve okuma için IronQR
  6. Web tabanlı uygulamaların yeteneklerini geliştirmek için web sitelerinden değerli veri çıkarma için IronWebScraper.
  7. Veri depolama ve aktarım süreçlerini kolaylaştırmak için dosyaları sıkıştırma ve açma için IronZIP.

Blazor .NET 8 (Geliştirici Eğitimi): Şekil 2

Iron Suite'in Ayrıcalıkları

  1. Yatırımınızın değerini en üst düzeye çıkararak, tüm pakete yalnızca tek başına iki ürün fiyatına erişin.
  2. İster Windows, macOS, ister Linux üzerinde çalışıyor olun, Iron Suite (neredeyse) tüm platformlarla uyumluluk sağlar.
  3. İndirip çalıştırmayı üretime kadar olan süreçte, 5 dakikada çalışabilir duruma gelme imkanı sunarak hızlı bir yolculuk yaşayın.
  4. Tüm özellikler için kapsamlı belgeler ve örnekler içeren, geliştirme süreci boyunca netlik ve kılavuz sağlama.
  5. Herhangi bir sorunuza yardımcı olmaya hazır 24/5 hizmet veren özel mühendisler ekibi, sorunsuz bir geliştirme deneyimi sağlar.
  6. Iron Suite, 30 günlük, hiçbir soru sormadan iade politikası ile gelir, güven ve iç huzur sağlar.

Sonuç

Sonuç olarak, Blazor .NET 8.0'ın piyasaya sürülmesi, C# ve .NET ile tam yığınlı web kullanıcı arayüzü geliştirmesinin evriminde önemli bir kilometre taşıdır.

Yeni render modlarının, Blazor Web App şablonunun, geliştirilmiş gezinme ve birçok diğer özelliğin tanıtılması, modern ve etkileşimli web uygulamaları geliştirmeyi hedefleyen geliştiriciler için cazip bir seçim haline getirir.

Blazor .NET 8.0 ayrıca geliştirilmiş form yönetimi, akışkan render ve anahtar hizmetleri enjekte etme yeteneği gibi etkileyici özellikleri tanıtarak geliştirmeye derinlik ve esneklik ekler.

Iron Software tarafından tanıtılan Iron Suite, .NET ekosisteminde doküman odaklı görevler için kapsamlı bir araç seti sunarak Blazor'un yeteneklerini tamamlar.

Blazor .NET 8.0, Iron Suite'i kullanarak sağlam ve özellik açısından zengin web uygulamaları oluşturma yetkisi verir.

Güçlü özelliklerin, geliştirilmiş performansın ve canlı bir geliştirici topluluğunun desteğinin birleşimi, Blazor'u modern web gelişmeler için çekici bir tercih haline getirir.

Sıkça Sorulan Sorular

Blazor uygulamasında HTML'yi PDF'ye nasıl dönüştürebilirim?

Blazor uygulamasında HTML dizelerini PDF'lere dönüştürmek için IronPDF'nin RenderHtmlAsPdf yöntemini kullanabilirsiniz. Bu yöntem hem Blazor Sunucu hem de Blazor WebAssembly modelleri ile uyumludur.

Blazor .NET 8.0'deki yeni işleme modları nelerdir?

Blazor .NET 8.0, performansı ve etkileşimi optimize etmek için tasarlanmış üç yeni işleme modu sunar: Statik sunucu işleme, Etkileşimli Sunucu işleme ve Etkileşimli WebAssembly işleme.

Iron Suite Blazor uygulamalarını nasıl geliştirir?

Iron Suite, Blazor uygulamalarını PDF işleme, OCR, Excel manipülasyonu ve barkod oluşturma gibi önemli işlevsellikler sunarak geliştirir, bu da güçlü web uygulama geliştirme için gereklidir.

Blazor .NET 8.0'deki Etkileşimli Otomatik işleme modu nedir?

Blazor .NET 8.0'deki Etkileşimli Otomatik işleme modu, daha hızlı uygulama başlatma için sunucu tarafı işleme ile istemci tarafı etkileşimini birleştirir ve .NET WebAssembly çalışma zamanını kullanır.

Blazor .NET 8.0'de form işleme nasıl geliştirilebilir?

Blazor .NET 8.0, geliştiricilere form veri yönetimi üzerinde daha fazla kontrol sağlamak için geliştirilmiş model bağlama, veri doğrulama ve sahtecilik karşıtı destekle form işlemeyi iyileştirir.

Blazor .NET 8.0'de akış işleme ne amacı taşır?

Blazor .NET 8.0'de akış işleme, uzun süren asenkron görevler tamamlanırken yer tutucu içeriğin ilk işlenmesine olanak tanır ve kullanıcı deneyimini sayfanın kesintisiz güncellenmesi ile geliştirir.

Blazor Web Uygulama şablonu geliştirmeyi nasıl kolaylaştırır?

.NET 8.0'deki Blazor Web Uygulama şablonu, Blazor Sunucu ve Blazor WebAssembly modellerini birleştirerek daha iyi gezinme ve form işleme ile geliştirme sürecini basitleştirir.

Iron Software'ın araç seti Blazor .NET 8.0'ı nasıl tamamlar?

Iron Software'ın araç seti, kapsamlı belge ile ilgili işlevsellik sunarak Blazor .NET 8.0'ı belgel işleme görevlerini yönetme yeteneğini artırarak tamamlar.

Blazor web uygulamasında IronPDF kullanmanın faydaları nelerdir?

IronPDF, güçlü PDF oluşturma ve manipülasyon yetenekleri sağlar, bu da güçlü belge işleme özellikleri gerektiren Blazor web uygulamaları geliştiren geliştiriciler için ideal bir seçimdir.

Blazor .NET 8.0'de hata ayıklama ile ilgili hangi gelişmeler yapılmıştır?

Blazor .NET 8.0, hata ayıklama işlemini kolaylaştırarak Firefox için sembol veri indirme ve ek destekle WebAssembly uygulamaları için hata ayıklamayı geliştirir.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara