.NET дайджест #43: абсолютно літній

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

В цьому випуску: перезавантаження дайджесту, primary constructors with C#, Miroslava Buchtikova розповість ключові речі при переході на Minimal API, Тім Де Шрайвер обговорює використання .NET Minimal API, bflat — C# as you know it but with Go-inspired tooling.

Від авторів

Андрій Губський:

Дорогі друзі, попередній дайджест вийшов майже рік тому. В Україні триває війна. Писати щось у такий час стає дедалі важчим і відповідальнішим завданням. За останній рік було зроблено чимало всього — благодійність, соціальні проєкти, все те, що щільно увійшло до нашого життя з початком війни. Про щось я розповім згодом, щось залишиться за дужками соціальних мереж та медіа.

Усі хороші проєкти з часом розвиваються та змінюються. Ось і наш дайджест зазнає певних змін. Щоб справа йшла швидше та веселіше, тепер разом зі мною над дайджестом рубатиме Влад Фурдак — людина з іскрою та талантом, талановитий розробник та однодумець.

Крім новини про співавторство, буде ще один анонс, який ми озвучимо трохи згодом. А поки що, користуючись нагодою, хочу повідомити, що я запустив благодійний проєкт Donation for Good. Я запрошую вас пiдписатися на канал проєкту і приєднатися до благодійного збору коштів, який ми зараз проводимо.

Владислав Фурдак:

Дякую Андрію за співпрацю та гарні ініціативи !

А що стосується розробки на .NET- найбільше, що мені сподобалось за останній час — це спробувати Minimal API в продакшені та нові фічі мови C#. За допомогою Minimal API ви можете створювати кращу декомпозицію відповідальностей та робити імплементацію API більш прозорою з точки зору логічного розуміння. Вам більше не потрібні view-based компоненти, такі як контролери. Думаю, ви відчуєте переваги на проєктах з великою кількістю ендпойнтів.

Дуже сильний ривок вперед зробив Entity Framework Core, випущено багато нових фіч, особливо в EF7.

В цьому випуску:

  • Primary Constructors with C# - у статті обговорюється введення первинних конструкторів у C# 12, що спрощує написання коду. Стаття підкреслює різницю між записами (records), структурними записами (struct records) і звичайними класами, пояснюючи синтаксис первинних конструкторів.
  • Miroslava Buchtikova розповість ключові речі при переході на Minimal API та відмові від контролерів у проєктах на asp.net.
  • Tim Deschryver — Тім Де Шрайвер обговорює використання .NET Minimal API як прикладного шару для застосунку з метою оптимізації структури застосунку та уникнення надмірної складності. Тім пропонує використовувати патерн REPR (Request Endpoint Response), в якому кожний файл визначає свій об’єкт запиту, кінцеву точку та об’єкт відповіді, що спрощує архітектуру застосунку.
  • bflat — C# as you know it but with Go-inspired tooling bflat- це компілятор для C#, який дозволяє збирати застосунки для будь-якої з підтримуваних платформ: Windows, Linux, EFI.

З моменту останнього дайджесту, в світі .NET відбулося досить багато цікавих подій, наприклад:

  • Конференція FwDays 2023, де були представлені українські та англомовні треки.
  • Також в мережу виклали відео конференції FwDays 2022, кваліфіковані доповідачі та цікаві теми, плейлист можна знайти тут.
  • Серія конференцій NDC, де можна знайти досить багато доповідей, пов’язаних з .NET.
  • Досить багато виступів та матеріалів від .NET Conf.
  • Також, конференція Microsoft build 2023, де можна подивитися про новинки в сфері розробки на .NET.

Серед блогерів хочу відзначити багато нового матеріалу на таких каналах:

  • Nick Chapsas — досить популярний у світі блогер, що знімає контент для аудиторії абсолютно різного рівня.
  • Tim Corey — підійде людям, які активно вивчають .NET, на каналі дуже багато гайдів з C#, asp.net , Blazor, Azure, git.
  • Канал Андрія Подколзіна, Dev Jungles. Андрій зняв понад 100 відео за рік, переважно контент на теми: C#, .NET, CLR та пояснення, як це все влаштовано всередині.

Далі пропонуємо вам ознайомитися з дайджестом, в якому, ви обов’язково знайдете щось нове та цікаве.

.NET

C# lang

What’s new in C# 12 — Primary Constructors для класів і структур, тепер конструктор можна оголосити прямо після імені класу. Inline-масиви, псевдоніми типів та значення за замовчуванням для лямбда-виразів.

How to use BufferedStream and MemoryStream in C# - переваги потокових класів в .NET 7 для швидшого читання та запису даних.

The Difference Between Covariance and Contravariance in .NET C# | HackerNoon — коваріантністю називається збереження ієрархії наслідування типів в похідних типах. Контраваріантність натомість змінює порядок типів на протилежний в похідних типах.

GitHub — MichalStrehovsky/zerosharp: Demo of the potential of C# for systems programming with the .NET native ahead-of-time compilation technology. — що, програми на C# можна запускати без .NET? Навіть без операційної системи взагалі!

