VulCode

C# i .NET: co w nim budujemy i dlaczego

C# z Avalonią to nasz wybór na natywne aplikacje desktopowe na Windows, macOS i Linux, a .NET do bibliotek, emulatorów i pluginów do gier na silniku Unity.

C# i .NET na prawdziwych zrzutach

Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.

Pulpit operatora w aplikacji Flaem: sprzedaż, przychód i węzły

Flaem: aplikacja desktopowa

.NET 6, Avalonia 11 i MVVM, natywny program zamiast Electrona.

Plazer na komputerze: lista rozmów, czat i profil rozmówcy

Plazer: aplikacja desktopowa

Natywny klient w Avalonii: serwery, kanały, role, rozmowy głosowe i wiadomości na żywo.

Kiedy C# i .NET, a kiedy coś innego

Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.

Wybieramy C# i .NET

Aplikacje na trzy systemy

Avalonia daje jeden kod na Windows, macOS i Linux, a kontrolki rysuje Skia tą samą ścieżką na każdym systemie. Na tym stoją aplikacje desktopowe Flaem i Plazera.

Program otwarty przez cały dzień

Administrator ma panel Flaem otwarty obok konsoli i gry. Bez silnika przeglądarki w środku program startuje szybko, ma własną ikonę na pasku, skróty systemowe i dostęp do plików z dysku.

Rdzeń oddzielony od okna

Logika siedzi w bibliotece .NET, która nic nie wie o interfejsie, a widok spina z nią MVVM z CommunityToolkit. Testy xUnit sprawdzają rdzeń bez otwierania okna.

Pluginy do gier na Unity

nCatalogue dla SCP: Secret Laboratory zbiera statystyki graczy, łączy konta z Discordem i daje komendy administracyjne na Discordzie. Gra jest napisana w C#, więc plugin z LabAPI i Harmony wchodzi wprost w jej kod.

Emulatory i biblioteki z czystym rdzeniem

chip8-sharp sprawdzamy na ROM-ach testowych, a gameboy-sharp ma rdzeń bez interfejsu. Taki rdzeń działa w programie, w teście i w cudzym projekcie, który go wepnie.

Narzędzia dla administratorów

vantage steruje Dockerem w homelabie i sprawdza usługi po HTTP i TCP. CancellationToken w .NET odróżnia przekroczony czas sprawdzenia od zamknięcia programu, więc pulpit nie zgłasza fałszywych awarii.

Wybieramy coś innego

Strony internetowe

Strony i panele w przeglądarce piszemy w TypeScripcie z prerenderem. Blazor w WebAssembly pobiera przy pierwszym wejściu środowisko .NET, a strona ma pokazać treść od razu.

Aplikacje na telefon

Flaem i Plazer mają na telefonach osobne aplikacje w Kotlinie i Swifcie. Widżety, powiadomienia i gesty działają wtedy dokładnie tak, jak oczekuje system.

Interfejs wspólny ze stroną

Gdy program ma być tym samym interfejsem co strona, budujemy go w Rust i Tauri z kodu webowego. Tak powstało studio, a Avalonię wybieramy, gdy interfejs ma być natywny.

Agent na serwerach klientów

Samodzielne wydanie .NET zawiera w środku całe środowisko uruchomieniowe. Agenty Flaem w maszynach klientów są w Go, jako małe pojedyncze pliki.

Kryptografia dla wielu platform

Szyfrowanie Plazera musi działać w przeglądarce, na telefonach i na komputerze jako ten sam kod. Dlatego jest w Ruście, a program w C# go wywołuje, zamiast pisać kryptografię od nowa.

Samodzielny bot albo skrypt

Boty Discord i skrypty diagnostyczne piszemy w Pythonie, bo są gotowe szybciej i poprawia się je bez kompilacji. Bota w C# robimy wtedy, gdy jest częścią pluginu do gry i dzieli z nim kod.

C# i .NET w porównaniu, punkt po punkcie

Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.

Aplikacja desktopowaC# i AvaloniaElectron

Rozmiar programu

Mniejszy, bez Chromium
Większy, z całą przeglądarką

Wspólny kod ze stroną

Nie
Tak

Natywne odczucie

Bliżej systemu
Jak strona w oknie

Pamięć przy pracy przez cały dzień

Jeden proces bez silnika przeglądarki
Kilka procesów Chromium

Dostęp do plików i systemu

Wprost z .NET
Przez proces główny Node i komunikację z oknem

Aktualizacje bezpieczeństwa

Dotyczą Twojego kodu i bibliotek
Każda łatka Chromium wymaga nowego wydania

Ludzie do rozwoju

Programiści .NET
Każdy programista webowy

C# w całym naszym kodzie

Ile linii napisaliśmy w C# i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.

162 872
linii napisanych w C#
3,0%
wszystkich linii, które napisaliśmy
8
repozytoriów z kodem w C#
5.
miejsce wśród 26 języków

Biblioteki, na których stoją te projekty

Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.

Role serwera w Plazerze: uprawnienia przełączane osobno dla każdej roli
  • Avalonia 11

    Interfejs na Windows, macOS i Linux.

  • CommunityToolkit.Mvvm

    Wzorzec MVVM bez ręcznego kodu.

  • xUnit

    Testy logiki w osobnym projekcie.

  • LabAPI, Harmony, Discord.Net

    Pluginy do SCP: Secret Laboratory i ich boty.

Nasze zmiany w cudzych projektach w C#

11 przyjętych zmian w 7 repozytoriach. Opiekunowie tych projektów przejrzeli nasz kod i włączyli go do swojego.

Tydzień po tygodniu

Udział języków w naszych zmianach

Inne technologie i gdzie działa ich kod

Każda ma swoją stronę z projektami na prawdziwych ekranach i porównaniem z alternatywami.

Strony i aplikacje webowe

To, co widać w przeglądarce, i jego zaplecze.

Aplikacje mobilne

Natywne klienty Android i iOS.

Aplikacje desktopowe

Programy na Windows, macOS i Linux bez przeglądarki w środku.

Backend i infrastruktura

Rdzenie, agenty na serwerach i usługi czasu rzeczywistego.

Boty i automatyzacje

Discord, skrypty i monitoring.

Pytania o C# i .NET

Odpowiedzi o C# i .NET, naszych projektach i liczbach na tej stronie.

Projekt w C# i .NET?

Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.