AIDE .NET

AAPC .NET (Comment ça marche pour les développeurs)

Publié août 13, 2024
Partager:

Introduction

L'équilibre entre la logique d'entreprise, l'accès aux données et la conception de l'interface utilisateur est crucial dans le scénario actuel de développement d'applications d'entreprise. L'architecture logique évolutive à base de composants, ou ALEC, est un cadre de développement logiciel très apprécié qui offre une architecture stable et évolutive pour la création d'applications commerciales gérables, dans le but de rationaliser ce processus. Les bases de code peuvent être rendues plus faciles à gérer et à tester en utilisant les outils suivantsAAPC .NET pour aider les développeurs à séparer clairement la logique commerciale de l'accès aux données.

Les développeurs peuvent utiliserBibliothèque de génération de PDF .NET d'IronPDF pour créer des documents PDF de haute qualité et l'approche structurée de l'AAPC pour la gestion de la logique d'entreprise en combinant l'AAPC .NET avec IronPDF. Les applications qui nécessitent une présentation étendue des données, une préparation automatisée des documents et une génération dynamique de rapports peuvent particulièrement bénéficier de cette combinaison. Les entreprises peuvent produire des documents soignés directement à partir de leurs applications .NET, garantir la cohérence des données et rationaliser les opérations grâce à cette interface.

Dans ce tutoriel, nous examinerons l'intégration réussie de l'AAPC avec IronPDF, en soulignant les fonctionnalités utiles et en proposant un processus détaillé pour mettre en pratique cette intégration dans une application C#. Cette intégration peut accroître considérablement les possibilités de votre application, la rendant plus efficace et plus polyvalente, que vous créiez de simples applications commerciales ou des solutions d'entreprise complexes.

Qu'est-ce que l'AAPC .NET ?

Rocky Lhotka a créé le logiciel libreAAPC .NET (Architecture logique évolutive à base de composants) pour aider les programmeurs à créer des applications commerciales fiables, extensibles et gérables pour la plateforme .NET. Il favorise une répartition claire des responsabilités en mettant l'accent sur l'utilisation d'objets commerciaux qui contiennent toute la logique commerciale, les critères de validation et les contrôles d'autorisation. La maintenabilité et l'évolutivité sont améliorées par la capacité de l'AAPC à prendre en charge la conception n-tiers et à abstraire la logique d'accès aux données, ce qui permet de déployer la logique d'entreprise sur plusieurs couches.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 1

Outre la prise en charge des objets mobiles, il peut également être utilisé avec diverses technologies d'interface utilisateur, notamment Windows Forms, WPF, ASP.NET MVC et Blazor, pour permettre un traitement client riche et efficace des formulaires web côté serveur. Le développement d'applications d'entreprise réactives, efficaces et cohérentes est facilité par cette flexibilité, qui garantit que la logique d'entreprise peut être réutilisée de manière fiable sur plusieurs couches de présentation.

Modèle d'objet d'entreprise

Veille à ce que le moteur de règles d'autorisation, les règles commerciales et les règles de validation soient appliquées de manière uniforme dans l'ensemble de l'application en encapsulant la logique commerciale dans des objets commerciaux.

Abstraction de l'accès aux données

Permet de séparer la logique d'accès aux données de la logique d'entreprise selon une approche souple, ce qui améliore la maintenabilité et simplifie le passage entre les technologies d'accès aux données et de la couche d'entreprise et les tests.

Validation et autorisation

Les règles de gestion sont mises en œuvre et constamment respectées grâce à la fonctionnalité intégrée permettant d'établir et d'appliquer des contrôles d'autorisation et des règles de validation sur les objets de gestion, ce qui garantit qu'il n'y a pas de règles non respectées.

Architecture N-Tier

Prise en charge des conceptions n-tiers, qui améliorent l'évolutivité et permettent de créer des applications distribuées en répartissant la logique d'entreprise sur plusieurs couches ou niveaux(tels que le client, le serveur et la base de données).

Soutien aux objets mobiles

