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

C# PostgreSQL (Geliştiriciler için Nasıl Çalışır)

C# uygulamalarını PostgreSQL ile entegre etmekle ilgilenen acemiler için tasarlanmış bu öğreticiye hoş geldiniz. PostgreSQL, dünya genelinde en çok kullanılan ilişkisel veritabanlarından biridir ve güvenilirliği ile C# dahil geniş bir programlama ortamı ile uyumluluğu ile bilinir. Bu kılavuz, bir C# uygulamasını bir PostgreSQL veritabanına bağlama, SQL deyim sorgularını çalıştırma ve veri yönetiminin temel noktalarında size yol gösterecek. Visual Studio, NuGet Paket Yöneticisi ve Npgsql veri sağlayıcısı gibi araçları kullanarak, bir PostgreSQL sunucusuyla iletişim kuran basit bir proje oluşturacağız. PostgreSQL entegrasyonu ile IronPDF kütüphanesini de öğreneceğiz.

Çevrenizi Kurma

Kodlamaya dalmadan önce, bilgisayarınıza Visual Studio'nun kurulu olduğundan emin olun. Visual Studio, C# dahil olmak üzere diğer programlama dillerini destekleyen popüler bir entegre geliştirme ortamıdır (IDE). Veritabanı yönetimi için, yerel makinenize PostgreSQL yükleyin veya Azure Veri Tabanı gibi bir bulut ortamında bir PostgreSQL veritabanı kurun.

Visual Studio ve PostgreSQL sunucunu kurduktan sonra yeni bir C# projesi oluştur. Bunu Visual Studio'yu açarak, Dosya menüsüne giderek, Yeni ve ardından Proje'yi seçerek yapabilirsiniz. İşleri basit tutmak için projeniz için bir Konsol Uygulaması (.NET Core) seçin.

Integrating PostgreSQL with C

C# uygulamanızı bir PostgreSQL veritabanına bağlamak için Npgsql veri sağlayıcısına ihtiyacınız var. Npgsql, kodunuzun SQL komutları yürütmesine ve verileri yönetmesine olanak tanıyan C# uygulamaları ve PostgreSQL veritabanları arasında bir köprü olarak hareket eder.

Npgsql Kurulumu

Yeni oluşturduğunuz projeyi Visual Studio'da açın. Solution Explorer'da projenize sağ tıklayın, 'NuGet Paketlerini Yönet'i seçin ve Npgsql paketini arayın. Paket isminin yanındaki yükle düğmesine tıklayarak yükleyin. Bu işlem Npgsql veri sağlayıcısını projenize ekler, böylece uygulamanız PostgreSQL ile iletişim kurabilir. Bunu paket yöneticisi konsolu kullanarak da yükleyebilirsiniz.

C# PostgreSQL (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Npgsql

Veritabanı Bağlantısını Yapılandırma

C#'dan bir PostgreSQL veritabanıyla etkileşime girmenin ilk adımı bir bağlantı kurmaktır. Bu, sunucu adı, port, kullanıcı adı ve şifre gibi bilgileri içeren bir bağlantı dizesi gerektirir. İşte temel bir PostgreSQL bağlantı dizesi şablonu:

string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
Dim connectionString As String = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase"
$vbLabelText   $csharpLabel

localhost, yourpassword ve mydatabase'i PostgreSQL sunucunuzun bilgileriyle değiştirin.

Çalışan Modelini Tanımlama

Employee varlık modelini PostgreSQL veritabanındaki verilerimizi temsil edecek şekilde tanımlarız. Bu model, veritabanı tablosundaki sütunlara karşılık gelen özellikleri içerir.

public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
Public Class Employee
	Public Property Id() As Integer ' -  Automatically becomes the primary key
	Public Property LastName() As String
End Class
$vbLabelText   $csharpLabel

Bu kod parçacığı, Id ve LastName adlı iki özelliğe sahip basit bir Employee sınıfını tanımlar. Entity Framework Core, Id sıralı birincil anahtar özelliğinin birincil anahtar olarak ele alınması gerektiğini çıkarım yapmak için kuralları kullanır.

