C Sharp
Приклад:
.Where(o => o.CustomerId == customerId) .ToListAsync();
EF Core корисний для:
- CRUD;
- migrations;
- LINQ queries;
- relational databases;
- PostgreSQL;
- SQL Server;
- MySQL;
- SQLite.
Але для складних звітів іноді краще писати SQL або використовувати спеціалізований reporting layer.
Blazor
Практичний висновок
Visual Studio особливо сильна для Windows, enterprise і desktop development. Приклад класу: Unit tests перевіряють маленькі частини логіки. public class Order
.OrderBy(p => p.Name)
C# здатна використовуватися в ERP-екосистемах як мова для: Для enterprise-систем права доступу часто складніші за просту роль “admin/user”. * Blazor — framework для web UI на C#. # Документувати public API. Приклад:
C# і .NET
ASP.NET Core має вбудований DI container. Вона поєднує строгі типи, сучасний синтаксис, сильний tooling, високу продуктивність і зручність для enterprise-розробки.
Приклад:
C# можна використовувати для AI-застосунків. * authentication;
- authorization;
- input validation;
- output encoding;
- SQL injection;
- CSRF;
- XSS;
- secrets;
- logging;
- HTTPS;
- package vulnerabilities;
- dependency updates;
- secure configuration. * Entity Framework Core — ORM для .NET. # Не зберігати secrets у коді. * ERP;
- CRM;
- електронний документообіг;
- фінансові сервіси;
- формування звітів;
- інтеграції;
- API;
- workflow;
- internal tools;
- identity systems;
- reporting;
- background processing. Task SaveAsync();
EF Core дає можливість працювати з базою даних через C#-об’єкти.== Web API ==
- cookies;
- JWT;
- OAuth;
- OpenID Connect;
- Identity;
- policies;
- roles;
- claims. У реальних системах Python здатна тренувати модель, а C# — викликати її через API в production. Приклади:
dotnet build
Джерела
Станом на сучасну лінійку .NET, важливими виступає як:
Варіанти:
- Domain;
- Application;
- Infrastructure;
- Presentation. }
.NET documentation має окремий напрям “Build AI apps in .NET”.[1]
Logging
Потрібно контролювати:
}
DI корисний для: Web API потрібні для: } Сильні сторони:
Головна ідея
- switch expressions;
- type checks;
- nullable logic;
- discriminated-like scenarios;
- обробки різних станів;
- clean domain logic.
public class Repository<T>
Це спрощує роботу з пам’яттю, але не означає, що memory можна ігнорувати. backend-розробки забезпечується через C# застосовують; так само реалізовано Web API, enterprise-систем, desktop-застосунків, cloud-сервісів, мобільних застосунків, ігор, інтеграцій, автоматизації, мікросервісів, роботи з базами даних і бізнес-логіки. * Class — клас, SEO-опис типу об’єкта. * WPF;
- WinForms;
- MAUI;
- Avalonia;
- WinUI. # Стежити за .NET support lifecycle. {| class="wikitable"
public class CalculatorTests
У бізнес-системах класи часто представляють документи, клієнтів, товари, рахунки, сервіси або правила. Код каже: “мені не критично, хто саме це зробить; мені критично, щоб він умів виконати цей контракт”. * ліцензії;
- maintenance;
- security vulnerabilities;
- кількість залежностей;
- сумісність із .NET version;
- репутацію пакета. Інтерфейси корисні для:
C# добре підходить для задач, де важливі:
C# має сильну екосистему тестування. Сценарії:
Приклад xUnit:
- backend-сервісів;
- інтеграцій;
- API gateway;
- звітних сервісів;
- обробки черг;
- імпорту/експорту;
- desktop clients;
- middleware;
- синхронізації даних.
Обмеження:
Практична користь: nullable reference types змушують явно думати, де значення здатна бути відсутнім. Популярні frameworks:
- паролі;
- tokens;
- персональні інформаційні дані без потреби;
- повні request bodies із чутливими даними.== Domain-Driven Design ==
var result = Calculator.Add(2, 3);
.NET має вбудовану logging abstraction. }
Generics використовуються в:
{
- .NET ecosystem;
- ASP.NET Core;
- Visual Studio tooling;
- Windows integration;
- Azure;
- сучасний синтаксис;
- LINQ;
- records;
- async/await. public string Name { get; set; } = "";
- domain logic;
- services;
- validators;
- calculations;
- parsers;
- mapping;
- edge cases. {
Visual Studio Code — легкий редактор із розширеннями для C#. }
Для більшості бізнес-коду Task достатній і зрозуміліший. [Fact]
Cloud development
Exception handling
Для нових проєктів зазвичай варто обирати сучасний .NET, якщо немає спеціальної причини залишатися на .NET Framework. Підходи:
Продуктивність
public async Task<ActionResult<OrderDto>> GetById(int id)
Controllers зручні для складніших API з routing, filters, attributes, validation і versioning. Поняття:
- runtime;
- standard libraries;
- SDK;
- compiler;
- CLI;
- package ecosystem;
- ASP.NET Core;
- Entity Framework Core;
- MAUI;
- Blazor;
- tooling;
- deployment tools. public string? * DDD — Domain-Driven Design. * Pattern matching — зіставлення з шаблонами.
Приклад: Основні поняття:
! * .NET Framework — стара Windows-only платформа.- сильний refactoring;
- code analysis;
- навігацію;
- тестування;
- підтримку Unity;
- кросплатформеність;
- інтеграцію з JetBrains ecosystem. using var stream = File.OpenRead(path);
LINQ — Language Integrated Query. — здатна бути null.
Це одна з найсильніших можливостей C#. Потрібно контролювати:
Security
- ігнорувати nullable warnings;
- блокувати async-код через
.Resultабо.Wait(); - робити великі God classes;
- змішувати бізнес-логіку з controllers;
- не писати тести;
- неправильно використовувати dependency injection;
- логувати секрети;
- не закривати IDisposable resources;
- створювати N+1 queries в EF Core;
- не використовувати cancellation tokens;
- робити надто складну архітектуру для простої задачі;
- не оновлювати NuGet packages;
- не перевіряти supported .NET versions.[2]
Головна ідея C# — дати розробнику безпечну, продуктивну й виразну мову для великих програмних систем. # Перевіряти EF Core queries. Якщо базовий стек K2 ERP побудований на Python, C# варто використовувати там, де він справді дає перевагу. C# застосовується для для desktop-застосунків. LINQ корисний для: Unit tests мають бути швидкими й стабільними. NuGet — package manager для .NET.== Minimal APIs == catch (OrderNotFoundException ex)
C# у бізнесі
Authentication і Authorization
dotnet CLI
Blazor дає можливість писати frontend-компоненти без JavaScript як основної мови.[3]
До .NET входять:
- Blazor Server;
- Blazor WebAssembly;
- Blazor Web App. public class OrdersController : ControllerBase
- C# ASP.NET Core API;
- TypeScript frontend;
- PostgreSQL або SQL Server;
- Redis cache;
- background workers;
- message queue. app.MapGet("/api/health", () => Results.Ok(new { status = "ok" }));
- не найкращий вибір для коротких одноразових scripts;
- AI research ecosystem сильніший у Python;
- потрібне розуміння .NET;
- enterprise-архітектура здатна бути надмірною для малих задач;
- потрібно стежити за версіями .NET і NuGet;
- без tests і architecture C# теж здатна перетворитися на хаос.[4]
- .NET 6;
- .NET 7;
- .NET 8;
- .NET 9;
- .NET 10. }
Пояснення термінів
Приклад: string name = "K2 ERP"; |- | C# || enterprise backend, .NET, типізація, Web API, desktop, cloud, tooling |- | Python || data science, scripting, AI research, automation, ML libraries |}
ASP.NET Core — framework для вебзастосунків і API на .NET. C# використовує garbage collector.Pattern matching корисний для:
- Використовувати сучасний .NET LTS для production. # Мати CI/CD. * Dependency Injection — передача залежностей ззовні.== Dependency Injection ==
- strong typing;
- .NET ecosystem;
- ASP.NET Core;
- LINQ;
- async/await;
- records;
- pattern matching;
- nullable reference types;
- generics;
- tooling;
- NuGet;
- тестування;
- продуктивність;
- cloud readiness;
- enterprise architecture. {
- read/write;
- read-only;
- init-only;
- computed;
- private set;
- required.== NuGet ==
MAUI підходить для мобільних і desktop-застосунків, але вибір MAUI варто робити з урахуванням команди, UX-вимог і підтримки платформ. * CLR — Common Language Runtime, runtime середовище .NET. Це корисно для:
.Select(p => p.Name)
Класи
Records зменшують boilerplate-код і роблять моделі даних компактнішими.== Дивіться так само ==
LINQ
}
{
.NET 10 містить performance improvements у runtime, libraries і workloads. Тут:
ML.NET — machine learning framework для .NET. Різниця:
public void Add(T item)
C# і ERP-системи
Для C# використовують:
* тестування;
* clean architecture;
* заміни реалізацій;
* конфігурації;
* слабкого зв’язування компонентів. * '''Strong typing''' — строга типізація. C# здатна бути невдалим вибором, якщо:
* strong typing;
* стабільна ERP-платформа;
* ASP.NET Core;
* EF Core;
* tooling;
* тестування;
* продуктивність;
* довгострокова технічна підтримка;
* Microsoft ecosystem. * '''Record''' — тип для immutable або value-like даних. Java сильна в:
C# добре підходить для DDD через типам, records, pattern matching, interfaces і tooling. '''Nullable reference types''' допомагають зменшити кількість NullReferenceException. Вибір залежить від команди, інфраструктури й екосистеми.== C# і AI ==
'''Class''' — SEO-опис типу об’єкта. Це трохи дисциплінує, зате користувачі можуть будувати великі системи без хаосу.== Architecture ==
IDisposable важливий для:
* Android;
* iOS;
* macOS;
* Windows. .Where(p => p.Price > 1000)
C# — одна з найсильніших мов для enterprise-розробки, backend, Web API, desktop, cloud і довгострокових бізнес-систем. '''JetBrains Rider''' — популярна кросплатформена IDE для .NET.== ML.NET ==
C# і Java мають схожі enterprise-сфери. '''ValueTask''' здатна бути корисним у performance-sensitive сценаріях, але його не варто використовувати всюди без потреби.== Properties ==
dotnet new webapi
<pre>
public string Name { get; set; } = "";
... [ApiController]
Він застосовується для для:
== Unit tests ==
== Visual Studio ==
'''async/await''' — механізм асинхронного програмування. * '''dotnet CLI''' — командний інтерфейс .NET. * '''Unit test''' — тест маленької частини коду. Blazor корисний для internal tools, dashboards, admin panels і enterprise UI. * '''Generics''' — типізовані шаблони коду. Але вибір C# має бути виправданий архітектурою.<ref>https://learn.microsoft.com/en-us/dotnet/</ref>
{
* Web API;
* enterprise backend;
* ASP.NET Core;
* cloud services;
* desktop apps;
* background workers;
* strongly typed domain logic;
* integrations;
* Microsoft ecosystem;
* Azure;
* internal business systems;
* microservices;
* reporting services;
* тестованої бізнес-логіки.== async/await ==
== Records ==
OrderStatus.New => "Нове замовлення",
== C# і Python ==
* C# Dev Kit;
* C# extension;
* .NET SDK;
* debugger;
* test explorer;
* terminal. Приклад:
C#/.NET застосунки часто мають конфігурацію:
* classification;
* regression;
* recommendation;
* anomaly detection;
* forecasting;
* text classification;
* integration into .NET apps. * DTO;
* API responses;
* commands;
* events;
* value objects;
* immutable structures;
* message contracts. Integration tests повільніші, але краще ловлять проблеми реальної системи. # Писати async-код без blocking. * '''LTS''' — Long Term Support. Description { get; set; }
dotnet add package xunit
C# добре підходить для бізнес-систем:
Асинхронність оптимізує не блокувати threads під час очікування I/O.
public List<T> Items { get; } = new();
Причини: '''IDisposable''' застосовується для для ресурсів, які треба явно звільнити.
'''Для документації:''' у статтях краще писати не без зусиль “сучасний C#”, а конкретно: C# 14 / .NET 10 або іншу версію, яку реально використовує проєкт.== C# і Java ==
Приклад:
Без observability production-система стає “чорною скринькою”.<ref>https://learn.microsoft.com/en-us/dotnet/</ref>
C# часто застосовується для на backend. Сильні сторони
public record ProductDto(int Id, string Name, decimal Price);
Це означає, що типи змінних, параметрів, полів і результатів мають значення. Або:
<pre>
'''Generics''' дозволяють писати код, який функціонує з різними типами без втрати type safety. NuGet корисний, але потрібно перевіряти:
* [[Розробка в K2 ERP]]
* [[Тестування коду]]
* [[API K2 ERP]]
* [[Інтеграції K2 ERP]]
* [[Звітність K2 ERP]]
* [[Python]]
* [[PyTorch]]
* [[Keras]]
* [[MLflow]]
* [[LangChain]]
* [[GitHub Copilot]]
* [[Cursor]]
* [[Tabnine]]
* [[Deep Learning]]
* [[Великі мовні моделі]]
* [[GPT]]
* [[Claude Models]]
* [[Штучний інтелект]]
* [[Генеративний AI]]
Приклад:
* [https://learn.microsoft.com/en-us/dotnet/csharp/ Microsoft Learn — C# Guide]
* [https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/ Microsoft Learn — C# language reference]
* [https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14 Microsoft Learn — What's new in C# 14]
* [https://learn.microsoft.com/en-us/dotnet/ Microsoft Learn — .NET documentation]
* [https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview Microsoft Learn — What's new in .NET 10]
* [https://devblogs.microsoft.com/dotnet/announcing-dotnet-10/ Microsoft .NET Blog — Announcing .NET 10]
* [https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core Microsoft — .NET support policy]
* [https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-10.0 Microsoft Learn — ASP.NET Core documentation]
* [https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-10.0?view=aspnetcore-10.0 Microsoft Learn — What's new in ASP.NET Core in .NET 10]
* [https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-versioning Microsoft Learn — C# language versioning]
* [https://www.mediawiki.org/wiki/Help:Formatting MediaWiki — Help:Formatting]
* [https://www.mediawiki.org/wiki/Help:Links MediaWiki — Help:Links]
{
<pre>
Технології:
var orders = await db.Orders
[[Категорія:Пояснення термінів]]
Observability містить:
Приклад:
public string Name { get; set; } = "";
<pre>
{{SEO|title=C# — мова програмування для .NET, ASP.NET Core, desktop, cloud, enterprise, тестування й інтеграцій|description=C# — Wiki-стаття про мову програмування C Sharp у платформі .NET. Розглянуто синтаксис, типізацію, класи, інтерфейси, generics, LINQ, async/await, nullable reference types, pattern matching, records, ASP.NET Core, Blazor, MAUI, desktop, cloud, API, Entity Framework Core, тестування, NuGet, tooling, Visual Studio, VS Code, Rider, .NET 10, C# 14, безпеку, продуктивність, архітектуру й практичне використання C# у бізнесі та інтеграціях.|keywords=C#, C Sharp, CSharp, .NET, .NET 10, C# 14, ASP.NET Core, Blazor, MAUI, Entity Framework Core, LINQ, async await, nullable reference types, records, pattern matching, generics, Visual Studio, VS Code, Rider, NuGet, xUnit, NUnit, MSTest, Web API, REST API, enterprise development, backend C#, desktop C#, cloud C#, Azure C#, розробка C#, програмування C#, API інтеграції, тестування C#|alternativeTo=застарілий .NET Framework без кросплатформеності; ручна розробка backend без типізації; скриптові рішення без strongly typed архітектури; монолітні Windows-only застосунки; enterprise-розробка без сучасного tooling; API без ASP.NET Core; робота з базою без ORM; код без async/await; проєкти без тестування}}
'''Minimal APIs''' — компактний спосіб створювати HTTP endpoints. Приклад minimal API:
'''Коротко:''' C# — це мова для побудови надійних програм на .NET. C# найкраще використовувати там, де потрібні надійність, типізація, підтримуваність, API, інтеграції, бізнес-логіка й сильний tooling. Приклад:
'''Visual Studio''' — головна IDE Microsoft для .NET і C#. Clean Architecture розділяє код на шари:
[[Категорія:Тестування]]
== .NET Framework і сучасний .NET ==
C# з .NET добре підходить для background jobs.== Коли C# особливо корисний ==
== Типові помилки в C# ==
public decimal Price { get; init; }
ASP.NET Core
Добра практика:
конкурентні переваги: Generics — одна з причин, чому C# добре підходить для великих typed систем. * '''NuGet''' — package manager для .NET. public interface IReportService dotnet run
C# добре підходить для cloud. У .NET 10 для ASP.NET Core виступає як оновлення версій Blazor, зокрема зміни навколо Blazor script як static web asset. * async/await — механізм асинхронного програмування. { logger.LogInformation("Order {OrderId} processed", orderId);
Blazor дає можливість писати frontend на C#, але TypeScript залишається дуже популярним для web UI.var expensiveProducts = products { dotnet publish dotnet add package Microsoft.EntityFrameworkCore
Об’єктно-орієнтоване програмування
Вони корисні для:
await service.ProcessAsync(orderId);
Generics
Task<int> CalculateAsync();
- properties;
- fields;
- methods;
- constructors;
- events;
- nested types.
* files;
* streams;
* database connections;
* sockets;
* unmanaged resources. # Логувати структуровано. }
Properties можуть бути:
bool isActive = true;
Приклад:
== Background services ==
== Memory management ==
Не можна зберігати паролі, tokens і connection strings у Git.<ref>https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14</ref>
C# і ASP.NET Core часто використовуються для створення Web API. Controllers — класичний підхід ASP.NET Core Web API. * '''Task''' — асинхронна операційна дія. Rider часто обирають за:
public int Id { get; set; }
* потрібен дуже маленький script;
* команда не знає .NET;
* вся ERP-платформа вже на іншому стеку;
* задача простіше вирішується SQL або Bash;
* потрібна ML research ERP-платформа Python;
* проєкт на 100% frontend-only;
* немає потреби в strongly typed backend;
* середовище не підтримує .NET deployment. C# і Python часто використовуються в різних ролях. public decimal TotalAmount { get; set; }
LINQ дає можливість писати запити до колекцій, баз даних, XML або інших джерел у вигляді C#-коду.== Visual Studio Code ==
<pre>
Items.Add(item);
Records корисні для:
'''Pattern matching''' дає можливість інтуїтивно перевіряти форму й тип даних. # Додавати cancellation tokens. Ідея
== Integration tests ==
* Web API;
* database calls;
* HTTP requests;
* file operations;
* cloud services;
* message queues;
* background jobs.== Nullable reference types ==
* internal enterprise tools;
* касових систем;
* промислового ПЗ;
* Windows-застосунків;
* адмін-панелей;
* локальних інтеграцій. }
logger.LogWarning(ex, "Order not found");
Не варто логувати:
.NET — це платформа, на якій ця мова найчастіше функціонує. # Увімкнути nullable reference types. # Виносити бізнес-логіку з controllers. * '''LINQ''' — Language Integrated Query. Для deep learning або LLM часто використовують зовнішні моделі/API, але ML.NET здатна бути зручним для класичного ML у .NET-проєктах. Він дає можливість створювати застосунки для:
'''Практична думка:''' для enterprise-проєктів C# сильний не тільки мовою, а й дисципліною: solution structure, DI, interfaces, tests, NuGet, analyzers, CI/CD.== Clean Architecture ==
Assert.Equal(5, result);
C# використовує exceptions для обробки помилок. * '''SDK''' — набір інструментів для розробки. * '''MAUI''' — cross-platform UI framework для mobile і desktop. VS Code зручний для cross-platform development, web API, cloud і lightweight workflow. Клас здатна містити:
{| class="wikitable"
try
{
як приклад:
* фільтрації;
* сортування;
* групування;
* проєкції;
* агрегації;
* роботи з IEnumerable;
* Entity Framework Core queries. * '''Web API''' — HTTP API для взаємодії систем.
dotnet CLI — командний інтерфейс .NET. .NET MAUI — framework для cross-platform застосунків.== Controllers ==
async/await потрібен для:
- тестування;
- заміни інфраструктури;
- підтримки;
- довгострокових систем;
- enterprise development.== Entity Framework Core ==
- logs;
- metrics;
- traces;
- health checks;
- dashboards;
- alerts.
- JVM ecosystem;
- Spring;
- cross-platform enterprise;
- великий open-source ринок ERP в Україні;
- long-running enterprise deployments. Для бізнес-систем це дуже критично. # Використовувати analyzers і formatting. це сучасна об’єктно-орієнтована, strongly typed і мультипарадигмальна мова програмування, яка найчастіше застосовують, коли потрібно разом із платформою виступає ключовою рисою C# або C Sharp.NET. var builder = WebApplication.CreateBuilder(args);
Історично C# часто асоціювався з .NET Framework.
.ToList();
- сервіс обміну даними;
- REST API wrapper;
- генератор звітів;
- Windows desktop utility;
- background worker;
- інтеграційні функції ERP з Microsoft ecosystem;
- шлюз до зовнішніх систем. Приклад:
|- | .NET Framework || стара Windows-only платформа |- | .NET Core || кросплатформений перехідний етап |- | .NET || сучасна єдина платформа для Windows, Linux, macOS, cloud і container deployment |}
dotnet add package Newtonsoft.Json
Integration tests перевіряють взаємодію компонентів. * .NET 10 — LTS-реліз;
- C# 14 — мова, пов’язана з .NET 10 SDK;
- ASP.NET Core 10 — актуальна лінійка ASP.NET Core для .NET 10. app.Run();
через Проста аналогія: C# — це як добре організована майстерня: виступає як правила, типи, інструменти, пакети, тестування й стандарти. * типізація;
- підтримуваність;
- інструменти розробки;
- тестування;
- продуктивність;
- асинхронність;
- робота з API;
- інтеграції;
- enterprise-архітектура;
- довгострокова технічна підтримка;
- cloud deployment;
- робота з базами даних.
У контексті K2 ERP C# здатна бути корисним для зовнішніх сервісів або інтеграцій, якщо проєкт використовує .NET-інфраструктуру. Документація C# 14 зазначає, що нові функції ERP C# 14 можна використовувати з .NET 10 SDK. * Clean Architecture — архітектурний підхід із розділенням шарів. # контролювати NuGet dependencies. [HttpGet("{id}")]
Приклад:
C# — це мова. * frontend застосунків;
- mobile apps;
- integrations;
- ERP API;
- microservices;
- external partners;
- automation;
- AI tools. # Писати unit та integration tests. ! Під час роботи з C# варто:
'''Authorization''' — що йому дозволено. '''Interface''' описує контракт. DDD корисний, коли бізнес-логіка складна. Але сучасна розробка програмного забезпечення зазвичай використовує '''.NET''' без слова Framework:
Офіційна документація .NET пояснює, що .NET дає можливість створювати застосунки на різних платформах з використанням C#, F# і Visual Basic.== MAUI ==
== Хороші практики ==
</div>
[[Категорія:C#]]
* Entity;
* Value Object;
* Aggregate;
* Repository;
* Domain Service;
* Domain Event;
* Bounded Context.[[Категорія:Microsoft]]
Офіційна документація ASP.NET Core описує його як framework для fast, secure, cross-platform and cloud-based web apps and services. {
{
[[Категорія:Програмування]]
C# — strongly typed language. * '''IDisposable''' — інтерфейс для звільнення ресурсів. В ASP.NET Core можна використовувати:
</div>
<pre>
* маленьких сервісів;
* prototypes;
* microservices;
* internal APIs;
* lightweight endpoints. * '''Interface''' — контракт для реалізацій. * '''Integration test''' — тест взаємодії компонентів. * API + database;
* service + external API mock;
* background job + queue;
* EF Core + PostgreSQL;
* authentication + authorization. public class Customer
== Observability ==
<pre>
Корисні для:
* layered architecture;
* clean architecture;
* hexagonal architecture;
* domain-driven design;
* CQRS;
* microservices;
* modular monolith;
* event-driven architecture. string GetStatusText(OrderStatus status) => status switch
- C# — мова програмування C Sharp.
== Тестування в C# == }
Task<byte []> GenerateReportAsync(int reportId);
== Pattern matching ==
- не ловити всі exceptions без потреби;
- логувати важливі помилки;
- не приховувати критичні проблеми;
- створювати domain-specific exceptions;
- не використовувати exceptions для нормального control flow. # Використовувати dependency injection. Для великих систем можна використовувати controllers, clean architecture і окремі application services. Приклад:
Сценарії:
'''Entity Framework Core''' або '''EF Core''' — ORM для .NET. * <code>string</code> — не має бути null;
- <code>string? * обробка черг;
- scheduled tasks;
- імпорт/експорт;
- інтеграції;
- email sending;
- report generation;
- file processing;
- data synchronization. '''Task''' представляє асинхронну операцію.<ref>https://devblogs.microsoft.com/dotnet/announcing-dotnet-10/</ref>
OOP корисне для моделювання бізнес-сутностей, сервісів, правил і доменної логіки. Приклад:
C# і .NET мають добру продуктивність для backend і enterprise-систем. У .NET для цього часто використовують Worker Service, hosted services або зовнішні orchestrators. public async Task<Customer?> GetCustomerAsync(int id)
JavaScript або TypeScript — на frontend.== Task і ValueTask ==
<pre>
- allocations;
- async usage;
- database queries;
- caching;
- serialization;
- logging;
- LINQ usage;
- pooling;
- memory pressure;
- GC;
- network calls. dotnet test
- xUnit;
- NUnit;
- MSTest;
- FluentAssertions;
- Moq;
- NSubstitute;
- Verify;
- Shouldly. Він корисний для:
Через NuGet встановлюють бібліотеки:
== Rider ==
як приклад:
Приклад: } == Коли C# здатна бути невдалим вибором == == Сильна типізація == == IDisposable ==
* dependency injection;
* testing;
* mock objects;
* loose coupling;
* clean architecture;
* заміни реалізацій;
* plugin-like design.== Configuration і Secrets ==
* local development;
* CI/CD;
* build scripts;
* tests;
* publishing;
* containers;
* automation. * OpenTelemetry;
* Application Insights;
* Prometheus;
* Grafana;
* Serilog;
* Seq;
* Elastic Stack. C# особливо корисний для:
'''Практична думка:''' інтерфейс — це обіцянка. Офіційна документація Microsoft описує C# language reference як джерело з синтаксису, idioms і специфікації мови для .NET-розробників. Платформа !! {
}
'''Authentication''' — хто користувач системи. C# сильний у:
конкурентні переваги типізації:
== Інтерфейси ==
C# часто обирають для enterprise cloud через strong typing, tooling і стабільну екосистему .NET. * Azure Functions;
* AWS Lambda for .NET;
* containerized services;
* Kubernetes;
* microservices;
* background workers;
* queues;
* message brokers;
* cloud APIs;
* serverless. Desktop C# корисний для:
public int Id { get; set; }
[[Категорія:Enterprise]]
C# часто використовують у великих архітектурах.<pre>
<pre>
[Route("api/orders")]
* Web API;
* MVC;
* Razor Pages;
* Blazor;
* microservices;
* cloud apps;
* REST API;
* backend services. * '''.NET''' — платформа для запуску застосунків на C#, F# і Visual Basic.<pre>
'''Blazor''' — framework для створення web UI на C#. C# підтримує object-oriented programming.
- appsettings.json;
- environment variables;
- user secrets;
- Azure Key Vault;
- AWS Secrets Manager;
- Kubernetes secrets;
- command-line arguments.
OrderStatus.Paid => "Оплачено",
Актуальні версії
- великі об’єкти;
- collections;
- streams;
- IDisposable;
- async resources;
- memory leaks через events;
- caching;
- allocations у hot paths.[5]
}; int count = 10; Ідея: бізнес-логіка не повинна залежати від бази даних, UI або зовнішніх API. Мова !! Поширені помилки:
C# і ASP.NET Core мають багато засобів безпеки, але безпека залежить від архітектури й коду. return await db.Customers.FindAsync(id);
На продуктивність впливають:
- виклик LLM API;
- RAG backend;
- AI agents;
- document processing;
- embeddings;
- speech-to-text;
- text-to-speech;
- integration with Azure AI;
- ML.NET;
- OpenAI-compatible APIs;
- enterprise AI middleware.
Типова технічна архітектура:
C# і JavaScript / TypeScript
C# 14 додає field-backed properties, що спрощують доступ до backing field через ключове слово field.
* class;
* object;
* inheritance;
* interface;
* encapsulation;
* polymorphism;
* abstraction. * помилки видно раніше;
* IDE краще підказує код;
* легше робити refactoring;
* легше підтримувати великий код;
* менше випадкових runtime-помилок;
* простіше читати API. Добре логувати:
await using var db = new AppDbContext(options);
CLI потрібен для:
public DateTime Date { get; set; }
Для ASP.NET Core можна використовувати:
* List<T>;
* Dictionary<TKey, TValue>;
* Task<T>;
* IEnumerable<T>;
* Repository<T>;
* Result<T>;
* Nullable<T>. Приклад:
Microsoft оголосила .NET 10 як Long Term Support release із підтримкою на три роки, до 10 листопада 2028 року.
критично: типізація C# не захищає автоматизовано від поганої авторизації, витоку секретів, небезпечних залежностей або неправильних SQL-запитів. builder.Services.AddScoped<IOrderService, OrderService>();
public void Add_ReturnsSum()
Приклади:
OrderStatus.Cancelled => "Скасовано",
Record — тип, зручний для immutable data і value-like моделей. * важливі бізнес-події;
- помилки;
- correlation IDs;
- latency;
- external API calls;
- background jobs;
- security events. * Nullable reference types — механізм контролю null у reference types.
_ => "Невідомо"
- ↑ https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview
- ↑ https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/
- ↑ https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-10.0
- ↑ https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-14
- ↑ https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-10.0?view=aspnetcore-10.0