IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

.NET geliştirme alanında, bağımlılıkların etkin bir şekilde yönetilmesi, ölçeklenebilir, sürdürülebilir ve test edilebilir uygulamalar inşa etmek için kritik öneme sahiptir. Bağımlılık enjeksiyonu (DI) konteynerleri, kontrol tersine çevirme (IoC) ilkesini teşvik ederek bu hedeflere ulaşmada önemli bir rol oynar. Pek çok genel barındırma mekanizması kütüphanesi arasında, Autofac, .NET için zengin özelliklere sahip ve genişletilebilir bir çerçeve olarak öne çıkar.

Bu makalede, Autofac .NET 6'yı keşfetmeye başlayacağız, özelliklerini ve faydalarını ortaya çıkararak kullanımına dair pratik örnekler sunacağız. Bu makalenin ilerleyen kısımlarında, Iron Software'den güçlü bir PDF üretim kütüphanesi olan IronPDF'i öğreneceğiz. Ayrıca, Autofac.NET ve IronPDF'in birlikte kullanıldığı bir kullanım örneğini sunacağız.

Autofac .NET Anlayışı

Autofac, farklı ortamlardaki istemcilere ve uygulamalara hizmet eden ve bileşenlerin nesne ömürlerini yönetmek, bağımlılıkları çözmek ve uygulama bileşenlerini oluşturmak için kapsamlı destek sağlayan açık kaynaklı bir IoC konteynerdir. İhtiyaç duyulan bileşenleri düzenli bir şekilde entegre eder.

IronPDF'in .NET PDF Kütüphanesi'nin sunduğu kaynakları keşfederek uygulamalarınızda nasıl çalışabileceğiniz hakkında daha fazla bilgi edinin. PDF üretimi ve işleme için gelişmiş özelliklerin önemini vurgular. IronBarcode'un .NET Barkod Kütüphanesi üzerinde derinlemesine çalışma yaparak bağımlılık enjeksiyonunun barkod üretimindeki pratik uygulamalarına göz atabilirsiniz.

Iron Software'in resmi sayfasını ziyaret ederek, gerçek dünya senaryolarında Autofac kullanarak ek bilgiler ve pratik örneklerle etkileşim kurun, burada Autofac ile sorunsuz bir şekilde entegre olan ve .NET geliştirme sürecinizi geliştiren IronOCR ve IronXL gibi kapsamlı bir ürün paketi bulacaksınız.

Autofac Özellikleri

  1. Konteyner Oluşturma ve Bileşen Kaydı: Başlangıç sınıfında bileşenleri kaydederek Autofac ile konteynerler oluşturabilirsiniz. Lambdalar, türler veya önceden oluşturulmuş instances kullanarak bileşenleri kaydedebilirsiniz.

    public class Startup
    {
        public void ConfigureContainer()
        {
            var builder = new ContainerBuilder(); // Create a new container builder
            builder.RegisterInstance(new TaskRepository()).As<ITaskRepository>(); // Register an instance for ITaskRepository
            builder.RegisterType<TaskController>(); // Register TaskController type
            builder.Register(c => new LogManager(DateTime.Now)).As<ILogger>(); // Use lambda expression to register ILogger
            // Scan an assembly for components and register them
            builder.RegisterAssemblyTypes(myAssembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces();
            var container = builder.Build(); // Build the container
        }
    }
  2. Bağımlılıkları İfade Etme: Autofac, kurucu parametrelerini enjekte edebilir, mülk enjeksiyonu ve yöntem enjeksiyonunu ele alabilir.

    public class TaskController
    {
        private ITaskRepository _repository;
        private ILogger _logger;
    
        public TaskController(ITaskRepository repository, ILogger logger)
        {
            _repository = repository; // Assign injected repository to the local variable
            _logger = logger; // Assign injected logger to the local variable
        }
    }
  3. Esnek Modül Sistemi: Autofac modülleri, XML yapılandırması ve kod tabanlı kayıtlar arasında bir denge kurar. Karmaşık kayıtları kodda belirleyebilir veya XML kullanarak dağıtım zamanındaki davranışları değiştirebilirsiniz.

    public class CarTransportModule : Module
    {
        public bool ObeySpeedLimit { get; set; }
    
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType<Car>().As<IVehicle>(); // Register Car as IVehicle
            if (ObeySpeedLimit)
                builder.RegisterType<SaneDriver>().As<IDriver>(); // Register SaneDriver if speed limit is to be obeyed
            else
                builder.RegisterType<CrazyDriver>().As<IDriver>(); // Register CrazyDriver otherwise
        }
    }
  4. Basit Genişleme Noktaları: Autofac, bileşen aktivasyonunu veya serbest bırakılmasını özelleştirmek için aktivasyon olayları sağlar.

    var builder = new ContainerBuilder();
    builder.RegisterType<Listener>().As<IListener>().OnActivated(e => e.Instance.StartListening()); // Setup activation event
    builder.RegisterType<Processor>().OnActivating(e => e.Instance.Initialize()); // Setup activating event
    var container = builder.Build();