Uygulamanın DbContext'ini Yapılandırma

AppDbContext sınıfı Entity Framework Core'dan DbContexti genişletir, C# uygulamanız ile PostgreSQL veritabanı arasında köprü görevi görür. Bu, bağlantı dizesi gibi yapılandırma ayrıntılarını ve veritabanındaki tabloları temsil eden DbSet özelliklerini içerir.

public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
Public Class AppDbContext
	Inherits DbContext

	Public Property Employees() As DbSet(Of Employee) ' -  Represents the Employees table

	Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
		Dim connectionString As String = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database"
		optionsBuilder.UseNpgsql(connectionString)
	End Sub

	Protected Overrides Sub OnModelCreating(ByVal modelBuilder As ModelBuilder)
		modelBuilder.Entity(Of Employee)().ToTable("Employees")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • DbSet Özelliği: public DbSet Employees { get; set; } ** PostgreSQL veritabanında personel tablosuyla eşlenmiş **Employee varlıklarından oluşan bir küme ilan eder.

  • OnConfiguring Metodu: Bu metod, gerekli veritabanı bağlantı dizesi ile DbContexti yapılandırır. your_password ve your_database'i gerçek PostgreSQL sunucu bilgilerinizle değiştirin.

  • OnModelCreating Metodu: Burada, varlık davranışlarını daha fazla yapılandırmak için Fluent API'yi kullanabilirsiniz. Bu örnekte, tablo adını açıkça belirtiriz, ancak tablonun adı DbSet özelliği adıyla eşleşirse isteğe bağlıdır.

Ana Program Mantığı

Program sınıfının Main metodunda, veritabanının oluşturulduğundan emin olur, boşsa başlangıç verileriyle doldurur ve ardından çalışan verilerini almak ve görüntülemek için bir sorgu çalıştırırız.

class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Using context = New AppDbContext()
			context.Database.EnsureCreated() ' Ensure the database and schema are created
			If Not context.Employees.Any() Then ' Check if the Employees table is empty
				context.Employees.Add(New Employee With {.LastName = "Software"})
				context.SaveChanges() ' Save changes to the database
			End If
			Dim employees = context.Employees.Where(Function(e) e.LastName = "Software").ToList()
			For Each employee In employees
				Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}")
			Next employee
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Yukarıdaki kod, veritabanının var olup olmadığını kontrol eder ve yoksa şemayla birlikte oluşturur. Geliştirme sırasında yeni bir veritabanı başlatmanın basit bir yoludur. Bu SQL ifadesi, Çalışanlar tablosunun boş olup olmadığını kontrol eder, program soyadı 'Yazılım' olan yeni bir Çalışan ekler ve değişiklikleri veritabanına kaydeder. Program, 'Software' soyadına sahip olan çalışanların girişlerini Employees tablosuna sorgular ve ayrıntılarını konsola yazdırır.

Çıktı

Programı çalıştırdığınızda konsoldaki çıktı:

C# PostgreSQL (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Çıktı

Ve bu, PgAdmin'deki tablo verisidir:

C# PostgreSQL (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Tablo Çıktısı

IronPDF'ye Giriş

IronPDF Kütüphanesinin Kapasitelerini Keşfedin ve bu kapsamlı C# kütüphanesinin geliştiricilerin .NET uygulamaları içinde PDF belgeleri oluşturmasını, düzenlemesini ve manipüle etmesini nasıl sağladığını anlayın. Bu güçlü araç, HTML'den, URL'lerden ve resimlerden PDF oluşturmayı basitleştirir. Ayrıca metin ve resim düzenleme ve şifreleme ve dijital imzalar gibi güvenlik özellikleri ekleme gibi temel PDF işlemlerini sağlar. IronPDF, kullanımı kolay olmasıyla öne çıkar, geliştiricilerin, en az kod kullanarak karmaşık PDF işlevselliklerini uygulamalarını sağlar.