Facilite la création d'objets mobiles pouvant circuler entre le client et le serveur, ce qui permet de prendre en charge des situations telles que les applications client riches et le traitement efficace côté serveur, qui nécessitent des objets commerciaux aux deux extrémités.

Indépendance de l'interface utilisateur

Permet l'utilisation d'objets commerciaux avec une variété de technologies d'interface utilisateur, facilitant la réutilisation du code et la cohérence entre plusieurs couches de présentation. Ces technologies comprennent Windows Forms, WPF, ASP.NET MVC et Blazor.

Programmation asynchrone

Permet la construction d'applications réactives qui exécutent des tâches fastidieuses sans interférer avec l'interface utilisateur en prenant en charge les modèles de programmation asynchrones.

Règles de gestion déclaratives

Facilite la gestion d'une logique d'entreprise complexe en offrant des moyens déclaratifs de définir des règles qui sont automatiquement appliquées.

Intégration du mappage objet-relationnel (ORM)

Permet aux objets métier et à la couche d'accès aux données de se connecter de manière transparente à des ORM tels qu'Entity Framework.

Sérialisation et capacités mobiles

Permet la sérialisation des objets d'entreprise pour les contextes mobiles, simplifiant ainsi le développement d'applications nécessitant la transmission de données à travers les barrières du réseau.

Gestion des transactions

Il soutient les processus transactionnels, en particulier dans les systèmes distribués qui maintiennent les applications, afin de garantir la cohérence et l'intégrité des données.

Gestion d'événements et liaison de données

La gestion des événements et la liaison des données bénéficient d'un soutien solide ; ceci est particulièrement utile pour les applications d'interface utilisateur qui doivent fournir des notifications et des mises à jour en temps réel.

Sécurité basée sur les rôles

Inclut des fonctionnalités de sécurité basées sur les rôles pour limiter l'accès aux propriétés et aux objets de gestion afin que seuls les utilisateurs autorisés puissent effectuer des tâches spécifiques.

Localisation et mondialisation

Permet de développer des applications qui peuvent être utilisées dans de nombreux contextes linguistiques et culturels en favorisant la localisation et la mondialisation.

Extensibilité

Extrêmement flexible et réutilisable, il permet aux développeurs de modifier et d'étendre le cadre pour répondre aux besoins particuliers des entreprises.

Créer et configurer l'AAPC .NET

La configuration de votre projet, l'installation des paquets nécessaires et la configuration du framework sont quelques-unes des étapes de la création et de la configuration d'une application .NET de l'AAPC. Il s'agit d'un tutoriel complet pour vous aider à démarrer avec l'AAPC .NET :

Créer un nouveau projet Visual Studio

Avec Visual Studio, la création d'un projet de console est simple. Suivez ces étapes simples pour lancer une application console dans l'environnement Visual Studio :

Assurez-vous d'avoir installé Visual Studio sur votre PC avant de l'utiliser.

Démarrer un nouveau projet

Sélectionnez Fichier, Projet, puis cliquez sur le menu Nouveau.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 2

Dans la liste des références de modèles de projet ci-dessous, choisissez l'application "Console" ou l'application "Console"(.NET Core)".

Veuillez remplir la section "Nom" pour donner un nom à votre projet.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 3

Décidez de l'endroit où vous souhaitez stocker le projet.

En cliquant sur "Créer", vous ouvrez le projet d'application Console.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 4

Installer le paquet .NET de l'AAPC

L'installation des paquets NuGet de l'AAPC .NET vient ensuite. Lancez les commandes suivantes dans la console NuGet Package Manager(Outils -> NuGet Package Manager -> Console du gestionnaire de paquets):

Install-Package CSLA
Install-Package CSLA-Server

Ces paquets contiennent des composants côté serveur ainsi que les fonctionnalités essentielles de l'AAPC.

Configurez l'AAPC .NET dans votre projet

Pour une application console, initialisez la configuration de CSLA.NET dans votre fichier Program.cs. Dans le fichier Startup.cs d'une application ASP.NET Core, cette opération serait effectuée.

using System;
using Csla.Configuration;
namespace CslaDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize CSLA .NET
            var applicationContext = new ApplicationContext();
            // Use dependency injection if needed (for ASP.NET Core or other frameworks)
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            applicationContext = provider.GetService<ApplicationContext>();
            Console.WriteLine("CSLA .NET is configured and ready to use!");
        }
    }
}
using System;
using Csla.Configuration;
namespace CslaDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize CSLA .NET
            var applicationContext = new ApplicationContext();
            // Use dependency injection if needed (for ASP.NET Core or other frameworks)
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            applicationContext = provider.GetService<ApplicationContext>();
            Console.WriteLine("CSLA .NET is configured and ready to use!");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Créer un objet de gestion

Pour capturer votre logique d'entreprise, créez un objet d'entreprise de base. Nous allons créer une classe Personne pour cet exemple.

using Csla;
namespace CslaDemo
{
    [Serializable]
    public class Person : BusinessBase<Person>
    {
        public static readonly PropertyInfo<int> IdProperty = RegisterProperty<int>(c => c.Id);
        public int Id
        {
            get => GetProperty(IdProperty);
            set => SetProperty(IdProperty, value);
        }
        public static readonly PropertyInfo<string> NameProperty = RegisterProperty<string>(c => c.Name);
        public string Name
        {
            get => GetProperty(NameProperty);
            set => SetProperty(NameProperty, value);
        }
        protected override void AddBusinessRules()
        {
            // Add validation rules
            BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(NameProperty));
        }
        // Data access methods
        [Fetch]
        private void DataPortal_Fetch(int id)
        {
            // Simulate data fetch
            Id = id;
            Name = "John Doe";
        }
        [Create]
        private void DataPortal_Create()
        {
            // Initialize default values
            Id = -1;
            Name = "New Person";
        }
    }
}
using Csla;
namespace CslaDemo
{
    [Serializable]
    public class Person : BusinessBase<Person>
    {
        public static readonly PropertyInfo<int> IdProperty = RegisterProperty<int>(c => c.Id);
        public int Id
        {
            get => GetProperty(IdProperty);
            set => SetProperty(IdProperty, value);
        }
        public static readonly PropertyInfo<string> NameProperty = RegisterProperty<string>(c => c.Name);
        public string Name
        {
            get => GetProperty(NameProperty);
            set => SetProperty(NameProperty, value);
        }
        protected override void AddBusinessRules()
        {
            // Add validation rules
            BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(NameProperty));
        }
        // Data access methods
        [Fetch]
        private void DataPortal_Fetch(int id)
        {
            // Simulate data fetch
            Id = id;
            Name = "John Doe";
        }
        [Create]
        private void DataPortal_Create()
        {
            // Initialize default values
            Id = -1;
            Name = "New Person";
        }
    }
}
Imports Csla
Namespace CslaDemo
	<Serializable>
	Public Class Person
		Inherits BusinessBase(Of Person)

		Public Shared ReadOnly IdProperty As PropertyInfo(Of Integer) = RegisterProperty(Of Integer)(Function(c) c.Id)
		Public Property Id() As Integer
			Get
				Return GetProperty(IdProperty)
			End Get
			Set(ByVal value As Integer)
				SetProperty(IdProperty, value)
			End Set
		End Property
		Public Shared ReadOnly NameProperty As PropertyInfo(Of String) = RegisterProperty(Of String)(Function(c) c.Name)
		Public Property Name() As String
			Get
				Return GetProperty(NameProperty)
			End Get
			Set(ByVal value As String)
				SetProperty(NameProperty, value)
			End Set
		End Property
		Protected Overrides Sub AddBusinessRules()
			' Add validation rules
			BusinessRules.AddRule(New Csla.Rules.CommonRules.Required(NameProperty))
		End Sub
		' Data access methods
		<Fetch>
		Private Sub DataPortal_Fetch(ByVal id As Integer)
			' Simulate data fetch
			Me.Id = id
			Name = "John Doe"
		End Sub
		<Create>
		Private Sub DataPortal_Create()
			' Initialize default values
			Id = -1
			Name = "New Person"
		End Sub
	End Class
End Namespace
VB   C#

Utiliser l'objet de gestion