Autofac.NET'in Temel Özellikleri

  1. Esnek Bileşen Kaydı: Autofac, geliştiricilerin çeşitli kayıt tekniklerini kullanarak bileşenleri kaydetmelerine olanak tanır, manuel kayıt, derleme taraması ve başvuruya dayalı kayıt dahil. Bu esneklik, bileşen oluşturma ve yapılandırma üzerinde ayrıntılı bir kontrol sağlar.

  2. Ömür Yönetimi: Autofac, tekil, bağımlılık başına instance, ömür kapsamı başına instance ve istek başına instance gibi çeşitli nesne ömür kapsamlarını destekler. Nesne ömrü üzerinde ayrıntılı bu kontrol, kaynakların etkili kullanımını sağlar ve uzun süre çalışan uygulamalarda bellek sızıntılarını önler.

  3. Otomatik Bağımlılık Çözme: Autofac, kayıtlı bileşenler ve bağımlılıkları temel alarak bağımlılıkları otomatik olarak çözer. Bu otomatik bağlama, karmaşık nesne grafiklerinin yapılandırılmasını basitleştirir ve bileşenler arasında gevşek bağlamayı teşvik eder.

  4. Modül Kompozisyonu: Autofac, geliştiricilerin modüller kullanarak bileşen kayıtlarını organize ve kapsüllemelerine izin verir. Modüller, ilgili kayıtlar için mantıksal konteynerler olarak hizmet eder, çok sayıda bileşene sahip büyük ölçekli uygulamaları yönetmeyi ve sürdürmeyi kolaylaştırır.

  5. Önleme ve AOP: Autofac, önleme uzantısı aracılığıyla önleme ve aspect-oriented programming (AOP) için destek sağlar. Kesişimle beraber geliştiriciler, bileşenlerin uygulamalarını değiştirmeden, günlük kaydı, önbellekleme ve güvenlik gibi kesitli kaygıları uygulayabilir.

  6. ASP.NET Core ve .NET Core Entegrasyonu: Autofac, .NET Core ve ASP.NET Core ile sorunsuzca bütünleşir ve modern web uygulamaları ve mikroservisler için birinci sınıf bağımlılık enjeksiyonu desteği sağlar. Bu, .NET ekosistemi ile uyumluluğu ve birlikte çalışabilirliği sağlamak için yerleşik hizmet sağlayıcı abstarksiyonunu kullanır.

Autofac.NET ile Pratik Örnekler

Autofac.NET kullanımını açıklamak için bazı pratik örnekler inceleyelim:

public class Program
{
    public static void Main()
    {
        // Setting up Autofac container
        var builder = new ContainerBuilder();

        // Registering types manually
        builder.RegisterType<MyService>().As<IMyService>();

        // Registering types using assembly scanning
        builder.RegisterAssemblyTypes(typeof(MyAssembly).Assembly)
            .Where(t => t.Name.EndsWith("Repository"))
            .AsImplementedInterfaces();

        // Registering modules
        builder.RegisterModule(new MyModule());

        // Building the container
        var container = builder.Build();

        // Resolving dependencies
        using (var scope = container.BeginLifetimeScope())
        {
            var service = scope.Resolve<IMyService>();
            service.DoSomething();
        }
    }
}