Lazy and once-only C# async initialization | endjin — є декілька оптимізацій, які часто бувають корисними: ледача ініціалізація та ініціалізація «тільки один раз». А ось як бути, якщо ініціалізація включає асинхронну операцію?

async void — How to Tame the Asynchronous Nightmare — Dev Leader — детальний розбір проблеми з async void та шляхи її вирішення.

Memory leaks in C# - хоча при розробці під .NET ви маєте справу з керованим кодом, витоки пам’яті все ж можуть відбуватися. У цій статті коротко перераховані причини їх виникнення.

How does List work under the hood in .NET? — автор публікації занурює нас в механізми роботи одного з найбільш використовуваних типів даних в .NET, розкриваючи його основні властивості та процеси.

List and Span Pattern Matching — Using C# 11 in Rider and ReSharper | The .NET Tools Blog — у цій публікації розробники з JetBrains розглянуть деякі з найцікавіших можливостей з C# 11, і те, як вони оновили ReSharper і Rider, щоб підтримувати їх.

Normalize and compare URLs with C# - у статті описується процес нормалізації та порівняння URL-адрес в C#. Автор ділиться практичним рішенням для ідентифікації GUID в URL-адресах, що є важливим аспектом нормалізації URL-адрес.

Implementing a Round Robin algorithm for an HttpClient — Into dotNET — round-robin — алгоритм розподілу декількох завдань або навантаження обчислювальної системи — методом перебору та впорядкування її елементів за круговим циклом.

Update to the .NET language strategy — cтаття описує підхід Microsoft до розробки та еволюції мов програмування, які працюють на платформі .NET. Нова стратегія виділяє чотири ключові напрямки роботи команди .NET: підвищення продуктивності та комфортності використання мов програмування, поліпшення продуктивності та удосконалення, взаємодія з іншими мовами та платформами. У статті обговорюються конкретні поліпшення, які плануються для кожної з мов .NET, включаючи C#, F# та Visual Basic.

How to use ChatGPT API in C# - хочете використовувати у своєму проєкті всю потужність галасливого чат-бота зі штучним інтелектом? Автор статті розповість, як це зробити!

Building a Dynamic Logical Expression Builder in C# - ви могли зіткнутися з ситуаціями, коли вам потрібно динамічно створювати складні логічні вирази на основі користувацького вводу або інших динамічних факторів. У таких випадках, створення виразів статичним способом може стати втомливим та схильним до помилок. У цій статті буде розглянуто, як використовувати дерева виразів для створення логічних виразів на C#.

Time abstraction in .NET 8 — команда розробників .NET представила абстракцію часу. Це може принести значні переваги, особливо якщо потрібно тестувати сценарії, де час грає вирішальну роль!

Dot Net Office : Yield Return Statement in C# | Yield keyword in C# - ключове слово yield в C# використовується для визначення блоків ітераторів над колекціями. Yield використовується з операторами return або break. Про важливі аспекти використання yield, включаючи ліниву оцінку, відкладене виконання та заборону використання інструкцій yield в анонімних методах і ще щось ви дізнаєтесь з цієї статті.

Myths about F#: F# is for FP, C# for OOP — planetgeek.ch — C#, і F# підтримують об’єктноорієнтоване та функціональне програмування до певного рівня. На C# можна програмувати в функціональному стилі, визначаючи функції та використовуючи лямбда-вирази, а можна використовувати класи та інтерфейси в F#.

C# 11.0 new features: Span pattern matching | endjin — у статті обговорюється використання Span і ReadOnlySpan в C#. Span і ReadOnlySpan представляють ефективні способи представлення послідовностей значень у пам’яті, вони надають більшу гнучкість, ніж масиви. Ці типи надають високоефективний метод представлення підрозділів даних без створення нових копій, що призводить до підвищення продуктивності.

Primary Constructors with C# - у цій статті обговорюється введення первинних конструкторів в C# 12, що спрощує написання коду. Стаття підкреслює різницю між recors, struct records, та звичайними класами, пояснюючи синтаксис первинних конструкторів.

Comprehensive LINQ cheat sheet — стаття від одного з редакторів проєкту //devdigest, яка допоможе вам розібратися з LINQ!

How to use the in, out, and ref keywords in .NET Core — скористайтеся перевагами ключових слів in, out і ref, щоб зробити свій код більш зрозумілим та зручним у супроводі.

Avoid Proliferating DbContext or IQueryable in .NET Apps — більшість .NET застосунків використовують EF Core і DbContext для доступу до даних, однак підтримуваність коду може стати гірше, коли використання DbContext або отриманого з нього IQueryable поширюється по всьому застосунку. Стаття описує, як працює IQueryable та EF Core, а також, як обмеження доступу до IQueryable (або його відсутність) впливає на загальну підтримуваність застосунку.

Value Objects in C# - Code Maze — Досліджуємо концепцію об’єктів значень у підході domain-driven design. Об’єкти значень — це незмінні структури даних, які служать для інкапсуляції примітивів або інших value objects. Автор розглядає відмінність value objects від entities, підкреслює їх значущість і обговорює ситуації, де вони можуть бути недоречними.