IronPDF, HTML'nin kolayca PDF'e dönüştürülmesini sağlayarak yerleşim ve stilleri değiştirmeden tutar. Bu özellik, raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyalarını, URL'leri ve HTML dizgilerini PDF dosyalarına dönüştürür.

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

IronPDF'i bir PostgreSQL veritabanı ile entegre etmek, veritabanınızda depolanan dinamik verilere dayalı olarak PDF raporları veya belgeleri oluşturmanız gereken senaryolarda inanılmaz derecede faydalı olabilir. Bu, bir PostgreSQL veritabanında kalıcı hale getirilen verilerden doğrudan fatura, rapor, müşteri bildirimi ve daha fazlasını oluşturmaktan kaynaklanabilir.

Installing IronPDF

IronPDF'i kullanmadan önce, onu projenize eklemeniz gerekir. Bunu NuGet Paket Yöneticisi aracılığıyla kolayca yapabilirsiniz:

Install-Package IronPdf

PostgreSQL Verilerinden PDF Oluşturma

Bu örnekte, PostgreSQL veritabanımızdan çalışanları listeleyen basit bir PDF raporu oluşturalım. Önceki bölümlerde açıklandığı gibi AppDbContext ve Employee modelinin kurulu olduğunu varsayacağız.

Öncelikle projenizde IronPDF kütüphanesinin kurulu olduğundan emin olun. Sonra, PostgreSQL veritabanından veri çekmek ve bir PDF raporu oluşturmak için aşağıdaki kodu kullanabilirsiniz:

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		IronPdf.License.LicenseKey = "Key"
		' Initialize the database context
		Using context = New AppDbContext()
			' Fetch employees from the database
			Dim employees = context.Employees.ToList()
			' Generate HTML content for the PDF
			Dim htmlContent = "<h1>Employee Report</h1>"
			htmlContent &= "<table><tr><th>ID</th><th>Last Name</th></tr>"
			For Each employee In employees
				htmlContent &= $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>"
			Next employee
			htmlContent &= "</table>"
			' Instantiate the IronPDF HtmlToPdf converter
			Dim renderer = New ChromePdfRenderer()
			' Generate the PDF document from the HTML content
			Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
			' Save the generated PDF to a file
			Dim outputPath = "f:\EmployeeReport.pdf"
			pdf.SaveAs(outputPath)
			Console.WriteLine($"PDF report generated: {outputPath}")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Çıktı

Kodu çalıştırdığınızda, bu konsol çıktısı gösterilecektir:

C# PostgreSQL (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Konsol Çıktısı

Bu PDF oluşturuldu:

C# PostgreSQL (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - PDF Çıktısı

Sonuç

C# ve PostgreSQL ile veri tabanı yönetimi dünyasına önemli bir ilk adım attınız. Bu öğreticideki talimatları takip ederek, Visual Studio'da bir proje kurmayı, gerekli paketleri yüklemeyi ve temel veri tabanı işlemlerini gerçekleştirmeyi öğrendiniz. Bu kavramlarla daha aşina oldukça, C# ile en önemli ilişkisel veri tabanı sistemlerinden birini birleştirmenin gücünü ve esnekliğini keşfedeceksiniz. C#'ın PostgreSQL ile nasıl etkileşimde bulunduğunu daha iyi anlamak için farklı sorgular ve varlık yapılandırmaları ile denemeler yapmaya devam edin.

IronPDF, geliştiricilerin özelliklerini ve yeteneklerini başlangıçta herhangi bir yatırım yapmadan keşfetmelerine olanak tanıyan IronPDF özelliklerinin ücretsiz bir denemesi sunar. Bu deneme, özellikle .NET uygulamalarında PDF belgelerini oluşturma, düzenleme ve dönüştürmeye yönelik projelerinizin gerekliliklerini IronPDF'in ne kadar iyi karşıladığını değerlendirmek için faydalıdır. Deneme süresinden sonra veya üretim kullanımı için bir lisans edinmek gereklidir. IronPDF için lisanslama $999 başlar, ve farklı geliştirme ihtiyaçlarına uygun çeşitli özellikler ve destek seçenekleri sunar.

