Przejdź do treści

Artykuły

Gridify: Proste i Wydajne Filtrowanie Danych w .NET

  • przez

W świecie nowoczesnych aplikacji webowych, efektywne zarządzanie dużymi zbiorami danych jest kluczowym wyzwaniem. Użytkownicy oczekują błyskawicznego wyszukiwania, sortowania i stronicowania wyników, niezależnie od tego, czy przeglądają listę produktów, czy logi systemowe. Deweloperzy często stają przed wyborem: pisać powtarzalny kod filtrujący ręcznie, co jest żmudne i podatne na błędy, albo użyć ciężkich frameworków, które mogą negatywnie wpłynąć na wydajność.

Tutaj pojawia się Gridify – nowoczesna, lekka i niezwykle szybka biblioteka dla ekosystemu .NET, która zamienia skomplikowane operacje na danych w proste, czytelne zapytania.

Dowiedz się więcej »Gridify: Proste i Wydajne Filtrowanie Danych w .NET

Facet w .NET: Koniec z ręcznym pisaniem DTO i wolnym mapowaniem

  • przez

W świecie programowania w .NET, walka z tzw. „boilerplate code” (kodem powtarzalnym) to chleb powszedni. Każdy programista backendowy zna ten ból: masz encję domenową, ale potrzebujesz ją zwrócić z API. Tworzysz więc klasę DTO. Następnie piszesz mapper (lub konfigurujesz AutoMapper). Potem, przy zapytaniu do bazy danych, musisz pamiętać o projekcji (.Select()), aby nie pobierać całej bazy do pamięci.

Tutaj na scenę wkracza Facet – biblioteka, która wykorzystuje jedną z najpotężniejszych funkcji współczesnego C#: Source Generators.

Dowiedz się więcej »Facet w .NET: Koniec z ręcznym pisaniem DTO i wolnym mapowaniem

.NET Channels

  • przez

Wraz z nadejściem .NET Core 3.0 otrzymaliśmy do rąk potężne narzędzie – bibliotekę System.Threading.Channels. Mimo że od premiery minęło już sporo czasu, wiele zespołów wciąż polega na przestarzałych mechanizmach jak BlockingCollection lub ryzykownych operacjach na wątkach puli, by obsłużyć asynchroniczne przetwarzanie danych.

Channels to nowoczesna implementacja wzorca Producer-Consumer, zoptymalizowana pod kątem wysokiej przepustowości i niskiej alokacji pamięci. W połączeniu z wbudowanym w .NET mechanizmem IHostedService (BackgroundService), pozwala na tworzenie robustnych procesów przetwarzania w tle bezpośrednio w instancji aplikacji.

Dziś przejdziemy przez implementację, która zapewnia nie tylko asynchroniczność, ale także mechanizm Backpressure – chroniący Twój serwer przed zalaniem zbyt dużą liczbą zadań. Zobaczmy, jak to zrobić dobrze.

Dowiedz się więcej ».NET Channels

Wzorzec State w C#

  • przez

Wzorzec State pozwala obiektowi zmieniać swoje zachowanie w czasie działania w zależności od jego wewnętrznego stanu. Obiekt wygląda wtedy tak, jakby zmienił swoją klasę. W tym poście zaprezentuję jak go użyć w C# i kiedy jest on pomocny.

Dowiedz się więcej »Wzorzec State w C#