Bu bölümde, Autofac.NET'i bağımlılık enjeksiyonu için pratik olarak nasıl uygulayacağımızı gösterdik. Manuel kayıttan, montaj taramasına ve modül tabanlı kayıta kadar, Autofac'in bağımlılıkları yönetmede sunduğu esnekliği gösterdik. Bu teknikleri kullanarak geliştiriciler, uygulamalarının bağımlılık enjeksiyon sürecini düzene sokabilirler, bu da daha iyi bakıma uygunluk ve ölçeklenebilirlik sağlar.

Iron Software ürünlerinin .NET uygulamalarınıza nasıl entegre olup işlevselliği daha da düzene sokabileceğini öğrenmek için, IronPDF dokümantasyonunu inceleyin. PDF belgelerini programlı bir şekilde nasıl oluşturacağınızı ve düzenleyeceğinizi öğrenebilir veya bar kodları okuyup yazmada kullanılan IronBarcode ve gelişmiş optik karakter tanımada işlev gören IronOCR gibi güçlü .NET kütüphanelerini keşfetmek için Iron Software web sitesini ziyaret edin.

Autofac.NET Kullanmanın Faydaları

  1. Basitlik ve Esneklik: Autofac, bileşenleri kaydetmek ve çözmek için basit ve sezgisel bir API sunar, bu da bağımlılık enjeksiyonunun uygulanmasını ve bakımını kolaylaştırır.

  2. Test Edilebilirlik ve Bakım: Gevşek bağlamayı ve bağımlılık tersini teşvik ederek, Autofac, birim testi ve yeniden yapılandırmayı kolaylaştırarak .NET uygulamalarının test edilebilirliğini ve bakımını artırır.

  3. Performans ve Ölçeklenebilirlik: Autofac'ın hafif ve verimli çalıştırma performansı, yüksek performanslı uygulamalar ve büyük nesne grafikleriyle ölçeklenebilir sistemler için uygundur.

  4. Genişletilebilirlik ve Özelleştirme: Autofac'ın genişletilebilir mimarisi, geliştiricilere Autofac'ın davranışını özel modüller, kayıt kaynakları ve ara katman bileşenleri ile genişletme ve özelleştirme imkanı tanır. Bu, farklı uygulama gerekliliklerine hizmet eder.

  5. Topluluk ve Destek: Aktif bir geliştirici topluluğu ve kapsamlı dokümanları ile Autofac, çerçeveye öğrenme, sorun giderme ve katkıda bulunma konusunda mükemmel destek ve kaynaklar sağlar.

Autofac Lisansı

Autofac, geliştirme ve ticari amaçlarla ücretsiz olarak kullanabileceğiniz bir MIT Lisansı ile gelir.

Iron Software'den IronPDF Tanıtımı

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 1 - IronPDF web sayfası

IronPDF, .NET projelerinde PDF'leri yönetmek için kapsamlı bir çözüm sağlamak üzere tasarlanmış sağlam bir C# PDF kütüphanesidir. İhtiyaçlarınız PDF belgeleri oluşturma, düzenleme, dışa aktarma, güvenli hale getirme, yükleme veya manipüle etme içerdiğinde, IronPDF ihtiyacınız olan araçları sağlar. İşte bazı önemli özellikleri ve uygulamaları:

Başlıca Özellikler

  • HTML'den PDF'ye Dönüştürme: HTML içeriğini PDF'ye zahmetsizce dönüştür. HTML, MVC, ASPX ve görüntülerden PDF'ler oluşturun.

  • PDF Yönetimi: IronPDF, 50'den fazla özellikle, PDF'lerden içerik imzalamanıza, düzenlemenize ve çıkartmanıza olanak tanıyarak dijital imzaları ve değişiklikleri kolaylaştırır.

  • Çapraz Platform Desteği: C#, F# ve VB.NET ile uyumlu olan IronPDF, .NET Core, .NET Standard ve .NET Framework dahil çeşitli .NET sürümlerinde çalışır. Ayrıca Java, Node.js ve Python için de mevcuttur.

IronPDF'ün projelerinize PDF işlevselliklerini nasıl entegre edebileceği hakkında daha fazla bilgi için IronPDF ürün sayfasını ziyaret edin.

