C#'ye Metin, URL, ID ve İkili Verilerden Barkod Oluşturun
IronBarcode, C# geliştiricilerinin QR Code, Code128 ve PDF417 gibi çoklu BARCODE formatlarını destekleyen BarcodeWriter.CreateBarcode() yöntemini kullanarak dizeler, bayt dizileri ve bellek akışları dahil olmak üzere çeşitli veri kaynaklarından BARCODE'lar oluşturmasına olanak tanır.
Hızlı Başlangıç: Bir Dizgeden Tek Satırda Barkod Oluşturun
Minimum kurulumla barkod oluşturmak için IronBarcode'un API'sini kullanın. Bu örnek, sadece bir satır kod kullanarak basit bir dizgiden nasıl barkod oluşturulacağını gösterir. Kapsamlı örnekler için Barkod Hızlı Başlangıç kılavuzunu inceleyin.
-
IronBarcode aşağıdaki NuGet Paket Yöneticisi ile yükleyin
PM > Install-Package BarCode -
Bu kod parçacığını kopyalayın ve çalıştırın.
var barcode = IronBarCode.BarcodeWriter.CreateBarcode("Order123", IronBarCode.BarcodeWriterEncoding.Code128); -
Canlı ortamınızda test için dağıtım yapın
Ücretsiz deneme ile bugün projenizde IronBarcode kullanmaya başlayın
Asgari İş Akışı (5 adım)
- Veriden barkod oluşturmak için C# kütüphanesini indirin
- System.String girişi ile
CreateBarcodeyöntemini kullanarak barkodlar oluşturun - System.Byte[] girişi ile
CreateBarcodeyöntemini kullanarak barkodlar oluşturun - System.IO.Stream girişi ile
CreateBarcodeyöntemini kullanarak barkodlar oluşturun - Ortaya çıkan barkodu birden fazla görüntü formatında kaydedin
Dizgeden Nasıl Barkod Oluştururum?
Farklı Dize Türleri İçin Hangi Barkod Formatları En İyi Çalışır?
Farklı barkod biçimleri, belirli veri türleri ve kullanım durumları için optimize edilmiştir. Desteklenen barkod biçimlerini anlamak doğru kodlamayı seçmeyi sağlar:
- QR Kodları: URL'ler, e-posta adresleri ve büyük metin verileri için en iyisi. 4.296 alfanümerik karaktere kadar destekler hata düzeltme ile.
- Code128: Sipariş numaraları ve seri kodları gibi alfanümerik veriler için idealdir. Modern uygulamalar için oldukça verimlidir.
- PDF417: Uçuş biletleri ve devlet kimlikleri gibi karmaşık veriler için mükemmeldir. 1.850 alfanümerik karaktere kadar depolar.
- Code93: Kompakt sayısal verilerle posta hizmetleri ve envanter takibi için mükemmeldir.
- Aztec: Mobil biletleme ve ulaşım için optimaldir, QR kodlarına göre daha az yer gerektirir.
Aşağıdaki kod, bir dizgeyle barkod yazmayı gösterir:
:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-string.cs
using IronBarCode;
string text = "Hello, World!";
string url = "https://ironsoftware.com/csharp/barcode/";
string receiptID = "2023-08-04-12345"; // Receipt ID (numeric id)
string flightID = "FLT2023NYC-LAX123456"; // Flight ID (alphanumeric id)
string number = "1234";
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Private text As String = "Hello, World!"
Private url As String = "https://ironsoftware.com/csharp/barcode/"
Private receiptID As String = "2023-08-04-12345" ' Receipt ID (numeric id)
Private flightID As String = "FLT2023NYC-LAX123456" ' Flight ID (alphanumeric id)
Private number As String = "1234"
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
Oluşturulan Barkod Sonuçları Nelerdir?
Bu kod, beş farklı veri örneğini beş barkod türüne kodlar: basit metni Aztec'e, URL'yi QR Kod'a, sayısal ID'yi Code93'e, alfanümerik ID'yi PDF417'ye ve sayıyı Codabar'a. Görüntüler PNG olarak kaydedilir. İleri düzey dışa aktarma seçenekleri için, Barkodları Görüntü Olarak Oluştur kılavuzuna bakın.
Metin
URL
Fiş ID
Uçuş ID
Numara
Oluşturulan Barkodları Nasıl Özelleştirebilirim?
Barkodunuzu oluşturduktan sonra, IronBarcode'un stil özelliklerini kullanarak görünümünü geliştirin. Burada renkler, ek açıklamalar ve kenar boşlukları ile özelleştirilmiş bir barkod nasıl oluşturulacağını göreceksiniz:
using IronBarCode;
// Create a barcode with custom styling
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Apply custom styling
myBarcode.ResizeTo(300, 100);
myBarcode.SetMargins(10);
myBarcode.ChangeBarCodeColor(Color.DarkBlue);
// Add text annotations
myBarcode.AddBarcodeValueMetinBelowBarcode();
myBarcode.AddAnnotationMetinAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);
// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
using IronBarCode;
// Create a barcode with custom styling
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Apply custom styling
myBarcode.ResizeTo(300, 100);
myBarcode.SetMargins(10);
myBarcode.ChangeBarCodeColor(Color.DarkBlue);
// Add text annotations
myBarcode.AddBarcodeValueMetinBelowBarcode();
myBarcode.AddAnnotationMetinAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);
// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
Imports IronBarCode
' Create a barcode with custom styling
Dim myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
' Apply custom styling
myBarcode.ResizeTo(300, 100)
myBarcode.SetMargins(10)
myBarcode.ChangeBarCodeColor(Color.DarkBlue)
' Add text annotations
myBarcode.AddBarcodeValueMetinBelowBarcode()
myBarcode.AddAnnotationMetinAboveBarcode("Product SKU", Font.Arial, Color.Black, 12)
' Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png")
Daha fazla stil seçeneği için, Barkodları Özelleştirin ve Stil Verin eğitmenimizi keşfedin.
Byte Dizisinden Nasıl Barkod Oluştururum?
Byte Dizisi Barkodları İçin Karakter Kodlaması Neden Önemlidir?
Bayt dizilerinden BARCODE'lar oluşturmak için, her BARCODE türü farklı karakter kodlamasını kabul ettiğinden, karakter kodlamasının gerekli BarcodeEncoding ile uyumlu olduğundan emin olun. Çıktı veri biçimlerini anlamak uyumluluğu sağlar. IronBarcode'da mevcut karakter kodlamaları şunlardır:
- ASCII: İngilizce harfler, rakamlar ve noktalama işaretleri için karakter başına 7 bit kullanır. Örnek: 'A' = 65.
- UTF-8: Tüm Unicode karakterleri için değişken uzunluklu kodlama. Örnek: € = 0xE2 0x82 0xAC.
- UTF-16: Unicode için 16-bit diziler kullanır. Örnek: α = 0x03B1.
- UTF-32: Her karakter için sabit 32-bit dizi. Örnek: α = 0x000003B1.
- ISO-8859-1: Batı Avrupa dilleri için ASCII'yi genişletir. Örnek: é = 233.
[{i:Varsayılan karakter kodlaması IronBarcode'da ISO-8859-1'dir.}]
Byte Dizilerini Barkodlara Nasıl Dönüştürürüm?
Aşağıdaki kod, bayt verilerinden bir barkod oluşturmayı gösterir:
:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-byte.cs
using IronBarCode;
using System.Text;
byte[] text = Encoding.UTF8.GetBytes("Hello, World!");
byte[] url = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");
byte[] receiptID = Encoding.UTF8.GetBytes("2023-08-04-12345"); // Receipt ID (numeric id)
byte[] flightID = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456"); // Flight id (alphanumeric id)
byte[] number = Encoding.UTF8.GetBytes("1234");
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Imports System.Text
Private text() As Byte = Encoding.UTF8.GetBytes("Hello, World!")
Private url() As Byte = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")
Private receiptID() As Byte = Encoding.UTF8.GetBytes("2023-08-04-12345") ' Receipt ID (numeric id)
Private flightID() As Byte = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456") ' Flight id (alphanumeric id)
Private number() As Byte = Encoding.UTF8.GetBytes("1234")
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
Bu kod parçacığı, beş dize girdisini System.Byte[] nesnelerine dönüştürür. Bu bayt dizilerini BARCODE'lara dönüştürmek için, bunları istenen BarcodeEncoding ile birlikte BarcodeWriter'ye aktarın. İsteğe bağlı olarak, BarCode boyutu için MaxWidth ve MaxHeight değerlerini ayarlayın.
İkili Veri ve Özel Karakterlerle Çalışmak
İkili veri veya özel karakterlerle çalışırken, uluslararası karakter desteği için Unicode Barkodları Yazma kullanın. İkili verileri işleme örneğini burada görebilirsiniz:
using IronBarCode;
using System.Metin;
using System.IO;
// Example: Encoding binary data (like a small file) into QR Code
byte[] binaryData = File.ReadAllBytes("document.pdf");
string base64Data = Convert.ToBase64String(binaryData);
// Create QR code with high error correction for binary data
GeneratedBarcode binaryBarcode = BarcodeWriter.CreateBarcode(
base64Data,
BarcodeEncoding.QRCode
);
// Set high error correction for data integrity
binaryBarcode.SetQRCodeErrorCorrection(QRCodeErrorCorrection.High);
// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
using IronBarCode;
using System.Metin;
using System.IO;
// Example: Encoding binary data (like a small file) into QR Code
byte[] binaryData = File.ReadAllBytes("document.pdf");
string base64Data = Convert.ToBase64String(binaryData);
// Create QR code with high error correction for binary data
GeneratedBarcode binaryBarcode = BarcodeWriter.CreateBarcode(
base64Data,
BarcodeEncoding.QRCode
);
// Set high error correction for data integrity
binaryBarcode.SetQRCodeErrorCorrection(QRCodeErrorCorrection.High);
// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
Imports IronBarCode
Imports System.Metin
Imports System.IO
' Example: Encoding binary data (like a small file) into QR Code
Dim binaryData As Byte() = File.ReadAllBytes("document.pdf")
Dim base64Data As String = Convert.ToBase64String(binaryData)
' Create QR code with high error correction for binary data
Dim binaryBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(base64Data, BarcodeEncoding.QRCode)
' Set high error correction for data integrity
binaryBarcode.SetQRCodeErrorCorrection(QRCodeErrorCorrection.High)
' Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500)
binaryBarcode.SaveAsPng("binary-data-qr.png")
Bellek Akışından Nasıl Barkod Oluştururum?
Barkod Oluşturma İçin Bellek Akışlarını Ne Zaman Kullanmalıyım?
Disk depolaması gerektirmeyen verileri işlerken, bellek akışları en iyi sonucu verir, web uygulamalarında veya veritabanı işleminde dinamik olarak üretilen içeriklerde olduğu gibi. Barkodları Akış Olarak Dışa Aktarma kılavuzu, akış tabanlı iş akışları için ek bağlam sağlar.
Aşağıdaki kod, bellek akışından barkod oluşturmayı gösterir:
:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-stream.cs
using IronBarCode;
using System.IO;
using System.Text;
MemoryStream text = new MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"));
MemoryStream url = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"));
MemoryStream receiptID = new MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")); // Receipt ID (numeric id)
MemoryStream flightID = new MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")); // Flight id (alphanumeric id)
MemoryStream number = new MemoryStream(Encoding.UTF8.GetBytes("1234"));
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Imports System.IO
Imports System.Text
Private text As New MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"))
Private url As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"))
Private receiptID As New MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")) ' Receipt ID (numeric id)
Private flightID As New MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")) ' Flight id (alphanumeric id)
Private number As New MemoryStream(Encoding.UTF8.GetBytes("1234"))
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
Bellek Akışlarını Kullanmanın Faydaları Nelerdir?
Bu kod parçacığı, bir System.Byte[] nesnesinden bir MemoryStream oluşturur, ardından bunu BarcodeWriter.CreateBarcode() içinde girdi olarak kullanarak MemoryStream verilerinden bir BARCODE oluşturur. Bellek akışları birkaç avantaj sunar:
- Performans: Disk G/Ç işlemleri yok, geçici veriler için daha hızlı
- Güvenlik: Veriler bellekte kalır, hassas bilgi maruz kalması azalır
- Esneklik: Akış tabanlı API'ler ve kütüphanelerle kolay entegrasyon
- Kaynak Verimliliği: Otomatik bellek yönetimi ve atılma
İleri Düzey Akış İşleme Örneği
Akış işlemlerini içeren karmaşık senaryolar için, IronBarcode'u diğer akış işlemleriyle birleştirin:
using IronBarCode;
using System.IO;
using System.Metin;
// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
var barcodeStreams = new List<Stream>();
foreach (var item in dataItems)
{
// Convert string to stream
var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));
// Generate barcode from stream
var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);
// Export barcode back to stream
var outputStream = new MemoryStream();
barcode.SaveAsPng(outputStream);
outputStream.Position = 0; // Reset position for reading
barcodeStreams.Add(outputStream);
}
return barcodeStreams;
}
// Usage example
var orderNumaras = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumaras);
using IronBarCode;
using System.IO;
using System.Metin;
// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
var barcodeStreams = new List<Stream>();
foreach (var item in dataItems)
{
// Convert string to stream
var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));
// Generate barcode from stream
var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);
// Export barcode back to stream
var outputStream = new MemoryStream();
barcode.SaveAsPng(outputStream);
outputStream.Position = 0; // Reset position for reading
barcodeStreams.Add(outputStream);
}
return barcodeStreams;
}
// Usage example
var orderNumaras = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumaras);
Imports IronBarCode
Imports System.IO
Imports System.Metin
Imports System.Text
' Example: Processing multiple barcodes in a batch using streams
Public Shared Function GenerateBarcodeStreams(dataItems As List(Of String)) As List(Of Stream)
Dim barcodeStreams As New List(Of Stream)()
For Each item In dataItems
' Convert string to stream
Dim dataStream As New MemoryStream(Encoding.UTF8.GetBytes(item))
' Generate barcode from stream
Dim barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128)
' Export barcode back to stream
Dim outputStream As New MemoryStream()
barcode.SaveAsPng(outputStream)
outputStream.Position = 0 ' Reset position for reading
barcodeStreams.Add(outputStream)
Next
Return barcodeStreams
End Function
' Usage example
Dim orderNumaras As New List(Of String) From {"ORD-001", "ORD-002", "ORD-003"}
Dim barcodes = GenerateBarcodeStreams(orderNumaras)
Çoklu iş parçacıklı uygulamalarda asenkron işlemleri ve geliştirilmiş performansı görmek için Async ve Multithread Kullan kılavuzuna bakın.
Sıkça Sorulan Sorular
C#'ta metinden bir barkodu nasıl oluşturabilirim?
IronBarcode ile C#'ta metinden barkod oluşturabilirsiniz, tek satırlık bir kod ile: BarcodeWriter.CreateBarcode("YourText", BarcodeWriterEncoding.Code128). IronBarcode, QR Kod, Code128, PDF417, Aztec ve daha fazlasını içeren çeşitli formatlar destekler.
Hangi veri türlerini barkod olarak kodlayabilirim?
IronBarcode, dizeler, URL'ler, ID'ler, ikili veri (bayt dizileri) ve bellek akışları dahil olmak üzere çeşitli veri türlerini kodlamanıza izin verir. Kütüphane, seçtiğiniz barkod formatına göre otomatik olarak dönüşüm ve kodlama yönetir.
URL'ler için hangi barkod formatını kullanmalıyım?
IronBarcode'da URL'leri kodlamak için QR Kodları en iyi seçenektir. QR Kodları, 4.296 alfasayısal karaktere kadar depolayabilir ve hata düzeltme yetenekleri içerir, yani web adresleri ve e-posta adresleri için idealdir.
Sipariş numaraları ve seri kodları için en iyi barkod formatı hangisidir?
Code128, IronBarcode kullanarak sipariş numaraları ve seri kodları gibi alfasayısal veriler için ideal formattır. Modern uygulamalar için son derece etkilidir ve karışık karakter setleri için mükemmel veri yoğunluğu sağlar.
İkili verilerden barkod oluşturabilir miyim?
Evet, IronBarcode CreateBarcode yöntemiyle System.Byte[] dizileri veya System.IO.Stream girişleri kullanarak ikili verilerden barkod oluşturmaya olanak tanır.
Hangi resim formatlarında barkod kaydedebilirim?
IronBarcode, oluşturulan barkodları PNG, JPEG, BMP, GIF ve TIFF dahil olmak üzere birden fazla resim formatında kaydetmenize izin verir. Kütüphane, çeşitli kullanımlar için esnek dışa aktarma seçenekleri sunar.
PDF417 barkodunda ne kadar veri depolayabilirim?
IronBarcode ile oluşturulan PDF417 barkodları 1.850 alfasayısal karaktere kadar depolayabilir, yani uçuş biletleri, kargo etiketleri ve hükümet kimlikleri gibi karmaşık veriler için uygundur.
Mobil biletleme için en iyi barkod formatı hangisidir?
IronBarcode kullanırken mobil biletleme ve ulaşım uygulamaları için Aztec barkodları en uygun seçenektir. QR kodlarına göre daha az yer kaplarlar ve mobil cihazlarda yüksek veri kapasitesi ve okunabilirliği korurlar.
Bir projede IronBarcode'u uygulamak için hangi programlama becerileri gereklidir?
IronBarcode'u bir projede uygulamak için temel C# programlama bilgisi yeterlidir, çünkü bu kütüphane, geliştiricilere rehberlik eden basit yöntemler ve kapsamlı belgeler sağlar.
IronBarcode, hem küçük projeler hem de büyük kurumsal uygulamalar için uygun mu?
IronBarcode, küçük projeler kadar geniş çaplı kurumsal uygulamalar için de uygun, ölçeklenebilir ve çok yönlü olacak şekilde tasarlanmıştır ve sağlam barkod çözümleri gerektiren uygulamalara hizmet eder.

