I'm thrilled to announce, that this year I'm starting a newsletter about .NET 🥳
The first issue about C# 12 features is coming tomorrow on Friday
Feel free to subscribe if you want to get weekly news about .NET
See you tomorrow in your inbox☺️
https://t.co/KwsGYyPL6I
Released version 0.2.0 of Blazor.SVGAnimation to NuGet today. The package now supports Blazor Server as well. Apart from this, I also changed to use the event listener model from Blazor.DOM and deprecated some unnecessary methods.
#blazor#dotnet
Project: https://t.co/6odgZ5vL31
If you ever need to implement audit logging - EF has a shortcut.
Audit logging is the process of documenting activity within the software systems.
Audit logs record the events, who the current user was, and the impacted entity. The logs can be as detailed as you need them to be.
A simple example is tracking when an entity changes. This information can be in the same database table.
For more detailed audit logs, you may want a dedicated database table.
EF Core's change tracker can help you implement audit logging. You can determine which entities changed and the before and after values. After that, it's straightforward to write that to the database.
I used EF interceptors to implement this in the past.
Here's an in-depth explanation of how to use them: https://t.co/ggOvzcTxVx
Dependency Inversion + DDD = Domain-centric architecture
A few famous examples are:
- Hexagonal (ports and adapters)
- Onion architecture
- Clean architecture
Clean architecture places the business logic and domain model at the application center. Use cases are also part of the core of the application. They orchestrate the domain model and tell it what to do.
It's interesting how the dependencies between layers work. The inner layers define abstractions (interfaces). The outer layers implement these interfaces. At run time, the concrete implementations replace the interfaces. This allows you to hide the internals of things like SMS messaging, email, caching, etc.
Another benefit is improved testability. The application core doesn't depend on infrastructure. So, it's easy to write automated unit tests for this layer.
However, I find myself moving towards a more feature-driven approach.
Similar to what Vertical Slice Architecture proposes.
I will also break the dependency rule and introduce EF/Dapper in the Application layer.
But the thing is, I know how to maintain this kind of system.
I know when to introduce an abstraction or refactor the use case.
You can only learn this from experience and building many systems.
So don't obsess over architecture too much.
Having the freedom to make the right architectural choice is what matters.
P.S. If you liked this, consider joining The .NET Weekly. I write about software engineering & architecture every Saturday.
Join 33,000+ engineers: https://t.co/M6og1UeWzm
When would you pick the Clean Architecture?
@cecilphillip This sounds like a great idea, I humbly submit my homebrew Aspire Environment Generator - its early days but I'm already finding it useful.
https://t.co/1vvgPB99bi
What is the cleanest way to get configuration values in .NET?
I use the Options pattern, and here's why you should know about it.
App configuration lives in environment variables or JSON files.
You can get individual values using the `IConfiguration` interface.
But this is error-prone and cumbersome, so I don't recommend it.
Instead, I use the Options pattern:
- Create a class to represent the settings
- Bind the class properties to application settings (JSON)
- Consume the Options pattern in my code using IOptions
You can also add data annotations to your settings class for simple validation. Or even implement complex validation rules with something like FluentValidation.
If you enjoyed this, you will love The .NET weekly newsletter. More than 33,000+ engineers already read it.
Subscribe here: https://t.co/xip45XpWuB
Are you using the Options pattern?
TechLead job specs often mention mentoring junior team members.
Does anyone work where this function has been elevated into a role of it's own?
Furthermore, has anyone any resources on mentoring juniors that they could link me to?
RT for reach pls. Thx :-)
Howdy, as part of my UX uni module I need together data on the last hotel you booked via a website or app, I've put together a quick survey which should take you five minutes to complete. https://t.co/cTNCZKtsJG
Announcing the preview of Cloud Services (extended support)—a new #Azure Resource Manager (ARM) based deployment model for Azure Cloud Services: https://t.co/3Zi61Wt1Iq
@madSimonJ I use a combination of Microsoft Family and Google Family tools, linking the kids accounts and setting their ages appropriately. Also ensure safe search is enabled in Chrome and use Microsoft Launcher on their Android devices. Its not perfect but it works.
@MartinKearn If you want more "fun" grab a Raspberry Pi 4, install Twister OS and have the look and feel of MacOS or Windows 10 with the power of Linux
https://t.co/1zzjTiZj2E
This is incredible engineering.
Next step:
Boston Dynamics's robotic control +
Tesla Autopilot's machine learning +
OpenAI's & DeepMind's self-play learning =
AGI dance party