Microsoft .NET Code Analysis: Always Add Braces in C# - відсутність фігурних дужок в операторах if може призвести до проблем і вплинути на читабельність коду. У статті розглядається, до яких проблем може призвести порушення цієї практики.

How to Convert a String to a Span in C# - Code Maze — використання Span дозволяє безпосередньо модифікувати дані символів, усуваючи потребу в непотрібних копіях. Це призводить до зменшення розподілу пам’яті і прискорення виконання коду, що забезпечує значне збільшення швидкості при роботі з символами. Замість створення нових рядків або масивів при виконанні різних операцій, можна безпосередньо працювати зі Span. Це не тільки економить пам’ять, але і покращує читабельність і стислість коду.

GitHub — marcominerva/ChatGptNet: A ChatGPT integration library for .NET, supporting both OpenAI and Azure OpenAI Service — Марко Мінерва, володар престижного звання Microsoft MVP у категорії Developer Technologies, представляє свій новий проєкт — бібліотеку інтеграції ChatGPT для .NET. Проєкт підтримує як OpenAI, так і Azure OpenAI Service.

Breaking change: IntPtr no longer used for function pointer types — .NET — тип вказівника на функцію тепер є екземпляром System.Type з новими можливостями, такими як Type.IsFunctionPointer. Раніше повертаний екземпляр System.Type був типом IntPtr

Tim Deschryver — у статті наводиться ряд досить простих, але дуже ефективних порад по роботі з HttpClient.

Object-Oriented vs. Functional Programming With C# and F# - сучасні мови програмування значною мірою підтримують як об’єктноорієнтоване, так і функціональне програмування. У чому різниця між цими двома підходами і де один більш властивий, ніж інший? Чи можна об’єднати ці дві парадигми програмування? У цьому відео будуть розглянуті спільні риси і відмінності між функціональним і об’єктноорієнтованим програмуванням на прикладах C# і F#.

C# to VB.NET: A Step-by-Step Guide for Smooth Transition — в житті кожного C# програміста настає момент, коли він у своєму пізнанні настільки наситився, що хоче спробувати щось нове. Переходом на F# вже нікого не здивуєш. Тому справжні гуру обирають своєю наступною мовою VisualBasic.NET. І щоб перехід був простіше, ми пропонуємо вашій увазі цю статтю.

Concurrent Processing in .NET 6 with System.Threading.Channels — Medium Real-life приклад використання каналів для підвищення перфомансу сервісу та порівняння цього підходу з іншими.

Data Access frameworks

How to Implement a Soft Delete Strategy with Entity Framework Core | The .NET Tools Blog — стаття Каліда Абухакмеха пояснює, як реалізувати стратегію «м’якого видалення» з використанням Entity Framework Core для підтримки цілісності даних і управління записами. Це дозволяє користувачам логічно видаляти інформацію, зберігаючи при цьому можливість відновлення, і дотримуватися вимог про зберігання даних.

Entity Framework — Concurrency Conflicts Handling | Medium Мартинас Самуйловас розкаже, як реалізувати оптимістичну та песимістичну конкурентну модель для Entity Framework.

Special Solutions for Some Weaknesses of Entity Framework | Medium — Бора Кашмір, Application architect & Microsoft MVP, розкаже про використання LINQ2Db, слабо відомої, але дуже потужної альтернативи-доповнення до стандартного query-провайдера Entity Framework. А саме ті місця, де LINQ2Db буде кращий за стандартний Entity Framework.

Arhitecture

Tactics for Building Background Services in .NET — Kevin Griffin — NDC London 2023 — великі та складні системи часто стикаються з необхідністю виконувати роботу «за лаштунками». Часто це можуть бути прості завдання, такі як надсилання електронних листів або оновлення статистики. Або це може бути щось складніше, наприклад, обробка файлів або створення звітів. Всі ці завдання можуть бути виконані в фоновому режимі. У цьому відео будуть розглянуті різні варіанти того, як можна реалізувати фонові сервіси.

Scaling Akka.Persistence.Query to 100k+ Concurrent Queries for Large-Scale CQRS — автори публікації діляться досвідом розв’язання проблеми масштабування в Akka.NET v1.5.

Making tomorrow’s code look like today’s [eng] / Adam Ralph — команда .NET fwdays виклала в публічний доступ виступ Адама Ральфа. У цьому відео Адам ділиться своїм досвідом проєктування систем, в яких може знадобитися планування виконання завдань і відкладена в часі обробка запитів.

Clean Architecture Project Setup From Scratch With .NET 7 — чиста архітектура — це популярний підхід до організації ваших .NET-застосунків. Автор покаже, як налаштувати проєкт, відповідний вимогам чистої архітектури з нуля.

Clean Architecture in ASP .NET Core Web API — стаття пояснює, як реалізувати чисту архітектуру в ASP.NET Core Web API для створення масштабованих і зручних для підтримки застосунків. В ній розглядається концепція чистої архітектури, її переваги і чотири основні рівні, які включає її реалізація. Стаття надає керівництво по організації структури проєкту і створенню незалежних, тестованих і багаторазово використовуваних компонентів.

AutoMapper considered harmful — в статті розглядаються причини, за якими використання AutoMapper’а в проєкті є небажаним і навіть шкідливим.

Web Development

GitHub — maxkoshevoi/DateOnlyTimeOnly.AspNet: Adds support for recieving and returning DateOnly/TimeOnly as ISO 8601 string to ASP.NET API — для вирішення цієї проблеми була створена бібліотека DateOnlyTimeOnly.AspNet, яка додає підтримку нових типів у форматі ISO 8601 рядка. Також доступна інтеграція з Swashbuckle Swagger.

Securing Sensitive Information with .NET User Secrets | The .NET Tools Blog — у цьому пості фахівці з JetBrains розповідатимуть вам про те, як налаштувати локальне зберігання конфіденційних даних.

Validating Connection Strings on .NET Startup — у цьому пості автор розповість, як протестувати підключення до бази даних при запуску і завершити роботу застосунка, якщо підключення не вдалося.

API Key Authentication with ASP.NET Core — ASP.NET Core не має вбудованої підтримки аутентифікації за ключем API, тому в цьому пості автор покаже, як захистити API за допомогою аутентифікації за ключем.

Blazor United — Solving Blazor’s biggest challenges? — разом з анонсом .NET 8 Preview 1, Microsoft розповіли про свої плани для Blazor, а саме про уніфіковану платформу Blazor United, яка призначена для рішення компромісів, до яких доводиться звертатися при розробці як WASM, так і Server-застосунків. Автор статті детально розбирає цей підхід.

5 Blazor Improvements in New .NET 8 Preview 5 — Visual Studio Magazine — У .NET 8 Preview 5 основну увагу розробників прикуто до Blazor для ASP.NET Core. Оновлення, заплановане на листопад, принесе багато нових функцій та можливостей, з особливим акцентом на вдосконалення у рендерингу компонентів.

Applying Postel’s law in ASP.NET Core—Part I — Цей принцип часто застосовують до розробки серверних застосунків. Згідно з ним, дані, які ви відправляєте іншим, повинні бути якомога меншого розміру та якомога краще відповідати стандарту, проте ви самі повинні приймати на вхід і не зовсім стандартизовані дані, якщо вам вдасться їх обробити.

Introduction to ASP.NET Core Minimal APIs | The .NET Tools Blog — у цій публікації розповідається про те, чому має сенс використовувати ASP.NET Core Minimal API, а також розглядаються деякі недоліки цієї технології.

Writing an OpenAI plugin for ChatGPT using ASP.NET Core — на конференції Microsoft Build активно обговорювалися AI-технології, зокрема, інструменти GitHub Copilot та OpenAI. На одній з сесій віцепрезидент з продуктів, Аманда Сілвер, продемонструвала створення плагіна OpenAI для ChatGPT за допомогою Python. Автор цієї публікації спробував відтворити цей експеримент, але вже використовуючи ASP.NET Core API.

Miroslava Buchtikova розповість ключові речі для початківців: як працювати з Minimal API. Вебінар, тривалістю понад годину, дуже детально пройдеться по основах нового підходу.

Tim Deschryver — Тім Де Шрайвер обговорює використання .NET Minimal API як прикладного шару для застосунку, оптимізуючи структуру застосунку і уникаючи надмірної складності. Тім пропонує використовувати патерн REPR (Request Endpoint Response), в якому кожний файл визначає свій об’єкт запиту, кінцеву точку і об’єкт відповіді, спрощуючи архітектуру додатка. Такий підхід добре поєднується з патерном CQRS і вносить зміни в традиційні шари застосунку, ізолюючи бізнес-логіку і роблячи її гнучкішою. Де Шрайвер відзначає, що важливо пам’ятати, що бізнес-логіка не є частиною прикладного шару, і вона повинна бути винесена в окремий шар.

How To Set Up SSL Certificate In Visual Studio and .NET CLI — у цій статті буде розглянуто налаштування SSL-сертифіката для використання в ASP.NET вебзастосунках та створення нового SSL-сертифіката за допомогою Visual Studio та .NET CLI. Також ви дізнаєтесь, як видалити SSL-сертифікати за допомогою диспетчера сертифікатів Windows та інтерфейсу командного рядка.

Accelerate .NET web applications performance with Azure Redis Cache — використовуйте кеш Azure Redis як розподілений кеш вебзастосунків ASP.NET, щоб легко підвищити продуктивність. У відео буде розглянуто використання Redis Cache для стану сеансу, кешування виводу та шаблон кешування для операцій із даними.

Burke learns Blazor by porting a Vue.js app to Blazor — Берк та Джон портують theurlist.com (реальний JavaScript-застосунок, написаний на Vue.js) на Blazor!

Implementing HATEOAS in Minimal APIs | Poornima Nayar — Freelance Developer — HATEOAS розшифровується як Hypermedia As The Engine Of Application State. Це одна з найважливіших концепцій REST, завдяки якій ваші HTTP API повністю відповідають обмеженням REST.

