Aplikacje .NET na zamówienie i backend w Node.js
Backend aplikacji, czyli reguły biznesowe, uprawnienia i dane, budujemy w .NET albo Node.js z bazą PostgreSQL. Na .NET działają nasze platformy Offer Exchange i Service Quotes. Node.js z TypeScript wybieramy, gdy cała aplikacja ma powstać w jednym języku albo działać w funkcjach chmurowych.
Kiedy backend ma największe znaczenie
-
Wiele ról i uprawnień w jednym systemie
Klient, pracownik, menedżer i administrator widzą różne dane i wykonują różne operacje. Uprawnienia sprawdza backend przy każdym żądaniu, a nie tylko interfejs.
-
Reguły, od których zależą pieniądze
Wyceny, rabaty, limity subskrypcji i ważność licencji muszą liczyć się zawsze tak samo. Takie reguły zamykamy w backendzie i obejmujemy testami automatycznymi.
-
Dane, z których trzeba robić raporty
Relacyjna baza PostgreSQL pilnuje spójności zamówień, klientów i płatności. Z tych samych danych bez eksportów przygotujemy zestawienia dla zarządu.
-
Inne programy korzystają z Twoich danych
Projektujemy REST API z dokumentacją, wersjami i kontrolą dostępu. Aplikacje zewnętrzne korzystają z danych, nie znając wewnętrznej budowy systemu.
Kiedy wybrać .NET, kiedy Node.js, a kiedy coś innego
.NET polecamy dla systemów, w których najwięcej pracy wymaga logika: wyceny, zamówienia, uprawnienia wielu ról, rozliczenia. To dobry wybór także wtedy, gdy firma ma już inne aplikacje w .NET albo zamierza uruchomić system w Microsoft Azure. Node.js polecamy dla aplikacji, w których interfejs w Next.js i backend ma rozwijać jeden zespół, oraz dla backendu w funkcjach chmurowych.
Osobnego backendu czasem w ogóle nie potrzeba. Przy prostej aplikacji z kilkoma formularzami logikę serwerową mieści sam Next.js. Gdy zespół klienta pracuje w innym języku, na przykład w Javie albo PHP, mówimy otwarcie, czy przejmiemy taki kod, czy lepiej zostawić go zespołowi, który go zna.
Jak zbudowany jest backend w naszych projektach
Backend udostępnia interfejsowi REST API opisane w OpenAPI. Każde żądanie przechodzi przez sprawdzenie tożsamości i uprawnień, a dopiero potem trafia do reguł biznesowych. Dane zapisujemy w PostgreSQL przez warstwę dostępu do danych, a każdą zmianę struktury bazy zapisujemy jako migrację w repozytorium. Zadania, które trwają dłużej, na przykład wysyłkę powiadomień albo generowanie dokumentów, przekazujemy do kolejki, żeby użytkownik nie czekał na ich zakończenie.
Tak zbudowane API mogą wykorzystać także inne programy. Jak łączymy aplikację z systemami faktur, CRM i płatnościami, opisujemy na stronie integracje systemów. Co zyskuje firma na systemie dopasowanym do własnego procesu, przeczytasz na stronie aplikacje webowe dla firm.
Co robimy
- Projektujemy model danych i relacje w bazie PostgreSQL
- Budujemy backend w ASP.NET Core z Entity Framework Core
- Budujemy backend i funkcje chmurowe w Node.js i TypeScript
- Projektujemy REST API z dokumentacją OpenAPI i kontrolą dostępu
- Wdrażamy logowanie, role i uprawnienia sprawdzane po stronie serwera
- Piszemy testy automatyczne dla reguł biznesowych i API
- Planujemy migracje bazy danych, które nie wymagają przerwy w działaniu aplikacji
Dla kogo
- Planujesz system z wieloma rolami użytkowników i regułami biznesowymi
- Twoja aplikacja ma udostępniać dane innym programom przez API
- Masz aplikację w .NET i potrzebujesz zespołu, który przejmie jej rozwój
- Chcesz, żeby interfejs i backend powstały w jednym języku, TypeScript
.NET dla systemów z rozbudowaną logiką
ASP.NET Core wybieramy dla systemów, w których jest dużo reguł i ról. Platforma Offer Exchange obsługuje zapytania ofertowe, porównania ofert, zamówienia i subskrypcje. Service Quotes prowadzi zlecenie przez przydział pracownika, wycenę i płatność. W obu systemach backend .NET pilnuje uprawnień i reguł, a interfejs w Next.js pokazuje wynik. Silne typowanie C# i testy pozwalają rozwijać taki system latami bez obawy, że zmiana w jednym miejscu zepsuje inne.
- Backend .NET w Offer Exchange i Service Quotes
- Entity Framework Core i migracje bazy w repozytorium
- Wydajność .NET przy dużej liczbie żądań
Node.js i TypeScript w całej aplikacji
Gdy interfejs powstaje w Next.js, backend w Node.js pozwala pisać całą aplikację w TypeScript i współdzielić typy danych między obiema częściami. Node.js dobrze sprawdza się też w funkcjach chmurowych, które szybko startują i obsługują pojedyncze zadania. Taką funkcję AWS Lambda w Node.js i TypeScript zbudowaliśmy do obsługi formularzy na nowych stronach Conetso.
- Wspólne typy danych dla interfejsu i backendu
- Funkcje chmurowe o krótkim czasie startu
- Jeden zespół rozwija całą aplikację
PostgreSQL jako podstawa danych
Wszystkie nasze realizacje przechowują dane w PostgreSQL. Ta baza pilnuje relacji i transakcji, więc zamówienie nie zapisze się bez klienta, a płatność bez zamówienia. Obsługuje też dane w formacie JSON i wyszukiwanie pełnotekstowe, co w wielu projektach eliminuje potrzebę osobnej bazy. PostgreSQL działa jako usługa zarządzana w każdej z dużych chmur, więc nie wiąże aplikacji z jednym dostawcą.
- Transakcje i relacje chroniące spójność danych
- Dane JSON i wyszukiwanie pełnotekstowe w jednej bazie
- Dostępny jako usługa zarządzana w AWS, Azure i Google Cloud
Jak pracujemy
-
Model danych
Rozpisujemy dane, relacje i role użytkowników. Ustalamy, które reguły biznesowe ma pilnować backend.
-
Projekt API
Opisujemy punkty API w OpenAPI, zanim powstanie kod. Interfejs i backend mogą wtedy powstawać równolegle.
-
Budowa i testy
Programujemy backend i obejmujemy testami automatycznymi reguły, od których zależą pieniądze i uprawnienia.
-
Wdrożenie i migracje
Wdrażamy backend w kontenerze, a każdą zmianę bazy przeprowadzamy migracją zapisaną w repozytorium.
Doświadczenie
- Backend platform Offer Exchange i Service Quotes zbudowaliśmy w .NET Core z bazą PostgreSQL.
- System INVENTA Licenses z REST API dla aplikacji VR zbudowaliśmy w TypeScript z bazą PostgreSQL.
- Formularze na nowych stronach Conetso obsługuje funkcja AWS Lambda w Node.js i TypeScript.
Realizacje
-
Offer Exchange
Platforma SaaS do zakupów firmowych, która łączy w jednym miejscu zapytania ofertowe, porównanie ofert od handlowców i zamówienia.
-
Service Quotes
Aplikacja dla firmy usługowej z klientami B2B. Obsługuje zlecenia, przydział pracowników, wycenę wykonanej usługi i płatność online.
-
INVENTA Licenses
System do zarządzania użytkownikami i licencjami aplikacji VR do szkolenia pracowników, z panelami klienta, dystrybutora i administratora.
Najczęstsze pytania
.NET czy Node.js?
.NET wybieramy dla systemów z rozbudowaną logiką biznesową i wieloma rolami, które będą rozwijane przez lata, oraz dla aplikacji uruchamianych w Microsoft Azure. Node.js wybieramy, gdy cała aplikacja ma powstać w TypeScript albo backend ma działać w funkcjach chmurowych. Przy wielu projektach obie technologie się sprawdzą, a decyzję podejmujemy razem na konsultacji.
Czy przejmiecie aplikację napisaną w starszej wersji .NET?
Tak. Po przeglądzie kodu oceniamy, ile pracy wymaga przeniesienie aplikacji z .NET Framework do aktualnej wersji .NET. Najczęściej proponujemy migrację etapami, moduł po module, żeby aplikacja działała przez cały czas.
Dlaczego PostgreSQL, a nie inna baza?
PostgreSQL jest bezpłatny, nie wymaga licencji i działa jako usługa zarządzana w każdej dużej chmurze. Obsługuje relacje, transakcje, dane JSON i wyszukiwanie pełnotekstowe. Inną bazę proponujemy, gdy wymaga tego istniejący system albo sposób korzystania z danych, na przykład DynamoDB w aplikacjach serverless.
Zobacz także
-
Aplikacje webowe dla firm
Budujemy systemy do obsługi zleceń, wycen i zamówień z osobnymi panelami dla klientów, pracowników i menedżerów.
-
Integracje systemów i automatyzacja procesów
Łączymy CRM, faktury, płatności online i systemy dziedzinowe, żeby dane nie były przepisywane ręcznie.