Utilisons maintenant l'objet de gestion Personne du fichier Program.cs.

using System;
using Csla;
using Microsoft.Extensions.DependencyInjection;
namespace CslaDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize CSLA .NET
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            var applicationContext = provider.GetService<ApplicationContext>();
            var db = provider.GetRequiredService<IDataPortal<Person>>();
            // Create a new person
            var newPerson =  db.Create();
            Console.WriteLine($"New Person: {newPerson.Name}");
            // Fetch an existing person
            var existingPerson = db.Fetch(1);
            Console.WriteLine($"Fetched Person: {existingPerson.Name}");
        }
    }
}
using System;
using Csla;
using Microsoft.Extensions.DependencyInjection;
namespace CslaDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize CSLA .NET
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            var applicationContext = provider.GetService<ApplicationContext>();
            var db = provider.GetRequiredService<IDataPortal<Person>>();
            // Create a new person
            var newPerson =  db.Create();
            Console.WriteLine($"New Person: {newPerson.Name}");
            // Fetch an existing person
            var existingPerson = db.Fetch(1);
            Console.WriteLine($"Fetched Person: {existingPerson.Name}");
        }
    }
}
Imports System
Imports Csla
Imports Microsoft.Extensions.DependencyInjection
Namespace CslaDemo
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Initialize CSLA .NET
			Dim services = New ServiceCollection()
			services.AddCsla()
			Dim provider = services.BuildServiceProvider()
			Dim applicationContext = provider.GetService(Of ApplicationContext)()
			Dim db = provider.GetRequiredService(Of IDataPortal(Of Person))()
			' Create a new person
			Dim newPerson = db.Create()
			Console.WriteLine($"New Person: {newPerson.Name}")
			' Fetch an existing person
			Dim existingPerson = db.Fetch(1)
			Console.WriteLine($"Fetched Person: {existingPerson.Name}")
		End Sub
	End Class
End Namespace
VB   C#

Montrer comment utiliser le portail de données pour créer une nouvelle personne et récupérer une personne existante dans la méthode Main Establish de l'IDataPortal.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 5

Cette configuration fournit les bases de l'utilisation de l'AAPC .NET dans une application .NET. Si une logique d'entreprise, un accès aux données et des critères de validation plus sophistiqués sont nécessaires, vous pouvez développer cette stratégie.

Pour commencer

Vous devez d'abord configurer votre projet, utiliser l'AAPC pour construire des objets commerciaux et IronPDF pour créer des PDF afin de commencer à utiliser l'AAPC et IronPDF dans un projet C#. Voici un mode d'emploi détaillé pour y parvenir.

Qu'est-ce qu'IronPDF ?

Les programmes C# peuvent utiliserla bibliothèque IronPDF pour la génération de PDF pour produire, lire et modifier des documents PDF. Les développeurs peuvent rapidement créer des PDF de haute qualité, prêts à être imprimés, à partir de contenus HTML, CSS et JavaScript à l'aide de cette application. Parmi les fonctionnalités essentielles, citons la possibilité de créer des en-têtes et des pieds de page, de diviser et de fusionner des PDF, de filigraner des documents et de convertir des fichiers HTML en PDF. IronPDF est utile pour une variété d'applications car il prend en charge à la fois le Framework .NET et .NET Core.

Les PDF sont faciles à utiliser par les développeurs dans leurs applications car ils disposent d'une documentation complète et sont faciles à intégrer. IronPDF gère aisément les mises en page et les formatages complexes, en veillant à ce que les PDF produits reflètent fidèlement le texte HTML d'origine.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 6

Caractéristiques d'IronPDF

**Génération de PDF à partir de HTML

Convertissez HTML, CSS et JavaScript en PDF. Le logiciel prend en charge les normes web modernes telles que les requêtes média et la conception réactive, ce qui le rend pratique pour utiliser HTML et CSS afin de décorer dynamiquement les documents PDF, les factures et les rapports.

**Édition PDF