Improvements to the Caching Abstraction in ASP.NET Core — .NET Blog — у статті розглядаються покращення в кешуванні, що роблять його більш інтуїтивним та надійним. Ви дізнаєтеся про спрощення серіалізації об’єктів та рекомендації, що дозволяють сфокусуватися на бізнес-логіці.

.NET runtime

Microsoft Build—Join us May 23–25, 2023 — дізнайтеся, як .NET 8 покращує розробку вебзастосунків шляхом підвищення продуктивності, нових API-інтерфейсів і сучасних інструментів розробки.

Announcing .NET 8 Preview 1 — .NET Blog — перша публічна версія .NET 8 вже доступна для завантаження. Це буде наступним LTS (Long Term Support) релізом. Остаточний реліз заплановано на листопад 2023.

Announcing .NET 8 Preview 5 — .NET Blog — зміни у новій версії торкнулись як SDK, так і середовища виконання.

Performance Improvements in .NET 7 and .NET 8 — чекаєте .NET 8? Ми теж! Давайте разом поглянемо на ті покращення у продуктивності, які готує нам майбутня версія платформи.

Microsoft Teams’ Permission Service migration to .NET 6 — .NET Blog — Microsoft провела міграцію своєї служби дозволів Teams на .NET 6, що призвело до збільшення продуктивності на 100% та зниження затримки на 30-45%. Процес міграції включав оновлення проєктів, модернізацію кодової бази та заміну залежностей. Цей крок дозволив Microsoft видалити значну частину застарілого коду та використати вбудовані можливості ASP.NET та .NET 6.

7 New Features (or bug fixes🐛) You Might Have Missed in .NET 8 — Medium- Juan Alberto розкаже про 7 важливих, на його думку, фіч у .NET 8: покращення стандартного серіалізатора, підтримка SHA-3 алгоритму та інше.

Developer tools

bflat — C# as you know it but with Go-inspired tooling — bflat — C#, як ви його знаєте, але з інструментами, натхненними Go — bflat — це компілятор для C#, який дозволяє зібрати додатки для будь-якої з підтримуваних платформ: Windows, Linux, EFI.

Announcing Create a Pull Request in Visual Studio — Visual Studio Blog — в Microsoft прислухались до користувачів Visual Studio, які скаржилися на те, що вони виконують 90% робочого процесу розробки у Visual Studio, але потім їм доводиться відкривати браузер, щоб створити пулреквест. Починаючи з версії 17.7 preview 2 release, розробникам не доведеться покидати своє затишне IDE, для створення пулреквеста.

AI Assistant Comes to ReSharper | The .NET Tools Blog — ReSharper 2023.2 стане першою версією продукту, яка буде робити рекомендації на основі роботи ІІ. У EAP збірці представлена рання реалізація помічника ReSharper AI — чата, спеціально призначеного для відповідей на питання з програмування та допомоги у виправленні помилок, рефакторингу, документуванні та інших робочих процесах.

Announcing C# Dev Kit for Visual Studio Code — Visual Studio Blog — відмінна новина для тих, хто працює з Visual Studio Code! Microsoft випустила передпоказну версію розширення C# Dev Kit.Це розширення додає до VS Code деякі можливості від свого старшого брата — Visual Studio.

Visual Studio UI Refresh — Visual Studio Blog — Microsoft оголошує про масштабне оновлення інтерфейсу Visual Studio, виправляючи обмеження поточної візуальної мови, яка не оновлювалася з 2012 року. Оновлення, що втілює принципи Fluent Design, призначене вирішити проблеми з маленькими, перевантаженими елементами керування, візуальним шумом та неконсистентними індикаціями стану. Новий користувацький інтерфейс зосереджений на цілісності, доступності та продуктивності, що є значним кроком в розвитку IDE.

Microsoft Graph Toolkit v3.0 is now generally available — Microsoft 365 Developer Blog — після чотиримісячного тестування команда Microsoft рада представити Microsoft Graph Toolkit v3.0. Новий реліз пропонує багато нових можливостей для створення застосунків, сумісних з Microsoft 365. Microsoft Graph Toolkit, вперше представлений у 2019 році. Це інструментарій, який являє собою набір різних компонентів для роботи з Microsoft Graph.

Rider 2023.1: Enhanced C# Support, Best-in-class GameDev Features, and Much More! | The .NET Tools Blog — нова версія отримала підтримку нововведень C#, поліпшення для налагодження (зокрема Blazor WASM) і багато іншого!

GitHub Copilot chat for Visual Studio 2022 — Visual Studio Blog — Функція Copilot chat, інтегрована з Visual Studio, надає аналіз коду, тестів та винятків, економлячи час на ручних задачах та діагностиці.

Infrastructure

AWS — ви можете запитати грант AWS, якщо ви розробляєте проєкт на базі .NET з відкритим вихідним кодом.

How to deploy .NET apps as systemd services using containers | Red Hat Developer — співробітники RedHat діляться у своєму блозі досвідом розгортання застосунків на базі .NET як служб systemd за допомогою контейнерів.

Running non-root .NET containers with Kubernetes — .NET Blog — Безрутові контейнери Linux були найбільш потрібною функцією для команди контейнерів .NET. Недавно було оголошено, що всі образи контейнерів .NET 8 будуть налаштовуватися як безрутові за допомогою одного рядка коду.

New AWS .NET Distributed Cache Provider for DynamoDB in Preview — AWS анонсувала випуск нової версії розподіленого кешу AWS.NET для DynamoDB. Ця бібліотека дозволяє використовувати Amazon DynamoDB як сховище для ASP.NET Core. Розподілений кеш AWS .NET для DynamoDB є наступником AWS DynamoDB і забезпечує сумісність як з .NET Framework, так і з ASP.NET Core.

Desktop

Image Scaling in .NET MAUI — Леомарис Рейєс, Microsoft MVP, розповість у своїй статті про те, чим відрізняються різні значення властивості Aspect.

WPF Begins its Long Goodbye — автор статті роздумує про спад популярності Windows Presentation Foundation (WPF), а також розглядає альтернативні варіанти для розробки настільних застосунків і робить висновок, що WPF не має майбутнього як технологія для масового використання. А що ви думаєте?

Testing/Profiling

NBomber 5: new HTML Report — Антон випустив нову версію NBomber! У релізі: — new HTML Report — .NET process metrics — metrics API better memory consumptions.

Профилировка памяти. dotMemory под Linux — автор YouTube-канала Dev Jungles розповідає про те, як можна використовувати dotMemory для профілювання віддалених застосунків, які знаходяться на хмарному сервері.

Steven Giesel — автор публікації розповідає про те, чому з усіх фреймворків для модульного тестування, йому подобається саме xUnit. А який фреймворк для тестування використовуєте ви?

Writing a .NET profiler in C# - Part 1 — У .NET дуже потужний API профілювання, який дозволяє слідкувати за середовищем виконання, динамічно змінювати методи під час виконання, переглядати стек викликів потоків у довільні моменти часу і багато іншого.

Miscellaneous

Microsoft Reaffirms Fate of Visual Basic — Visual Studio Magazine — Microsoft оголосила про оновлення своєї стратегії мов програмування, заявивши, що Visual Basic залишиться «простою і доступною» мовою з «стабільним дизайном». Основні бібліотеки .NET продовжать підтримувати VB, і поліпшення .NET Runtime і бібліотек автоматично підвищать ефективність VB. Оголошення також підтверджує, що Microsoft залишається вірною повній підтримці всіх трьох мов, включаючи відкритий код, зворотну сумісність і активну еволюцію мов програмування.

Azure

Azure status — команда Azure визначила, що проблема з мережевим підключенням виникає на пристроях у глобальній мережі Microsoft (WAN). Це впливає на підключення між клієнтами в Інтернеті та Azure, а також на підключення між службами в центрах обробки даних, а також на підключення ExpressRoute.

Automate your attack response with Azure DDoS Protection solution for Microsoft Sentinel — Azure DDoS Protection Solution для Microsoft Sentinel автоматично блокує нові вектори атак, використовуючи сигнали безпеки з різних служб Azure. Microsoft Sentinel використовується для збору і аналізу цих сигналів, створюючи централізоване представлення ландшафту атак і автоматичну блокаду джерел DDoS-атак, покращуючи безпеку організації.

Azure Cosmos DB Conf 2023 — Events — Безкоштовна віртуальна подія для розробників, організована корпорацією Microsoft та спільнотою Azure Cosmos DB. На сесіях будуть представлені доповіді як від Microsoft, так і від спільноти. Дізнайтеся більше про Azure Cosmos DB!

ChatGPT is now available in Azure OpenAI Service — Azure OpenAI Service тепер включає технологію ChatGPT від OpenAI, а також GPT-3.5, Codex і DALL-E 2. Повністю керована корпоративна пропозиція надає бізнесу доступ до технологій OpenAI з додатковими функціями управління. Для клієнтів та партнерів Microsoft доступний спеціальний доступ за заявкою.

Browse Azure Architectures — Azure Architecture Center — говорять, що в AWS виявився поганий serverless і Amazon довелося переїжджати зі свого ж сервісу. Хочемо допомогти хлопцям з Amazon і підкинути рецептів, як правильно готувати serverless.

Auto scaling Azure Cosmos DB for PostgreSQL with Citus, Grafana, & Azure Functions — Azure Cosmos DB Blog — дізнайтеся, як створити автомасштабовані налаштування для Citus на Azure Cosmos DB для PostgreSQL. Вступіть у світ безтурботного масштабування!

Advancing Fabric — What is Microsoft Fabric? — секрет викрито: сервіс Microsoft Fabric анонсовано, і всі тільки про це і говорять. Ви дивилися конференцію Build, читали блоги і море твітів, але цілком можливо, що ви ще не розумієте, що таке Fabric насправді. У цьому відео Саймон, який працював з новою платформою останні кілька місяців, допоможе з’ясувати, що таке Microsoft Fabric і як цей продукт можна використовувати.

