
.NET'te Microsoft.Extensions.AI ile LLM Entegrasyonunu Basitleştirme
Hızlı komut satırı araç skriptleri ile sağlam .NET kodu arasında köprü kurarken, sürtünme genellikle çalışan bir cURL komutu C# içinde doğru bir HTTP isteğine dönüştürmekte yatar. Jacob Mellor, .NET ekosistemine cURL'in aşinalığını getirmek için oluşturulmuş bir kütüphane olan CurlDotNet ile bu boşluğu doldurmuştur.
Bu aracı Iron Software ürünleri IronPDF veya IronXL gibi ürünlerle birleştirerek karmaşık API çağrıları yoluyla veri alıp profesyonel raporlar oluşturabilecek güçlü hatlar oluşturabilirsiniz. Bu yazıda bu araçların projelerinizi bir sonraki seviyeye taşırken nasıl birlikte çalışabileceğiyle ilgili bazı örneklere bakacağız.
CurlDotNet Nedir?
CurlDotNet, endüstri standardı curl aracının saf C# .NET uygulamasıdır. Yerel bağımlılıklara veya libcurl'e dayanan sarmalayıcıların aksine, bu kütüphane, Windows, Linux, macOS ve daha fazla platform için %100 yönetilen bir çözüm sunar. API dokümanlarından bir komutun bash kopyasını doğrudan kodunuza yapıştırmanıza olanak tanıyarak, standart müşteriye aynı davranışı sağlar.
Hızlı Başlangıç ve Yükleme
Başlamak için, proje dizininizde şu komutu çalıştırmanız yeterlidir:
dotnet paket ekle curldotnet
Bu, CurlDotNet paketini kurar ve HttpClient yapılandırmasının getirdiği ek yük olmadan web isteklerini yönetmek için kullanıma hazır tariflere erişim sağlar.
Curl-.NET Curl Komutlarını Kullanma
Kütüphane, dize değer komutlarını ayrıştırmada mükemmeldir. GitHub API sayfası veya dahili belgelerden çalışan bir curl https dizesine sahipseniz, doğrudan çalıştırabilirsiniz.
using CurlDotNet;
// Simply copy-paste your shell command
var command = "curl -X GET https://api.github.com/users/jacob-mellor -H 'User-Agent: curl-dot-net'";
var result = await Curl.ExecuteAsync(command);
Console.WriteLine(result.Body);Imports CurlDotNet
' Simply copy-paste your shell command
Dim command As String = "curl -X GET https://api.github.com/users/jacob-mellor -H 'User-Agent: curl-dot-net'"
Dim result = Await Curl.ExecuteAsync(command)
Console.WriteLine(result.Body).NET Kodu Curl .NET Çıkışı