Il est possible d'ajouter du texte, des images et d'autres éléments à des PDF déjà existants. Extraction de texte et d'images à partir de fichiers PDF. Fusionner plusieurs PDF en un seul fichier. Diviser des fichiers PDF en plusieurs documents distincts. Ajouter des en-têtes, des pieds de page, des annotations et des filigranes.

Conversion PDF

Convertissez au format PDF des fichiers Word, Excel, des images et d'autres types de fichiers. Convertir un PDF en image(PNG, JPEG, etc.).

Performance et fiabilité

Dans les contextes industriels, les performances élevées et la fiabilité sont des attributs souhaitables de la conception. Traite avec succès des ensembles de documents volumineux.

Installer IronPDF

Installez le paquetage IronPDF pour obtenir les outils dont vous avez besoin pour travailler avec des PDF dans des projets .NET.

Install-Package IronPDF

Initialiser l'AAPC .NET et générer un PDF avec IronPDF for .NET

Utilisez l'objet de gestion Personne que nous avons créé précédemment et initialisez le Framework .NET de l'AAPC dans votre fichier Program.cs. Ensuite, utilisez IronPDF pour créer un PDF.

using Csla;
using IronPdf;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Text;
namespace CslaIronPdfDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Setup dependency injection
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            var applicationContext = provider.GetRequiredService<ApplicationContext>();
            var db = provider.GetRequiredService<IDataPortal<Person>>();
            // Create a new person
            var newPerson = db.Create();
            // Display the new person
            Console.WriteLine($"New Person: {newPerson.Name}");
            // Fetch an existing person
            var existingPerson = db.Fetch(1);
            // Display the fetched person
            Console.WriteLine($"Fetched Person: {existingPerson.Name}");
            // Generate PDF
            var htmlContent = new StringBuilder();
            htmlContent.Append("<h1>Person Details</h1>");
            htmlContent.Append($"<p><strong>New Person:</strong> {newPerson.Name}</p>");
            htmlContent.Append($"<p><strong>Fetched Person:</strong> {existingPerson.Name}</p>");
            // Create PDF
            var Renderer = new HtmlToPdf();
            var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
            // Save PDF
            var outputPath = "PersonDetails.pdf";
            pdfDocument.SaveAs(outputPath);
            Console.WriteLine($"PDF generated and saved to {outputPath}");
        }
    }
}
using Csla;
using IronPdf;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Text;
namespace CslaIronPdfDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // Setup dependency injection
            var services = new ServiceCollection();
            services.AddCsla();
            var provider = services.BuildServiceProvider();
            var applicationContext = provider.GetRequiredService<ApplicationContext>();
            var db = provider.GetRequiredService<IDataPortal<Person>>();
            // Create a new person
            var newPerson = db.Create();
            // Display the new person
            Console.WriteLine($"New Person: {newPerson.Name}");
            // Fetch an existing person
            var existingPerson = db.Fetch(1);
            // Display the fetched person
            Console.WriteLine($"Fetched Person: {existingPerson.Name}");
            // Generate PDF
            var htmlContent = new StringBuilder();
            htmlContent.Append("<h1>Person Details</h1>");
            htmlContent.Append($"<p><strong>New Person:</strong> {newPerson.Name}</p>");
            htmlContent.Append($"<p><strong>Fetched Person:</strong> {existingPerson.Name}</p>");
            // Create PDF
            var Renderer = new HtmlToPdf();
            var pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent.ToString());
            // Save PDF
            var outputPath = "PersonDetails.pdf";
            pdfDocument.SaveAs(outputPath);
            Console.WriteLine($"PDF generated and saved to {outputPath}");
        }
    }
}
Imports Csla
Imports IronPdf
Imports Microsoft.Extensions.DependencyInjection
Imports System
Imports System.Text
Namespace CslaIronPdfDemo
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Setup dependency injection
			Dim services = New ServiceCollection()
			services.AddCsla()
			Dim provider = services.BuildServiceProvider()
			Dim applicationContext = provider.GetRequiredService(Of ApplicationContext)()
			Dim db = provider.GetRequiredService(Of IDataPortal(Of Person))()
			' Create a new person
			Dim newPerson = db.Create()
			' Display the new person
			Console.WriteLine($"New Person: {newPerson.Name}")
			' Fetch an existing person
			Dim existingPerson = db.Fetch(1)
			' Display the fetched person
			Console.WriteLine($"Fetched Person: {existingPerson.Name}")
			' Generate PDF
			Dim htmlContent = New StringBuilder()
			htmlContent.Append("<h1>Person Details</h1>")
			htmlContent.Append($"<p><strong>New Person:</strong> {newPerson.Name}</p>")
			htmlContent.Append($"<p><strong>Fetched Person:</strong> {existingPerson.Name}</p>")
			' Create PDF
			Dim Renderer = New HtmlToPdf()
			Dim pdfDocument = Renderer.RenderHtmlAsPdf(htmlContent.ToString())
			' Save PDF
			Dim outputPath = "PersonDetails.pdf"
			pdfDocument.SaveAs(outputPath)
			Console.WriteLine($"PDF generated and saved to {outputPath}")
		End Sub
	End Class
End Namespace
VB   C#

L'exemple proposé montre comment créer, valider et générer des PDF à partir d'objets commerciaux à l'aide d'une application console .NET 6 qui associe CSLA.NET à IronPDF. L'installation des paquets IronPDF et CSLA.NET requis à l'aide de NuGet est la première étape de la mise en place du projet. Le BusinessBase de l'AAPC est utilisé pour décrire l'emplacement principal de votre objet de gestion, la personne.

Il encapsule des caractéristiques telles que le nom et l'identifiant et inclut des règles de gestion pour valider ces propriétés. La mise en œuvre des méthodes d'usine et des méthodes d'accès aux données se charge de la génération des objets et de la récupération des données. L'injection de dépendance est utilisée pour initialiser le contexte d'application de l'AAPC dans le fichier Program.cs. Le code montre ensuite comment utiliser les fonctions DataPortal de l'AAPC pour créer un nouvel objet Personne et récupérer un objet existant.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 7

Enfin, grâce à la fonctionnalité HtmlToPdf d'IronPDF, les informations HTML comprenant les coordonnées de la personne sont créées et transformées en un fichierPDF pour la conversion de HTML en PDF, démontrant une méthode utile pour créer des rapports d'entreprise au format PDF. Cet exemple montre comment la génération de documents dans une application .NET peut être intégrée de manière transparente à la gestion des données et à la logique d'entreprise.

AAPC .NET (Comment ça marche pour les développeurs) : Figure 8

Conclusion

En résumé, l'intégration d'IronPDF et de CSLA .NET dans une application C# montre à quel point ils fonctionnent bien ensemble pour gérer la logique commerciale et produire des documents de qualité. L'AAPC .NET offre un cadre solide pour la gestion de l'accès aux données, l'établissement et l'application de règles commerciales et la garantie de la cohérence des objets commerciaux. Ce cadre améliore la maintenabilité du code et rationalise la logique commerciale complexe.

En outre, IronPDF offre une interface conviviale pour la création et la modification de documents PDF, ce qui permet de créer des rapports complets avec mise en forme directement à partir des données de l'application. La combinaison de ces technologies permet aux développeurs de créer des applications d'entreprise complexes qui produisent des documents de haute qualité tout en respectant les exigences de l'entreprise, en optimisant les flux de travail et en augmentant les niveaux de productivité.

Votre ensemble d'outils pour le développement .NET est complété parIronPDF et les options de licence d'Iron Softwarequi combinent les systèmes et la suite extrêmement polyvalents d'Iron Software avec son support de base pour offrir plus d'applications et de fonctionnalités en ligne, ainsi qu'un développement plus efficace, pour un prix de départ de $749.

Les développeurs peuvent plus facilement décider quel modèle est la meilleure pratique si les choix de licence sont spécifiques au projet et faciles à comprendre. Grâce à ces avantages, les développeurs peuvent désormais traiter toute une série de problèmes de manière simple, efficace et parfaitement connectée.

< PRÉCÉDENT
Topshelf C# (Comment ça marche pour les développeurs)
SUIVANT >
Refit C# (Comment ça marche pour les développeurs)