CGI Federal Successfully Demos Microsoft Azure Satellite Backhaul for U.S. Marine Corps — Via Satellite — CGI Federal підтвердила у середу, що успішно завершила пілотне тестування супутникового зв’язку Microsoft Azure Orbital Cloud Access для Корпусу морської піхоти США. Демонстрація пройшла в Центрі інтеграції платформ Корпусу морської піхоти на командному пункті Блаунт Айленд.

Build next-generation, AI-powered applications on Microsoft Azure | Azure Blog | Microsoft Azure — генеративний AI, який швидко став технологією, що визначає сучасність, змінює те, як ми шукаємо та використовуємо інформацію щодня. Використання служби OpenAI Azure від Microsoft дозволяє розробникам з різних галузей перенести цей процес на новий рівень. Сьогодні, завдяки GPT-4 від OpenAI, доступному в Azure OpenAI Service, можна інтегрувати AI безпосередньо у свої застосунки. І це тільки початок. Платформа Azure представляє ще декілька нових можливостей, що допоможуть застосувати генеративний AI. Деталі у статті.

Mercedes-Benz enhances drivers’ experience with Azure OpenAI Service — Mercedes-Benz покращує досвід водіїв з Azure OpenAI Service — Mercedes-Benz оголосила про інтеграцію з Azure OpenAI. Це допоможе покращити можливості голосового асистента водія. У США з 16 червня можна буде спробувати оновлений голосовий асистент «Hey Mercedes», який стане інтуїтивнішим і зможе ще більше полегшити виконання різних завдань, дозволяючи водіям залишатися зосередженими на дорозі.

Getting started with generative AI using Azure OpenAI Service | BRK214H — у цьому відео розповідається про те, як компанії інтегрують великі мовні моделі для створення нового покоління застосунків з використанням Azure OpenAI Service, включаючи Dall-E 2, GPT-3.5, GPT-4, Codex і ChatGPT.

Accelerating scientific discovery with Azure Quantum — The Official Microsoft Blog — Microsoft оголосила про значний успіх у створенні інструментів, спрямованих на прискорення наукових відкриттів. Azure Quantum Elements — проєкт, який поєднує останні досягнення у високопродуктивних обчисленнях, штучному інтелекті та квантових обчисленнях. Це свого роду Copilot для допомоги вченим, який допомагає у вирішенні складних завдань.

Microsoft Dev Box is now generally available — Microsoft Dev Box — це готові робочі станції хмар, оптимізовані для розробників, які підтримують інтеграцію з Visual Studio.

Generating Azure Resource Names According to Naming Convention with #ChatGPT — Олександр Краковецький, Microsoft Regional Director in Ukraine, розповість, як за допомогою чата GPT формувати неймінг ваших ресурсів в Azure.

Data science

General availability of Azure OpenAI Service expands access to large, advanced AI models with added enterprise benefits — сьогодні в Microsoft раді оголосити про це в рамках постійного партнерства з OpenAI.

ChatGPT passed a Wharton MBA exam, and academics are taking note — професор Крістіан Тервіш вирішив дослідити можливості штучного інтелекту і склав за допомогою ChatGPT екзамен з основного курсу MBA «Управління операціями».

Getting started with ML.NET | The .NET Tools Blog — Халід Абухакмех з JetBrains розповість про ML.NET, бібліотеку, розроблену Microsoft для навчання, оптимізації та розгортання навчених моделей.

Get Started with OpenAI Completions with .NET — .NET Blog — пропонуємо вам ознайомитися з серією публікацій, де співробітники Microsoft розповідають про вплив ШІ на різні продукти, від Bing до GitHub. Ви дізнаєтесь, як легко додати функції на основі OpenAI в ваші .NET-додатки.

Tutorial—Create a recommendation app with .NET MAUI and ChatGPT — Windows apps — у цьому посібнику ви дізнаєтесь, як створити застосунок, який викликає API-інтерфейси OpenAI ChatGPT для надання рекомендацій на основі місцеперебування користувача. У застосунку буде простий користувацький інтерфейс, який дозволить вводити місцезнаходження і отримувати рекомендації щодо ресторанів, готелів та культурних пам’яток.

Bard vs. Bing: AI Search Bots Answer Questions About Visual Studio and .NET — Visual Studio Magazine — компанія Google недавно випустила свого бота на основі штучного інтелекту під назвою Bard, щоб конкурувати з Bing. Google, як завжди, трохи запізнилися і особливо підкреслюють «експериментальність» свого рішення.

Microsoft Build brings AI tools to the forefront for developers — The Official Microsoft Blog — штучний інтелект визначає нову еру технологічних змін, і це тільки початок. Розширення співпраці Microsoft з OpenAI, запуск нового пошукового ядра Bing на базі AI, а також представлення нового поняття — ’помічників’ (copilots), — все це ключові моменти року!