Yapısal bir yaklaşımı tercih edenler için, akıcı oluşturucu, başlıkları, curl seçeneklerini ve erişim tokenlerini ayarlamak için temiz bir API sağlar.
var response = await Curl.GetAsync("https://api.github.com/users/ironsoftware")
.WithHeader("Authorization", "Bearer YOUR_TOKEN")
.WithHeader("X-API-Key", "12345")
.ExecuteAsync();Dim response = Await Curl.GetAsync("https://api.github.com/users/ironsoftware") _
.WithHeader("Authorization", "Bearer YOUR_TOKEN") _
.WithHeader("X-API-Key", "12345") _
.ExecuteAsync()Bu esneklik, TLS el sıkışma mekaniği, hız sınırlaması ve hata işlemesini içsel olarak ele alır ve curl çalıştırılabilir dosyasının varsayılan davranışını taklit eder.
Iron Software ile .NET Çerçevesinde Entegrasyon
CurlDotNet'in çıktısını Iron Software araçlarına yönlendirdiğinizde gerçek güç ortaya çıkar. CurlDotNet, taşıma katmanını (JSON, dosyalar veya HTML alma) işlediğinden, Iron Software ürünleri bu içeriği işlemeye odaklanabilir.
Senaryo: API Verilerinden PDF Raporları Oluşturma
Güvenli bir URL'den kullanıcı verilerini indirip, bir PDF raporu oluşturmanız gerektiğini hayal edin. API, HttpClient ile çoğaltılması zor ama curl komutuyla kolay olan bir bash imzası gerektirir.
Adım 1: Curl-.NET ile Veri Alma
// Define the curl command string with all necessary headers (here we use an example test website)
string curlCmd = "curl https://www.w3.org/TR/html4/ -H 'X-API-Key: secure_key'";
// Execute the request
var result = await Curl.ExecuteAsync(curlCmd);
// Extract the content (assumed to be HTML for this scenario)
string htmlContent = result.Body;Imports System.Threading.Tasks
' Define the curl command string with all necessary headers (here we use an example test website)
Dim curlCmd As String = "curl https://www.w3.org/TR/html4/ -H 'X-API-Key: secure_key'"
' Execute the request
Dim result = Await Curl.ExecuteAsync(curlCmd)
' Extract the content (assumed to be HTML for this scenario)
Dim htmlContent As String = result.BodyAdım 2: IronPDF ile PDF Üretin
IronPDF, HTML, CSS, JavaScript ve görüntüleri yüksek kaliteli PDF belgelerine dönüştürmek için tasarlanmış güçlü bir kütüphanedir. Modern web standartları için tam destek sağlar ve başlıklar eklemek ve belirli render ayarlarını yapmak gibi özellikler içerir.
using IronPdf;
// Instantiate the renderer
var renderer = new ChromePdfRenderer();
// Convert the fetched HTML data to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the file to the output path
pdf.SaveAs("output.pdf");Imports IronPdf
' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()
' Convert the fetched HTML data to PDF
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Save the file to the output path
pdf.SaveAs("output.pdf")Çıktı