Sıkça Sorulan Sorular

Bir C# uygulaması PostgreSQL veritabanına nasıl bağlanır?

Bir C# uygulamasını PostgreSQL veritabanına bağlamak için, Visual Studio'da NuGet Paket Yöneticisi aracılığıyla yüklenebilen Npgsql veri sağlayıcısını kullanmanız gerekir. Ayrıca, sunucu adı, port, kullanıcı adı, şifre ve veritabanı adı içeren düzgün yapılandırılmış bir bağlantı dizesine ihtiyaç duyacaksınız.

PostgreSQL ile bir C# projesi kurarken hangi adımlar gereklidir?

Önce, makinenize Visual Studio ve PostgreSQL'i yükleyin. Ardından yeni bir C# projesi oluşturun ve Npgsql veri sağlayıcısını yüklemek için NuGet Paket Yöneticisini kullanın. Bağlantı dizesinizi yapılandırın ve PostgreSQL sunucunuzun çalıştığından emin olun.

Bir C# uygulamasında SQL komutlarını nasıl çalıştırabilirim?

C# uygulamasında Npgsql veri sağlayıcısını kullanarak SQL komutları çalıştırabilirsiniz. PostgreSQL veritabanına bağlantı kurduktan sonra, NpgsqlCommand ile SELECT, INSERT, UPDATE ve DELETE gibi SQL sorgularını çalıştırabilirsiniz.

C#'da PostgreSQL verilerinden nasıl PDF raporu oluşturabilirim?

IronPDF, C#'da PostgreSQL verilerinden PDF raporları oluşturmanıza imkan tanır. Veritabanından veri alabilir ve IronPDF'in özelliklerini kullanarak bir PDF belgesi oluşturabilirsiniz, HTML içeriğini PDF'e dönüştürme veya mevcut PDF'leri düzenleme gibi.

C#'da Npgsql veri sağlayıcısı kullanmanın amacı nedir?

Npgsql veri sağlayıcısı, PostgreSQL veritabanlarıyla iletişimi sağlamak için C#'ta kullanılır. Uygulamanızın SQL sorgularını çalıştırmasına, veri yönetimine ve veritabanı ile kesintisiz etkileşime imkan tanır.

C# kullanarak bir veritabanı nasıl oluşturulur ve doldurulur?

C#'da, context.Database.EnsureCreated() metodunu kullanarak veritabanı oluşturabilirsiniz, bu metot veritabanının var olup olmadığını kontrol eder ve yoksa oluşturur. İlk verileri eklemek için verileri bağlama ekleyebilir ve context.SaveChanges() kullanarak kalıcı hale getirebilirsiniz.

Bir .NET uygulamasında IronPDF kullanmanın faydaları nelerdir?

IronPDF, PDF belgelerini oluşturma, düzenleme ve işleme için sağlam işlevsellik sunduğundan .NET uygulamalarında faydalıdır. HTML'yi PDF'e dönüştürme, metin ve resimleri düzenleme ve şifreleme gibi güvenlik özellikleri eklemek gibi işlemleri destekler.

Bir PostgreSQL tablosu için C#'da veri modeli nasıl tanımlanır?

Bir PostgreSQL tablolarının yapısına karşılık gelen bir sınıf oluşturarak C#'da veri modeli tanımlayabilirsiniz. Sınıftaki her özelliğin tabloya ait bir sütuna karşılık gelmesi gereklidir, böylece Entity Framework veriyi doğru şekilde eşleştirebilir.

C# ve PostgreSQL arasındaki bağlantı sorunlarını nasıl tanılarım?

Bağlantı sorunlarını gidermek için, bağlantı dizenizin doğru yapılandırıldığından emin olun, PostgreSQL sunucunuzun çalıştığını doğrulayın ve bağlantıyı engelleyebilecek herhangi bir güvenlik duvarı veya ağ sorunu olup olmadığını kontrol edin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

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 ...

Daha Fazla Oku

Iron Destek Ekibi

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