{"id":1169,"date":"2025-08-25T20:18:09","date_gmt":"2025-08-25T20:18:09","guid":{"rendered":"https:\/\/oussamasaidi.com\/?p=1169"},"modified":"2025-12-22T10:13:44","modified_gmt":"2025-12-22T10:13:44","slug":"gpt-5-pour-developpeurs-microsoft-guide-complet","status":"publish","type":"post","link":"https:\/\/oussamasaidi.com\/en\/gpt-5-pour-developpeurs-microsoft-guide-complet\/","title":{"rendered":"GPT-5 for Microsoft Developers: Complete Guide (.NET 9, Azure AI Foundry, Copilot &amp; RAG)"},"content":{"rendered":"<p>GPT-5 is now available to developers via Azure AI Foundry (formerly Azure OpenAI). You can use it from .NET 9 with <code>Azure.AI.OpenAI<\/code> or via the Microsoft.Extensions.AI abstraction. Key scenarios include agents\/tooling (tool calling), structured outputs, RAG with Azure AI Search, VS Code\/GitHub Copilot integration, and enterprise controls (Content Safety, EU data). Direct access to the <code>gpt-5<\/code> model requires registration; <code>gpt-5-mini<\/code>, <code>gpt-5-nano<\/code>, and <code>gpt-5-chat<\/code> are more widely available. Check regional availability and pricing before deployment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">In This Article<\/h2>\n\n\n<ul><li><a class=\"aioseo-toc-item\" href=\"#pourquoi-gpt-5-change-la-donne-cote-microsoft\">1) Why GPT-5 Changes the Game for Microsoft<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-2-disponibilite-variantes-et-regions\">2) GPT-5 Availability, Variants &amp; Regions<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-3-ou-se-branche-gpt-5-dans-lecosysteme-microsoft\">3) Where GPT-5 Fits Into the Microsoft Ecosystem<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-4-choisir-sa-voie-dintegration-net\">4) GPT-5 Choosing Your Integration Path (.NET)<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-a-sdk-azure-direct-azure-ai-openai\">A. SDK Azure direct (Azure.AI.OpenAI)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-b-abstraction-microsoft-extensions-ai\">B. Abstraction Microsoft.Extensions.AI<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-5-demarrer-en-net-9-chat-streaming-c\">5) Getting Started in .NET 9: Chat + Streaming (C#)<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-exemple-minimal-streaming\">Prerequisites<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-minimal-example-streaming-32\">GPT-5 Minimal Example (Streaming)<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-6-tool-calling-structured-outputs-c\">6) GPT-5 Tool Calling &amp; Structured Outputs (C#)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-7-rag-avec-azure-ai-search-c\">7) GPT-5 RAG with Azure AI Search (C#)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-8-securite-gouvernance-conformite\">8) GPT-5 Security, Governance &amp; Compliance<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-9-couts-performance-mise-a-lechelle\">9) Costs, Performance &amp; Scaling GPT-5<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-10-bonnes-pratiques-anti-patterns\">10) Best Practices &amp; Anti-Patterns<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-11-faq-rapide\">11) Quick FAQ<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-12-ressources-officielles-utiles\">12) T-5 Resources (Official &amp; Useful)<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-derniers-articles\">Last articles<\/a><\/li><\/ul>\n\n\n<h2 class=\"wp-block-heading\" id=\"pourquoi-gpt-5-change-la-donne-cote-microsoft\">1) Why GPT-5 Changes the Game for Microsoft<\/h2>\n\n\n\n<p>Microsoft announced the general availability of GPT-5 in Azure AI Foundry: better reasoning capacity, deeper tooling\/agents, and integration into developer workflows (VS Code, GitHub Copilot). <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-2-disponibilite-variantes-et-regions\">2) GPT-5 Availability, Variants &amp; Regions<\/h2>\n\n\n\n<p>The GPT-5 series includes: <code>gpt-5<\/code> (full reasoning), <code>gpt-5-mini<\/code>, <code>gpt-5-nano<\/code> (very low latency), and <code>gpt-5-chat<\/code>. Access: registration is required for <code>gpt-5<\/code>; not required for <code>gpt-5-mini\/nano\/chat<\/code>. Regions (as of August 12, 2025): East US 2 and Sweden Central for the GPT-5 series (Data Zones and Global Standard depending on model). For EU data residency, target Sweden Central (EU Data Zone).<br><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/concepts\/models\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Learn<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note (France):<\/strong> As of August 25, 2025, GPT-5 is not yet exposed in France Central; use Sweden Central to remain within the EU zone. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/concepts\/models\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Learn<\/a><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-3-ou-se-branche-gpt-5-dans-lecosysteme-microsoft\">3) Where GPT-5 Fits Into the Microsoft Ecosystem<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Azure AI Foundry:<\/strong> Portal, API, and model router to orchestrate GPT-5 alongside other models. <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure<\/a><\/li>\n\n\n\n<li><strong>VS Code &amp; GitHub Copilot:<\/strong> Progressive deployment of GPT-5 to improve generation\/refactoring and agent tasks. <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure<\/a><\/li>\n\n\n\n<li><strong>Azure AI Search (formerly Cognitive Search):<\/strong> Vector\/hybrid RAG engine + OpenAI\/Foundry integration. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/search-faq-frequently-asked-questions?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-4-choisir-sa-voie-dintegration-net\">4) GPT-5 Choosing Your Integration Path (.NET)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-a-sdk-azure-direct-azure-ai-openai\">A. SDK Azure direct (<code>Azure.AI.OpenAI<\/code>)<\/h3>\n\n\n\n<p>Baseline Azure-oriented approach \u2014 ideal if you\u2019re leveraging Foundry, deployments, Entra ID (keyless), the Responses API, and \u201cOn your data\u201d extensions. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/chatgpt-quickstart\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Learn<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-b-abstraction-microsoft-extensions-ai\">B. Abstraction <strong>Microsoft.Extensions.AI<\/strong><\/h3>\n\n\n\n<p>Unified interface (<code>IChatClient<\/code>, middlewares, DI) to plug Azure OpenAI, OpenAI, Inference\/GitHub models, or even Ollama with almost identical code. <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/ai\/microsoft-extensions-ai?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Recommendation:<\/strong> For long-term .NET 9 products, combine Extensions.AI (portability, middlewares) + Azure.AI.OpenAI (Foundry features and Azure security). <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/ai\/microsoft-extensions-ai?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-5-demarrer-en-net-9-chat-streaming-c\">5) Getting Started in .NET 9: Chat + Streaming (C#)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-exemple-minimal-streaming\">Prerequisites<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure AI Foundry (OpenAI) resource in Sweden Central (EU)<\/li>\n\n\n\n<li>Deployment of a <code>gpt-5-chat<\/code> or <code>gpt-5-mini<\/code> model<\/li>\n\n\n\n<li>Microsoft Entra ID authentication (recommended), otherwise API key<\/li>\n\n\n\n<li>Packages: <code>Azure.AI.OpenAI<\/code>, <code>Azure.Identity<\/code> <a href=\"https:\/\/oussamasaidi.com\/en\/gpt-5-pour-developpeurs-microsoft-guide-complet\/?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">oussamasaidi.com<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-minimal-example-streaming-32\">GPT-5 Minimal Example (Streaming)<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ .NET 9 \/ C# 13\n\/\/ dotnet add package Azure.AI.OpenAI\n\/\/ dotnet add package Azure.Identity\n\nusing System.ClientModel; \/\/ si n\u00e9cessaire selon version SDK\nusing Azure;\nusing Azure.AI.OpenAI;\nusing Azure.Identity;\n\nvar endpoint = new Uri(Environment.GetEnvironmentVariable(\"AZURE_OPENAI_ENDPOINT\")!);\n\/\/ Nom du d\u00e9ploiement cr\u00e9\u00e9 dans Foundry (ex: \"gpt5chat-eu\")\nvar deployment = Environment.GetEnvironmentVariable(\"AZURE_OPENAI_DEPLOYMENT_NAME\")!;\n\nvar client = new AzureOpenAIClient(endpoint, new DefaultAzureCredential());\n\n\/\/ Requ\u00eate \"chat completions\" avec streaming\nvar options = new ChatCompletionsOptions\n{\n    DeploymentName = deployment,\n    Temperature = 0.2f,  \/\/ d\u00e9terministe en prod\n    MaxOutputTokenCount = 800\n};\noptions.Messages.Add(new ChatRequestSystemMessage(\n    \"Tu es un assistant C# concis. R\u00e9ponds en fran\u00e7ais.\"));\noptions.Messages.Add(new ChatRequestUserMessage(\n    \"Explique la diff\u00e9rence entre Task et ValueTask en .NET.\"));\n\nawait foreach (var update in client.GetChatCompletionsStreamingAsync(options))\n{\n    if (update.ContentUpdate != null)\n    {\n        Console.Write(update.ContentUpdate);\n    }\n}\nConsole.WriteLine();\n<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Streaming improves perceived latency on the UI and works natively with the Azure SDK. Entra ID authentication (keyless) avoids managing secrets in the app. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/chatgpt-quickstart\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Learn<\/a><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-6-tool-calling-structured-outputs-c\">6) GPT-5 Tool Calling &amp; Structured Outputs (C#)<\/h2>\n\n\n\n<p>Structured outputs require a JSON Schema that the model must adhere to \u2014 ideal for extracting entities, driving functions, or composing robust workflows. Combine them with tool calling for reliable tool-enabled calls (weather, SQL, payment, etc.). <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/how-to\/structured-outputs?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Exemple: extraire un \"Contact\" typ\u00e9 + d\u00e9cider d'appeler un outil \"send_email\"\nusing Azure.AI.OpenAI;\nusing System.Text.Json.Nodes;\n\n\/\/ 1) D\u00e9finir le schema de sortie\nvar contactSchema = new\n{\n    type = \"object\",\n    properties = new {\n        name = new { type = \"string\" },\n        email = new { type = \"string\", format = \"email\" },\n        subject = new { type = \"string\" }\n    },\n    required = new[] { \"name\", \"email\", \"subject\" },\n    additionalProperties = false\n};\n\n\/\/ 2) Pr\u00e9parer la requ\u00eate avec structured outputs + tool\nvar opts = new ChatCompletionsOptions { DeploymentName = deployment };\nopts.Messages.Add(new ChatRequestSystemMessage(\"Tu extrais un contact et proposes l'envoi d'un email.\"));\nopts.Messages.Add(new ChatRequestUserMessage(\n    \"Peux-tu \u00e9crire \u00e0 Oussama Saidi (oussama.saidisbz@gmail.com) au sujet de la facture 2025 ?\"));\n\nopts.ResponseFormat = ChatResponseFormat.CreateJsonSchemaFormat(\n    jsonSchemaFormatName: \"contact_schema\",\n    jsonSchema: BinaryData.FromObjectAsJson(contactSchema),\n    jsonSchemaIsStrict: true\n);\n\n\/\/ D\u00e9clarer un outil en free-form (selon SDK) ou via Tools collection\nopts.Tools.Add(ChatCompletionsFunctionToolDefinition.CreateFunctionTool(\n    functionName: \"send_email\",\n    functionDescription: \"Envoie un email via le syst\u00e8me interne\",\n    parameters: BinaryData.FromString(\"\"\"{\"type\":\"object\",\"properties\":{\"to\":{\"type\":\"string\"},\"subject\":{\"type\":\"string\"},\"body\":{\"type\":\"string\"}},\"required\":[\"to\",\"subject\",\"body\"]}\"\"\")\n));\n\nvar result = await client.GetChatCompletionsAsync(opts);\nvar choice = result.Value.Choices[0];\n\n\/\/ 3) Lire la sortie structur\u00e9e et (si pr\u00e9sent) les appels d'outil\nvar json = choice.Message?.Content[0].Text; \/\/ JSON strict conforme au sch\u00e9ma\nConsole.WriteLine(json);\n\nforeach (var toolCall in choice.Message?.ToolCalls ?? [])\n{\n    if (toolCall.FunctionName == \"send_email\")\n    {\n        \/\/ Appeler votre back-end d'envoi et renvoyer le r\u00e9sultat \u00e0 GPT si n\u00e9cessaire\n    }\n}\n<\/pre>\n\n\n\n<p><strong>Key takeaway:<\/strong> Prefer structured outputs over \u201cJSON mode\u201d (stricter) and use tool calling for auditable\/traced actions. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-foundry\/openai\/how-to\/structured-outputs?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-7-rag-avec-azure-ai-search-c\">7) GPT-5 RAG with Azure AI Search (C#)<\/h2>\n\n\n\n\n\n<p>Azure AI Search (the new name for Azure Cognitive Search) offers vector indexes, hybrid search, semantic ranker, and official RAG tutorials \u2014 perfect to ground GPT-5 on your private data. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/search-faq-frequently-asked-questions?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ RAG minimaliste: 1) r\u00e9cup\u00e9rer des passages, 2) les injecter au prompt\n\/\/ dotnet add package Azure.Search.Documents\nusing Azure.Search.Documents;\nusing Azure.Search.Documents.Models;\nusing Azure.AI.OpenAI;\n\nvar search = new SearchClient(\n    new Uri(Environment.GetEnvironmentVariable(\"AZURE_SEARCH_ENDPOINT\")!),\n    indexName: \"docs-index\",\n    new Azure.AzureKeyCredential(Environment.GetEnvironmentVariable(\"AZURE_SEARCH_KEY\")!)\n);\n\n\/\/ 1) Recherche hybride (mot-cl\u00e9 + vectorielle si configur\u00e9e)\nvar queryText = \"Politique de remboursement 2025\";\nvar results = await search.SearchAsync&lt;SearchDocument>(queryText,\n    new SearchOptions { Size = 5, QueryType = SearchQueryType.Semantic });\n\nvar passages = new List&lt;string>();\nawait foreach (var r in results)\n{\n    passages.Add(r.Document.TryGetValue(\"content\", out var c) ? c?.ToString() ?? \"\" : \"\");\n}\n\n\/\/ 2) Composer le message syst\u00e8me avec contextes \u00ab cit\u00e9s \u00bb\nvar sys = \"Tu r\u00e9ponds depuis les extraits fournis, cite les sources si possible.\";\nvar ctx = string.Join(\"\\n---\\n\", passages.Select((p,i)=> $\"[Doc {i+1}]\\n{p}\"));\n\nvar rag = new ChatCompletionsOptions { DeploymentName = deployment, Temperature = 0 };\nrag.Messages.Add(new ChatRequestSystemMessage(sys + \"\\n\\nContexte:\\n\" + ctx));\nrag.Messages.Add(new ChatRequestUserMessage(\"Quelle est la dur\u00e9e de r\u00e9tractation ?\"));\n\nvar ragResp = await client.GetChatCompletionsAsync(rag);\nConsole.WriteLine(ragResp.Value.Choices[0].Message.Content[0].Text);\n<\/pre>\n\n\n\n<p>For advanced RAG pipelines: agentic retrieval, vector stores, native indexers, and Foundry\/Prompt Flow integrations. <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-8-securite-gouvernance-conformite\">8) GPT-5 Security, Governance &amp; Compliance<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Content Safety:<\/strong> Built-in protections (e.g., prompt shields) on prompts\/responses.<\/li>\n\n\n\n<li><strong>Evaluation &amp; Telemetry:<\/strong> Real-time quality\/security metrics to Azure Monitor\/App Insights; Purview\/Defender integrations.<\/li>\n\n\n\n<li><strong>Data Zones:<\/strong> Choose EU Data Zone (Sweden Central) for data residency.<br>These are highlighted for GPT-5 in Foundry and complemented by your internal policies. <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-9-couts-performance-mise-a-lechelle\">9) Costs, Performance &amp; Scaling GPT-5<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Azure OpenAI Pricing:<\/strong> Check the official page (GPT-5 SKUs may appear later after GA announcement). Avoid hardcoding prices.<\/li>\n\n\n\n<li><strong>OpenAI Pricing (Direct):<\/strong> If using OpenAI outside Azure, refer to the pricing page for GPT-5\/mini\/nano.<\/li>\n\n\n\n<li><strong>Optimization:<\/strong> Batching, input caching, low <code>temperature<\/code> in production, model router in Foundry to balance cost\/performance per task.. <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/gpt-5-in-azure-ai-foundry-the-future-of-ai-apps-and-agents-starts-here\/\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-10-bonnes-pratiques-anti-patterns\">10) Best Practices &amp; Anti-Patterns<\/h2>\n\n\n\n\n\n<p><strong>To do:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer Entra ID (keyless) + Managed Identity in production<\/li>\n\n\n\n<li>Limit context (chunking + citations); check max tokens per model<\/li>\n\n\n\n<li>Use structured outputs for critical integrations<\/li>\n\n\n\n<li>Add guardrails: Content Safety, filters, automated tests<\/li>\n\n\n\n<li>Evaluate prompts with Microsoft.Extensions.AI.Evaluation in CI\/CD<\/li>\n<\/ul>\n\n\n\n<p><strong>To avoid:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>High <code>temperature<\/code> in production<\/li>\n\n\n\n<li>Injecting secrets in clear text<\/li>\n\n\n\n<li>Mixing regions\/resources without residency constraints<\/li>\n\n\n\n<li>Relying only on \u201cJSON mode\u201d instead of structured outputs<\/li>\n\n\n\n<li><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-11-faq-rapide\">11) Quick FAQ<\/h2>\n\n\n\n<p><strong>Is GPT-5 available in France Central?<\/strong><br>Not as of August 25, 2025. Use Sweden Central (EU Data Zone) to stay within the EU.<\/p>\n\n\n\n<p><strong>Do I need to register?<\/strong><br>Yes, for <code>gpt-5<\/code> (full reasoning). Variants <code>gpt-5-mini\/nano\/chat<\/code> are more widely accessible. <\/p>\n\n\n\n<p><strong>Do Copilot\/VS Code benefit from GPT-5?<\/strong><br>Yes, Microsoft has communicated deployment in GitHub Copilot\/VS Code to improve reasoning and refactoring. <a href=\"https:\/\/news.microsoft.com\/source\/emea\/2025\/08\/microsoft-integre-gpt-5-dopenai-dans-ses-solutions-destinees-au-grand-public-aux-developpeurs-et-aux-entreprises\/?lang=fr&amp;utm_source=chatgpt.com\" target=\"_blank\" rel=\"noreferrer noopener\">Source<\/a><\/p>\n\n\n\n<p><strong>Which should I start with: Direct SDK or Microsoft.Extensions.AI?<\/strong><br>Start with Extensions.AI for portability\/middlewares while retaining <code>Azure.AI.OpenAI<\/code> for Foundry-specific features.<br><a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/ai\/semantic-kernel-dotnet-overview?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a> <a href=\"https:\/\/github.com\/microsoft\/semantic-kernel?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-rounded\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-1024x683.png\" alt=\"GPT-5 for Microsoft Developers Complete Guide\" class=\"wp-image-1770\" srcset=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-1024x683.png 1024w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-300x200.png 300w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-768x512.png 768w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-18x12.png 18w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-256x171.png 256w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-950x633.png 950w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide-1320x880.png 1320w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-12-ressources-officielles-utiles\">12) T-5 Resources (Official &amp; Useful)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure AI Foundry GPT-5 GA announcement \u2014 overview, security, model router.<\/li>\n\n\n\n<li>Model &amp; regions table (MS Learn) \u2014 GPT-5 series, Data Zones, capabilities.<\/li>\n\n\n\n<li>Quickstart Chat &amp; Entra ID auth (.NET) \u2014 code, streaming, best practices.<\/li>\n\n\n\n<li>Structured Outputs &amp; Function Calling \u2014 designing schemas\/tools.<\/li>\n\n\n\n<li>Microsoft.Extensions.AI docs \u2014 <code>IChatClient<\/code>, middlewares, DI.<\/li>\n\n\n\n<li>Azure AI Search (RAG) \u2014 rename, concepts, quickstarts.<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/search-faq-frequently-asked-questions?utm_source=oussamasaidi.com\" target=\"_blank\" rel=\"noopener\" title=\"\">Microsoft Learn<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"buy-coffee-container\">\n<p style=\"text-align:center; color:#555; font-size:14px;\">\n  If this article helped you, consider supporting my work.\n<\/p>\n  <a\n    href=\"https:\/\/buymeacoffee.com\/oussamasaii\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\"\n    class=\"buy-coffee-button\"\n  >\n    &#x2615; Buy me a coffee\n  <\/a>\n<\/div>\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-derniers-articles\">Last articles<\/h2>\n\n\n<ul class=\"wp-block-latest-posts__list is-grid columns-3 has-author wp-block-latest-posts\"><li><div class=\"wp-block-latest-posts__featured-image alignleft\"><a href=\"https:\/\/oussamasaidi.com\/en\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends\/\" aria-label=\"React 19 &amp; Vite: Build Fast Frontends for .NET Developers\"><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-150x150.png\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends\" style=\"\" srcset=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-150x150.png 150w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-140x140.png 140w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/oussamasaidi.com\/en\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends\/\">React 19 &amp; Vite: Build Fast Frontends for .NET Developers<\/a><div class=\"wp-block-latest-posts__post-author\">by Saidi Oussama<\/div><div class=\"wp-block-latest-posts__post-excerpt\">Introduction: Why .NET Developers Need Modern Frontend Tools For many years, ASP.NET developers have focused mainly on server-side rendering using technologies like ASP.NET MVC, Razor Pages, and Blazor. While these frameworks remain powerful, the modern web has evolved rapidly. Today, users expect instant load times, smooth UI&#8230; <div class=\"art-el-more\"><a href=\"https:\/\/oussamasaidi.com\/en\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div><\/div><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><a href=\"https:\/\/oussamasaidi.com\/en\/https-oussamasaidi-com-restful-api-mastery-best-practices-with-asp-net-core-part-2\/\" aria-label=\"RESTful API best practices\u00a0with ASP.NET Core Part 2\"><img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r-150x150.png\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"RESTful API Mastery\" style=\"\" srcset=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r-150x150.png 150w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r-140x140.png 140w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/oussamasaidi.com\/en\/https-oussamasaidi-com-restful-api-mastery-best-practices-with-asp-net-core-part-2\/\">RESTful API best practices\u00a0with ASP.NET Core Part 2<\/a><div class=\"wp-block-latest-posts__post-author\">by Saidi Oussama<\/div><div class=\"wp-block-latest-posts__post-excerpt\">Testing, Performance, Security, Microservices &amp; Deployment Introduction: From Solid Foundations to Production Excellence In Part 1 of RESTful API Mastery, we established the architectural and technical foundations required to build reliable, evolvable RESTful APIs with ASP.NET Core. However, a well-designed API only becomes truly valuable when it&#8230; <div class=\"art-el-more\"><a href=\"https:\/\/oussamasaidi.com\/en\/https-oussamasaidi-com-restful-api-mastery-best-practices-with-asp-net-core-part-2\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div><\/div><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image alignleft\"><a href=\"https:\/\/oussamasaidi.com\/en\/restful-api-mastery-best-practices-with-asp-net-core\/\" aria-label=\"RESTful API Best Practices with ASP.NET Core\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-cover-150x150.png\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"RESTful API Mastery\" style=\"\" srcset=\"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-cover-150x150.png 150w, https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-cover-140x140.png 140w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/oussamasaidi.com\/en\/restful-api-mastery-best-practices-with-asp-net-core\/\">RESTful API Best Practices with ASP.NET Core<\/a><div class=\"wp-block-latest-posts__post-author\">by Saidi Oussama<\/div><div class=\"wp-block-latest-posts__post-excerpt\">Professional Best Practices, Versioning Strategies &amp; Advanced Serialization (Part 1) In this blog Introduction: Building Enterprise-Grade RESTful APIs with ASP.NET Core RESTful API Mastery with ASP.NET Core is a strategic engineering task, not a mechanical implementation detail. In modern .NET platforms, APIs must be predictable, evolvable, secure,&#8230; <div class=\"art-el-more\"><a href=\"https:\/\/oussamasaidi.com\/en\/restful-api-mastery-best-practices-with-asp-net-core\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div><\/div><\/li>\n<\/ul>\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>GPT-5 is now available to developers via Azure AI Foundry (formerly Azure OpenAI). You can use it from .NET 9&#8230; <\/p>\n<div class=\"art-el-more\"><a href=\"https:\/\/oussamasaidi.com\/en\/gpt-5-pour-developpeurs-microsoft-guide-complet\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div>","protected":false},"author":1,"featured_media":1770,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[40,250,41,56,17,90],"tags":[47,271,276,277,49,54,53,270,268],"ppma_author":[286],"class_list":["post-1169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-netcore","category-ai","category-c","category-c-2","category-design","category-devops","tag-net-core","tag-ai","tag-azure","tag-azureai","tag-c-sharp","tag-c","tag-dot-net-core","tag-gpt-5","tag-openai"],"acf":[],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2025\/08\/GPT-5-for-Microsoft-Developers-Complete-Guide.png","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1565,"url":"https:\/\/oussamasaidi.com\/en\/securing-sensitive-information-in-net-core\/","url_meta":{"origin":1169,"position":0},"title":"Securing Sensitive Information in .NET Core: A Complete Guide for Developers","author":"Saidi Oussama","date":"December 8, 2025","format":false,"excerpt":"Protecting user data is one of the most critical responsibilities of any software developer. In today\u2019s connected world, even a small leakage of sensitive information \u2014 API keys, passwords, or tokens \u2014 can have devastating consequences. Fortunately, .NET Core (or .NET 9 and later) offers several mechanisms to help you\u2026","rel":"","context":"In &quot;.Net Core&quot;","block_context":{"text":".Net Core","link":"https:\/\/oussamasaidi.com\/en\/category\/netcore\/"},"img":{"alt_text":"Securing sensitive Information in .NET Core","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/securing-sensitive-information-in-net-core.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/securing-sensitive-information-in-net-core.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/securing-sensitive-information-in-net-core.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/securing-sensitive-information-in-net-core.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/securing-sensitive-information-in-net-core.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":931,"url":"https:\/\/oussamasaidi.com\/en\/net-9-entity-framework-core-what-is-new\/","url_meta":{"origin":1169,"position":1},"title":"Les Nouveaut\u00e9s d&rsquo;Entity Framework Core avec .NET 9 : Ce Qu&rsquo;il Faut Savoir","author":"Saidi Oussama","date":"January 6, 2025","format":false,"excerpt":"La sortie de .NET 9 s\u2019accompagne de mises \u00e0 jour significatives dans Entity Framework Core (EF Core), le c\u00e9l\u00e8bre ORM de Microsoft. Ces nouveaut\u00e9s visent \u00e0 simplifier les sc\u00e9narios complexes et \u00e0 am\u00e9liorer les performances, la compatibilit\u00e9 cloud et l\u2019int\u00e9gration IA. Voici les cinq principales nouveaut\u00e9s qui transformeront vos projets.\u2026","rel":"","context":"In &quot;.Net Core&quot;","block_context":{"text":".Net Core","link":"https:\/\/oussamasaidi.com\/en\/category\/netcore\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-06-15.03.46-A-professional-and-modern-banner-image-for-a-WordPress-blog-article-about-the-new-features-of-Entity-Framework-Core-with-.NET-9.-The-design-should-inc.webp?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-06-15.03.46-A-professional-and-modern-banner-image-for-a-WordPress-blog-article-about-the-new-features-of-Entity-Framework-Core-with-.NET-9.-The-design-should-inc.webp?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-06-15.03.46-A-professional-and-modern-banner-image-for-a-WordPress-blog-article-about-the-new-features-of-Entity-Framework-Core-with-.NET-9.-The-design-should-inc.webp?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/01\/DALL%C2%B7E-2025-01-06-15.03.46-A-professional-and-modern-banner-image-for-a-WordPress-blog-article-about-the-new-features-of-Entity-Framework-Core-with-.NET-9.-The-design-should-inc.webp?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1783,"url":"https:\/\/oussamasaidi.com\/en\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends\/","url_meta":{"origin":1169,"position":2},"title":"React 19 &amp; Vite: Build Fast Frontends for .NET Developers","author":"Saidi Oussama","date":"December 23, 2025","format":false,"excerpt":"Introduction: Why .NET Developers Need Modern Frontend Tools For many years, ASP.NET developers have focused mainly on server-side rendering using technologies like ASP.NET MVC, Razor Pages, and Blazor. While these frameworks remain powerful, the modern web has evolved rapidly. Today, users expect instant load times, smooth UI interactions, and app-like\u2026","rel":"","context":"In &quot;Non class\u00e9&quot;","block_context":{"text":"Non class\u00e9","link":"https:\/\/oussamasaidi.com\/en\/category\/non-classe-fr\/"},"img":{"alt_text":"react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/react-19-and-vite-for-dotnet-developers-build-fast-modern-frontends-scaled.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1325,"url":"https:\/\/oussamasaidi.com\/en\/building-professional-modern-api-documentation-in-net-core-with-scalar\/","url_meta":{"origin":1169,"position":3},"title":"Building Professional, Modern API Documentation in .NET Core with Scalar","author":"Saidi Oussama","date":"November 19, 2025","format":false,"excerpt":"Introduction In today\u2019s software ecosystem, APIs are everywhere. Whether you are building a mobile application, a microservices architecture, or an internal company platform, your API is often the backbone of the system. But even the best API becomes useless if developers cannot understand how to consume it. This is why\u2026","rel":"","context":"In &quot;.Net Core&quot;","block_context":{"text":".Net Core","link":"https:\/\/oussamasaidi.com\/en\/category\/netcore\/"},"img":{"alt_text":"Building Professional, Modern API Documentation in .NET Core with Scalar","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/Building-Professional-Modern-API-Documentation-in-.NET-Core-with-Scalar.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1714,"url":"https:\/\/oussamasaidi.com\/en\/https-oussamasaidi-com-restful-api-mastery-best-practices-with-asp-net-core-part-2\/","url_meta":{"origin":1169,"position":4},"title":"RESTful API best practices\u00a0with ASP.NET Core Part 2","author":"Saidi Oussama","date":"December 20, 2025","format":false,"excerpt":"Testing, Performance, Security, Microservices & Deployment Introduction: From Solid Foundations to Production Excellence In Part 1 of RESTful API Mastery, we established the architectural and technical foundations required to build reliable, evolvable RESTful APIs with ASP.NET Core. However, a well-designed API only becomes truly valuable when it is tested, observable,\u2026","rel":"","context":"In &quot;.Net Core&quot;","block_context":{"text":".Net Core","link":"https:\/\/oussamasaidi.com\/en\/category\/netcore\/"},"img":{"alt_text":"RESTful API Mastery","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/12\/restful-api-mastery-best-practices-with-asp-net-core-2r.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1406,"url":"https:\/\/oussamasaidi.com\/en\/net-8-test-driven-design-architecture-7-proven-patterns-to-build-robust-maintainable-systems\/","url_meta":{"origin":1169,"position":5},"title":"Net 8 Test Driven Design Architecture 7 Proven Patterns to Build Robust, Maintainable Systems","author":"Saidi Oussama","date":"November 25, 2025","format":false,"excerpt":"Introduction to Test Driven Design \u2014 What this guide covers If you want a battle-tested approach to designing systems that are maintainable, testable, and production-ready, .Net 8 Test Driven Design Architecture combines the stability of .NET 8 with Test Driven Design discipline and modern architecture patterns. This guide gives patterns,\u2026","rel":"","context":"In &quot;.Net Core&quot;","block_context":{"text":".Net Core","link":"https:\/\/oussamasaidi.com\/en\/category\/netcore\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/oussamasaidi.com\/wp-content\/uploads\/2025\/11\/dot-net-8-tdd-architecture-article-cover.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"authors":[{"term_id":286,"user_id":1,"is_guest":0,"slug":"oussama_sa","display_name":"Saidi Oussama","avatar_url":{"url":"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2022\/02\/001_001_cv1.jpg","url2x":"https:\/\/oussamasaidi.com\/wp-content\/uploads\/2022\/02\/001_001_cv1.jpg"},"author_category":"1","first_name":"Oussama","last_name":"SAIDI","user_url":"https:\/\/oussamasaidi.com","job_title":"Senior Fullstack .NET Developer","description":"I\u2019m a Senior Fullstack .NET Developer specializing in building scalable, high-performance web applications with .NET, C#, and modern frontend frameworks like React.js. I\u2019m passionate about clean architecture, automated testing, and sharing knowledge through blogs and tutorials."}],"_links":{"self":[{"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/posts\/1169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/comments?post=1169"}],"version-history":[{"count":62,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/posts\/1169\/revisions"}],"predecessor-version":[{"id":1772,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/posts\/1169\/revisions\/1772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/media\/1770"}],"wp:attachment":[{"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/media?parent=1169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/categories?post=1169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/tags?post=1169"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/oussamasaidi.com\/en\/wp-json\/wp\/v2\/ppma_author?post=1169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}