Microsoft achieves first milestone towards a quantum supercomputer — Microsoft Azure Quantum Blog — у статті також докладно розглядаються три рівні реалізації квантових обчислень: основний, стійкий та масштабований. Кожен рівень характеризується своїми особливостями та вимогами до реалізації квантових систем.

Introducing Azure Quantum Elements — це новий інструмент, який поєднує передові технології, включаючи високопродуктивні обчислення, штучний інтелект та квантові обчислення. Іншими словами, він якби змішує ці три потужні інструменти разом, щоб допомогти вченим легше і швидше проводити свої дослідження та зробити відкриття. Припустимо, ви досліджуєте новий матеріал для батареї. З Azure Quantum Elements ви можете швидко провести безліч різних експериментів та симуляцій, використовуючи високопродуктивні обчислення. Потім штучний інтелект може допомогти аналізувати отримані дані, виявляти патерни та передбачати результати. Нарешті, квантові обчислення можуть бути використані для вирішення особливо складних задач, які неможливо вирішити за допомогою звичайних комп’ютерів. В результаті, за допомогою Azure Quantum Elements процес дослідження та розробки може бути значно прискорений.

Mobile

5 .NET MAUI Features for Building Great Desktop Apps — окрім створення кросплатформних мобільних застосунків за допомогою .NET MAUI, можна також створювати прекрасні десктопні застосунки для Windows і Mac.

Adding Video in .NET MAUI Apps with the New MediaElement — Microsoft випустила MediaElement для .NET MAUI — елемент, який дозволяє відтворювати аудіо і відео в застосунках. Він був перероблений з нуля, особливо для Android. Для використання потрібно встановити NuGet package і додати всього декілька рядків коду.

How to develop an MAUI/Xamarin app with MDM support, including Intune — набір сервісів та технологій, які забезпечують контроль та захист мобільних пристроїв, які використовуються організацією та її співробітниками.

Xamarin.Forms and Essentials now target Android 13 (in Preview) — Xamarin Blog — давно не було новин про Xamarin, але все ж команда продовжує працювати та підтримувати платформу! На серпень 2023 року нові застосунки для Android, поширювані через Google Play Store, мають бути спрямовані, як мінімум, на Android 13. У зв’язку з цим, Xamarin.Forms та Xamarin.Essentials були оновлені для підтримки MonoAndroid13 за замовчуванням.

.NET Upgrade Assistant Now Helps Developers Move Off of Xamarin, UWP — Microsoft оголосила, що .NET Upgrade Assistant для Visual Studio тепер підтримує міграцію застосунків з деяких застарілих фреймворків на новіші та сучасніші. Окрім інших можливостей, .NET Upgrade Assistant підтримує міграцію проєктів з Xamarin Forms на .NET MAUI та з Universal Windows Platform (UWP) на WinUI.

Upgrading from Xamarin to .NET MAUI | OD119 — у сьогоднішньому відео Медді Монтакіла розповість про те, як максимально спростити перехід з Xamarin на .NET MAUI.

What’s New with .NET MAUI featuring Maddy Montaquila — що нового в .NET MAUI? Які зміни незабаром з’являться на платформі та в .NET 8? Про це ви дізнаєтесь з інтерв’ю Медді Монтакіла, керівника програми Microsoft у команді .NET MAUI.

Announcing the .NET MAUI extension for Visual Studio Code — Visual Studio Blog — Microsoft заявляє про випуск першої попередньої версії розширення .NET MAUI, яке у поєднанні з C# Dev Kit надає інструменти, необхідні для розробки кросплатформних мобільних та настільних застосунків за допомогою Visual Studio Code. Розширення .NET MAUI дозволяє розробляти та налагоджувати застосунки на пристроях, емуляторах та симуляторах з Visual Studio Code.

Післяслово

Щоб не пропустити нічого цікавого до виходу наступного випуску — стежте за новинами про .NET, Azure та Xamarin в Telegram. Всі головні публікації DOU читайте тут.

👍ПодобаєтьсяСподобалось15
До обраногоВ обраному12
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Є якась інформація чи планує майкрософт оптимізувати використання .NET для IoT девайсів. Наприклад NativeAoT якось на це впливає?

Ще один напрямок, який активно розвивається — запуск .net коду в WebAssembly середовищі поза межами браузера. Ось огляд можливостей станом на весну 2023: www.youtube.com/...​channel=stevensandersonuk .
Цікаво було б побачити цю тему в майбутніх дайджестах.

Мейнтейнер Moq вирішив, що опенсорсу платять мало і вкинув так собі код в останню версію. Цікава драма та нагадування, що депенденсі треба контролювати.
github.com/moq/moq/issues/1372

Код вже прибрали — як виявилося, він не працює на Apple. Але особисто я все одно мігрую на NSubstitute.

Мигрировал тесты одного из сервисов. It just works

Це ж очевидно, що в разі використання стороннього коду в проді, ніколи не можна брати автоматом HEAD або якусь гілку. Тільки конкретний хеш.

Оновив на лейтест-воно вже з дев машини стукало на сторонній сервер

Это он хотел отправить «Охрана отмена»

Підписатись на коментарі