Senaryo: JSON'u Excel'e Aktarma
Uygulamanız bir JSON akışını tüketiyorsa, CurlDotNet'in test yeteneklerini kullanarak alınabilir ve IronXL kullanarak aktarılabilir.
Adım 1: Curl-.NET ile JSON Verisi Alma
Temiz bir .NET kodu için akıcı oluşturucuyu kullanarak JSON akışını alın:
string testUrl = "https://jsonplaceholder.typicode.com/users";
Console.WriteLine($"Executing HTTP request to fetch JSON from: {testUrl}");
// Replace the CurlDotNet fluent builder usage with the correct async method
var response = await Curl.GetAsync(testUrl); // Use Curl.GetAsync() for async HTTP GET
string jsonBody = response.Body;Imports System
Dim testUrl As String = "https://jsonplaceholder.typicode.com/users"
Console.WriteLine($"Executing HTTP request to fetch JSON from: {testUrl}")
' Replace the CurlDotNet fluent builder usage with the correct async method
Dim response = Await Curl.GetAsync(testUrl) ' Use Curl.GetAsync() for async HTTP GET
Dim jsonBody As String = response.BodyAdım 2: IronXL kullanarak Excel'e Yükleyin ve Dışa Aktarın
IronXL, okuma, yazma ve Excel dosya formatlarını işleme (.xlsx, .xls, .csv) tüm yönleriyle ilgilenmek için tasarlanmış kapsamlı bir .NET kütüphanesidir. Özellikle, bu işlevi, sunucu veya istemci makinesinde Microsoft Office yüklü olmadan gerçekleştirir, bu da onu çapraz platform Linux ve CI CD ortamları için ideal hale getirir. Öne çıkan özellikler arasında grafik oluşturma, formüller uygulama ve hücreleri biçimlendirme desteği yer alır.
Şimdi bir dize içinde ham JSON verileri ile, IronXL kullanılarak ayrıştırılabilir ve bir elektronik tablo oluşturulabilir.
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var sheet = workbook.CreateWorkSheet("User Data");
// 1. Deserialize the JSON string to a list of UserRecord objects
Console.WriteLine("Deserializing JSON data...");
var salesRecords = JsonConvert.DeserializeObject<List<UserRecord>>(jsonBody);
// 2. Insert the data into the sheet using IronXL's SetCellValue method
Console.WriteLine("Inserting data into Excel using IronXL...");
// Write headers
sheet.SetCellValue(0, 0, "id");
sheet.SetCellValue(0, 1, "name");
sheet.SetCellValue(0, 2, "username");
sheet.SetCellValue(0, 3, "email");
// Write data rows
for (int i = 0; i < salesRecords.Count; i++)
{
var record = salesRecords[i];
sheet.SetCellValue(i + 1, 0, record.id);
sheet.SetCellValue(i + 1, 1, record.name);
sheet.SetCellValue(i + 1, 2, record.username);
sheet.SetCellValue(i + 1, 3, record.email);
}
// Save the Excel file
string filePath = "UserReport.xlsx";
workbook.SaveAs(filePath);
Console.WriteLine($"\n Success! Excel report saved to: {Path.GetFullPath(filePath)}");Imports IronXL
Imports Newtonsoft.Json
Imports System.IO
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet = workbook.CreateWorkSheet("User Data")
' 1. Deserialize the JSON string to a list of UserRecord objects
Console.WriteLine("Deserializing JSON data...")
Dim salesRecords = JsonConvert.DeserializeObject(Of List(Of UserRecord))(jsonBody)
' 2. Insert the data into the sheet using IronXL's SetCellValue method
Console.WriteLine("Inserting data into Excel using IronXL...")
' Write headers
sheet.SetCellValue(0, 0, "id")
sheet.SetCellValue(0, 1, "name")
sheet.SetCellValue(0, 2, "username")
sheet.SetCellValue(0, 3, "email")
' Write data rows
For i As Integer = 0 To salesRecords.Count - 1
Dim record = salesRecords(i)
sheet.SetCellValue(i + 1, 0, record.id)
sheet.SetCellValue(i + 1, 1, record.name)
sheet.SetCellValue(i + 1, 2, record.username)
sheet.SetCellValue(i + 1, 3, record.email)
Next
' Save the Excel file
Dim filePath As String = "UserReport.xlsx"
workbook.SaveAs(filePath)
Console.WriteLine(vbCrLf & " Success! Excel report saved to: " & Path.GetFullPath(filePath))Çıktı Excel Dosyası

Bu Kombinasyon Neden Bu Kadar İyi?
-
Platformlar Arası Tutarlılık: Hem CurlDotNet hem de Iron Software ürünleri Windows, Linux ve macOS'u destekler. Bu, Microsoft Azure veya AWS Lambda gibi çalıştırma ortamlarında çalışan CI CD hatları için kritiktir.
-
Kod Oluşturma: Geliştiriciler genellikle bash veya kabuk formatında kod oluşturma parçaları alır. curl-.NET, bu kod parçacıklarını doğrudan kullanmanıza izin verirken, Iron Software belge manipülasyonunun ağır işlerini üstlenir.
-
Yerli Bağımlılıklar Yok: CurlDotNet, saf bir C# uygulaması olduğu için, farklı işletim sistemi sürümlerinde harici C++ kütüphaneleri veya libcurl bağımlılıklarının bağlanmasıyla ilgili yaygın sorunlardan kaçınırsınız.
Sonuç
Jacob Mellor, .NET topluluğu için hayati bir araç sağlamıştır. Geliştiricilerin .NET Framework ve Core uygulamalarında tanıdık curl seçeneklerini kullanmalarına olanak tanıyarak CurlDotNet, HTTP istek sürecini basitleştirir. Iron Software ile eşleştirildiğinde, sorunsuz bir iş akışı oluşturabilirsiniz: curl hassasiyetiyle veri alın ve IronPDF veya IronXL gücüyle işleyin.
Sorunlar yaşarsanız, tüm kullanıcılar için desteği iyileştirmek amacıyla GitHub sayfasında hataları bildirdiğinizden emin olun.

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.
İlgili Makaleler