IronBarcode, IronOCR ve daha fazlasını içeren Iron Software'in ürün tekliflerine kapsamlı bir genel bakış için Iron Software ana sayfasını ziyaret edin.

Uyumluluk ve Ortamlar

  • .NET Sürümleri: C#, VB.NET ve F# destekler.

  • Proje Tipleri: Web (IronPDF ile Blazor & WebForms), masaüstü (WPF & MAUI) ve konsol uygulamaları için uygun.

  • Uygulama Ortamları: Windows, Linux, Mac, Docker, Azure, AWS ve daha fazlası ile uyumlu.

  • IDE'ler: Microsoft Visual Studio ve JetBrains Rider ile sorunsuz entegre olur.

  • İşletim Sistemleri & İşlemciler: Windows, Mac ve Linux (x64, x86, ARM) üzerinde çalışır.

PDF Standartları ve Düzenleme

  • Uyumluluk: Çeşitli PDF sürümlerini (1.2 - 1.7), PDF/UA ve PDF/A'yı destekler.

  • Özelleştirme: PDF dosyaları için özellikleri, güvenliği ve sıkıştırmayı ayarlayın.

  • Meta Veri ve Yapı: Meta verileri, revizyon geçmişini ve belge yapısını düzenleyin.

  • Şablonlar ve Ayarlar: Sayfa şablonlarını, başlıkları, altlıkları ve sayfa ayarlarını uygulayın.

Bu özellikler ve bunları nasıl uygulayacağınız hakkında daha fazla bilgi için IronPDF'ın resmi sitesinde detaylı PDF oluşturma ve manipülasyon kılavuzunu ziyaret edin.

Performans Optimizasyonu

  • Verimlilik: Verimli PDF oluşturma için tam çoklu görev ve asenkron destek.

  • Öncelik: Doğruluğa, kullanım kolaylığına ve hıza odaklanır.

Şimdi bu iki kütüphane ile pratik bir örnek görelim.

Autofac.NET ve IronPDF Kullanarak PDF Belgesi Oluşturma

Öncelikle bir Visual Studio konsol uygulaması oluşturalım.

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 2 - Visual Studio konsol uygulaması oluşturma

Proje adını ve konumunu sağlayın.

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 3 - Proje detaylarını yapılandırma

Bir sonraki adım için gerekli .NET sürümünü seçin ve Oluştur'a tıklayın.

Daha sonra Visual Studio Paket Yöneticisi'nden IronPDF kütüphanesini NuGet Paketi'nden yükleyin.

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 4 - Gerekli IronPDF paketini yükleme

IronPDF kütüphanesini yükleme ve kullanma hakkında daha fazla bilgi için IronPDF Dokümantasyonunu ziyaret edin.

Visual Studio Paket Yöneticisi'nden NuGet Paketi'nden Autofac'ı yükleyin.

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 5 - Gerekli Autofac paketini yükleme

Autofac hakkında daha fazla bilgi için Autofac Dokümantasyon Sayfasını ziyaret edin.

Kod Örneği: Autofac ve IronPDF

using Autofac;
using CacheManager.Core;
using IronPdf;
using System.Reflection;

