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.
Czym dokładnie jest Gridify?
Gridify to biblioteka typu „paged-filtering engine”, która pozwala na mapowanie stringów (pochodzących np. z parametrów URL) bezpośrednio na zapytania LINQ. Współpracuje ona natywnie z IQueryable, co oznacza, że świetnie dogaduje się z Entity Framework Core, AutoMapperem czy czystymi kolekcjami w pamięci.
Głównym celem Gridify jest eliminacja tzw. „boilerplate code” – zamiast pisać dziesiątki instrukcji if sprawdzających, czy użytkownik chce sortować po dacie czy filtrować po nazwie, przekazujesz jeden obiekt konfiguracji.
Dlaczego warto ją wybrać?
- Wydajność: Gridify jest zoptymalizowane pod kątem szybkości i niskiego zużycia pamięci.
- Łatwość użycia: Integracja z Web API sprowadza się często do jednej linijki kodu.
- Bezpieczeństwo: Biblioteka posiada wbudowane mechanizmy mapowania (GridifyMapper), które chronią przed atakami typu „Mass Assignment” – użytkownik może filtrować tylko po tych polach, na które mu pozwolisz.
- Elastyczność: Obsługuje złożone operatory logiczne (AND, OR), nawiasy oraz filtrowanie relacji (nested properties).
Podstawowy przykład użycia
Wyobraźmy sobie, że budujemy API dla sklepu internetowego. Zamiast budować logikę filtrowania od zera, wystarczy zainstalować pakiet NuGet:
dotnet add package Gridify
Następnie w kontrolerze możemy użyć metody rozszerzającej ApplyFiltering:
[HttpGet]
public ActionResult<PagingDto<Product>> GetProducts([FromQuery] GridifyQuery query)
{
// Gridify automatycznie sparsuje query string i nałoży filtry na bazę danych
var data = _context.Products.Gridify(query);
return Ok(data);
}
Dzięki temu użytkownik może wysłać zapytanie URL typu: GET /products?filter=price>100,category=electronics&sort=name&page=1&pageSize=20
GridifyMapper – pełna kontrola
Jedną z najmocniejszych stron Gridify jest GridifyMapper. Pozwala on na zdefiniowanie aliasów dla pól bazy danych. Jeśli w bazie mamy kolumnę First_Name_In_Database, możemy udostępnić ją użytkownikowi pod prostym hasłem name.
Podsumowanie
Gridify to doskonały wybór dla programistów .NET, którzy cenią sobie zasadę DRY (Don’t Repeat Yourself) i chcą dostarczyć zaawansowane funkcje filtrowania w rekordowym czasie. To narzędzie, które wypełnia lukę między prostymi listami a skomplikowanymi rozwiązaniami raportowymi.