.NET og C#
Backend-tjenester i C# og .NET — bygget av utviklere som har jobbet i en mikrotjenesteplattform med flere hundre prosjekter bak en nasjonal lojalitets- og netthandelsløsning.

Verktøy og rammeverk vi bruker
- C#
- .NET 8 og .NET 10
- ASP.NET Core
- Azure Functions (isolated worker og Durable Functions)
- .NET Aspire
- YARP
- Entity Framework Core
- Dapper
- DbUp
- Polly
- MediatR
- FusionCache
- Serilog
- OpenTelemetry
- Duende IdentityServer
- Kafka (Confluent)
- Elasticsearch
- Redis
- Azure SQL
- Cosmos DB
- NUnit og xUnit
- NSubstitute
- Testcontainers
- WireMock.Net
- k6
- OpenAPI, Kiota og NSwag
.NET-utvikling for tjenester som må virke hver dag
En god backend merkes mest når den ikke merkes. Brukerne skal kunne logge inn, legge varer i handlekurven, velge leveringstidspunkt og bruke kupongene sine uten å tenke på hvilke tjenester som snakker sammen bak. Vi har jobbet i en stor mikrotjenesteplattform i C# og .NET med flere hundre prosjekter bak en nasjonal lojalitets- og netthandelsløsning — medlemmer, handlekurv, ordre, leveringsvinduer, kuponger og søk.
Vi har også bygget mindre, avgrensede verktøy. Ett eksempel er en tjeneste i .NET 10 som synkroniserer åpningstider for butikker til Google Business Profile og Apple Maps, slik at kundene ser riktige tider der de faktisk leter.
Arkitekturvalg i C#- og ASP.NET Core-prosjekter
Noen valg tar vi tidlig, fordi de er dyre å endre senere:
- Isolated worker for Azure Functions. Det er modellen Microsoft anbefaler for nye funksjoner, og den gir samme .NET-versjon, middleware og dependency injection som resten av kodebasen.
- Genererte klienter fra OpenAPI. Kiota eller NSwag gir typede klienter, slik at brudd i en kontrakt oppdages ved bygging og ikke i produksjon.
- Robusthet ved grensene. Polly-policyer og caching legges rundt kall til andre systemer, ikke spredt utover domenelogikken.
- Ekte databaser i testene. Testcontainers fremfor in-memory-databaser, fordi SQL, transaksjoner og migreringer skal testes slik de faktisk kjører.
- Eksplisitte migreringer. DbUp når teamet vil eie SQL-en selv, Entity Framework Core-migreringer når modellen styres fra koden.
Vi er også forsiktige med lag som ikke betaler for seg. MediatR og egne abstraksjoner kan rydde i store kodebaser, men i en liten tjeneste er et rett frem ASP.NET Core-endepunkt ofte lettere å lese og feilsøke.
ASP.NET Core, Azure Functions og .NET Aspire
Mange .NET-løsninger består av en blanding av API-er, bakgrunnsjobber og hendelsesflyt. Vi bruker ASP.NET Core og YARP for API-er og gateways, Azure Functions og Durable Functions for hendelsesdrevne prosesser og langvarige arbeidsflyter, og .NET Aspire for å gjøre lokal utvikling med flere tjenester enklere. Data lagres i Azure SQL, Cosmos DB eller Elasticsearch ut fra hvordan de skal brukes, og meldinger flyter gjennom Kafka der systemene må være løst koblet.
Vi bidrar også i åpen kildekode i C#, blant annet med en plugin for BTCPay Server som lar butikker motta Lightning-betalinger direkte til en Bare Bitcoin-konto.
Typiske oppdrag
Nye API-er og mikrotjenester
Vi designer og bygger tjenester i ASP.NET Core og Azure Functions med tydelige kontrakter, OpenAPI-dokumentasjon og tester fra første dag.
Modernisering til .NET 10
Vi oppgraderer kodebaser fra eldre versjoner som .NET Core 3.1 til .NET 10, steg for steg og uten å stoppe videreutviklingen.
Integrasjoner og hendelsesflyt
Vi kobler systemer sammen med Kafka, køer og eksterne API-er, med retry, caching og overvåking som tåler feil i andre ledd.
Senior .NET-kapasitet i teamet
Erfarne utviklere som bidrar i eksisterende team med arkitektur, kodegjennomgang, testing og drift.
Relevant erfaring
Prosjekter og åpen kildekode der teknologien er brukt i praksis.
Åpen kildekode
- btcpayserver-plugin-barebitcoin
BTCPay Server-plugin i C#/.NET for å motta Lightning-betalinger til en Bare Bitcoin-konto.
Vanlige spørsmål
Kan dere hjelpe oss å oppgradere til en nyere .NET-versjon?
Ja. Vi har modernisert tjenester fra .NET Core 3.1 til .NET 10. Vi kartlegger avhengigheter og risiko først, og oppgraderer i små steg som kan settes i produksjon fortløpende.
Jobber dere med Azure Functions eller ASP.NET Core?
Begge. Azure Functions passer godt for hendelsesdrevne jobber og integrasjoner, mens ASP.NET Core ofte er riktig for API-er med jevn trafikk. Vi velger ut fra belastning, kostnad og hvordan teamet drifter løsningen.
Hvordan tester dere .NET-tjenester?
Med enhetstester i NUnit eller xUnit, integrasjonstester mot ekte databaser med Testcontainers, simulerte eksterne API-er med WireMock.Net og lasttester med k6.
Kan dere gå inn i en stor eksisterende kodebase?
Ja. Vi har jobbet i en plattform med flere hundre .NET-prosjekter og er vant til å sette oss inn i etablerte konvensjoner før vi foreslår endringer.
Hvor raskt kan dere starte?
Ta kontakt med en kort beskrivelse av behovet, så svarer vi med en vurdering av omfang og når vi kan bidra.
Relaterte teknologier
Del av tjenesten: Backend og integrasjoner
TypeScript og Node.js
Backend-tjenester, integrasjoner og interne verktøy i TypeScript og Node.js, fra REST-API-er til automatisering av bygg og release.
Les merRust-utvikling
Rust-backends med Axum og Tokio for langvarige, sikkerhetskritiske tjenester, med tester, Docker og pakking for selvhosting.
Les merGo-utvikling
API-er, bakgrunnsjobber og biblioteker i Go, med vekt på enkel drift og forutsigbar ytelse.
Les merTrenger dere hjelp med .NET og C#?
Fortell kort om produktet, teamet eller systemet. Vi svarer med et konkret forslag til neste steg — enten det er en hel leveranse, senior kapasitet i teamet eller tekniske råd.
- Telefon
- 920 50 946
- Sted
- Oslo, Norge