namespace IronPdfDemos
{
    public class AutoFac
    {
        public static void Execute()
        {
            // Instantiate Cache and ChromePdfRenderer
            var renderer = new ChromePdfRenderer();
            var cache = CacheFactory.Build("ironPdfAutofac", settings =>
            {
                settings.WithDictionaryHandle();
            });

            // Prepare HTML content
            var content = "<h1>Demonstrate Autofac with IronPDF</h1>";
            content += "<p>This is an illustration of using Autofac for dependency injection and IronPDF for generating PDF documents.</p>";
            content += "<h2>Setting up Autofac container</h2>";

            // Setting up Autofac container
            var builder = new ContainerBuilder();
            content += "<p>var builder = new ContainerBuilder();</p>";

            content += "<h2>Registering types manually</h2>";
            // Registering types manually
            builder.RegisterType<MyService>().As<IMyService>();
            content += "<p>builder.RegisterType<MyService>().As<IMyService();</p>";

            content += "<h2>Registering types using assembly scanning</h2>";
            // Registering types using assembly scanning
            builder.RegisterAssemblyTypes(typeof(AutoFac).Assembly)
                .Where(t => t.Name.EndsWith("Repository"))
                .AsImplementedInterfaces();
            content += "<p>builder.RegisterAssemblyTypes(typeof(AutoFac).Assembly).Where(t => t.Name.EndsWith(\"Repository\")).AsImplementedInterfaces();</p>";

            content += "<h2>Registering modules</h2>";
            // Registering modules
            builder.RegisterModule(new MyModule());
            content += "<p>builder.RegisterModule(new MyModule());</p>";

            content += "<h2>Building the container</h2>";
            // Building the container
            var container = builder.Build();
            content += "<p>var container = builder.Build();</p>";

            content += "<h2>Resolving dependencies</h2>";
            // Resolving dependencies
            using (var scope = container.BeginLifetimeScope())
            {
                var service = scope.Resolve<IMyService>();
                service.DoSomething();
            }
            content += "<p>var service = scope.Resolve<IMyService();</p>";

            // Create a PDF from the HTML string using C#
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("autofac.pdf");
            Console.WriteLine("We are done...");
            Console.ReadKey();
        }
    }

    internal interface IMyService
    {
        void DoSomething();
    }

    internal class MyModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            // Register module dependencies here
        }
    }

    internal class MyService : IMyService
    {
        public void DoSomething()
        {
            Console.WriteLine("DoSomething");
        }
    }
}

Kod Açıklaması

Verdiğiniz kod parçasını ayıralım:

  1. ChromePdfRenderer Yapılandırması:

    • Kod, HTML içeriğinden PDF oluşturan bir ChromePdfRenderer örneği başlatır, bu IronPDF'in önemli bir özelliğidir.
  2. HTML İçeriği Hazırlığı:

    • content değişkeni, PDF oluşturmak için kullanılacak bir HTML dizesidir.

    • IronPDF ile Autofac'i göstermek için "Başlık" içeren bir <h1> etiketi içerir.

  3. Autofac Container Ayarlama:

    • Kod, builder adlı bir ContainerBuilder örneği oluşturur.

    • Bu, bağımlılık enjeksiyonu için bir Autofac kapsayıcısı ayarlamanın ilk adımıdır.

  4. Türleri Manuel Kayıt:

    • MyService türünü IMyService arayüzünün bir implementasyonu olarak kaydeder.

    • Bu, gerektiğinde Autofac'in bağımlılıkları çözmesine olanak tanır.

  5. Yığın Tarama Kullanarak Türleri Kaydetme:

    • AutoFac türünü içeren derlemeyi tarar.

    • İsimleri "Repository" ile biten türleri, ilgili arayüzlerinin uygulanmaları olarak kaydeder.

  6. Modülleri Kaydetme:

    • MyModule adlı bir modülü kaydeder.

    • Modüller, ilgili kayıtların birleştirilmesine olanak tanır.

  7. Kapsayıcıyı Oluşturma:

    • Kapsayıcı, kayıtlı bileşenlerden builder.Build() yöntemi kullanılarak oluşturulur.
  8. Bağımlılıkları Çözme:

    • Bir yaşam döngüsü kapsamı (using (var scope = container.BeginLifetimeScope())) içinde, IMyService örneğini çözümler.

    • Çözülmüş hizmet üzerinde DoSomething yöntemi çağrılır.

  9. PDF Oluşturma:

    • İçerikten ChromePdfRenderer kullanılarak bir PDF oluşturulur.

    • Ortaya çıkan PDF, "autofac.pdf" olarak kaydedilir.

Çıktı

Autofac .NET 6 (Geliştiriciler İçin Nasıl Çalışır?): Şekil 6 - Önceki kod örneğinden elde edilen PDF

IronPDF Lisansı

IronPDF bir lisans anahtarına ihtiyaç duyar. Aşağıda gösterildiği gibi appSettings.json dosyasına lisans anahtarını yerleştirin.

{
  "IronPdf.License.LicenseKey": "The Key Here"
}
JSON
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 ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez