DEV Community

loading...
Cover image for Loving C# 9 So Far

Loving C# 9 So Far

sharpninja profile image The Sharp Ninja ・2 min read

Either I'm a genius or I'm a fool. Not sure which yet, but I've decided to tackle a glaring hole in the .Net landscape and have started on a really big project that embeds another really big project.

The Really Big Project Is...

An open source replacement for MS Access. Let's face it, Access has stuck around for a long time because it's really useful. But every day it feels older and older. Under the hood it hasn't evolved very quickly. Programming is still done with Visual Basic for Applications and GUIs still use the basic Win32 controls. Reports still look great, but the rest of the user experience is trapped in 1997.

I've decided to call my new project AppDat. I considered Excess as well, but that might be inviting trouble over for dinner, especially when spreadsheets are added to it.

AppDat is written for .Net 5.0 and up. The runtime will be packaged with the app, so no worries about users having it installed already. This enables us to use C# 9 and all of it's awesomeness. C# 9 introduces immutable Records and more pattern matching awesomeness. These are vital features for an Access replacement.

Access, at it's heart, is just a GUI sitting on tope of the Jet database engine. That leads us to...

The Other Really Big Project

.Net is over 20 years old. In that time it has been used with every database system known to mankind thanks to ADO.Net. If want to work with data inside your app, things are a bit more limited. The only major choices here are SQLite and SQL Server Compact Edition (which is all but retired). If a person wanted to customize either of these for their app, they better bring their Hacker PHd because SQLite is written in some pretty gnarly C and SQL CE is not open source.

So I am building an in-process RDBMS with C# 9. It's designed from the ground up to utilize the biggest and best features of C# 9 to accomplish things very easily that previously would have required much more careful consideration, planning and testing. Records are the killer feature that made it possible for me to even consider this project.

Open Source

AppDat is open source. I haven't definitively picked a license yet, but I'm leaning towards the MIT License. I've got a very rough first prototype of a table row working which heavily leverages immutability. The project is on GitHub. If you want to help with anything then let me know!

Discussion (10)

pic
Editor guide
Collapse
zoedreams profile image
☮️✝️☪️🕉☸️✡️☯️

c# is great if you can get over the .NET thing. visual studio code is a very nice modern IDE to which is way cheaper and personally i prefer over the expensive IDEA

Collapse
sharpninja profile image
The Sharp Ninja Author • Edited

Visual Studio 2019 Community is also free and supports all features of Pro and Enterprise except architectural model and advanced debugging (like playing back snapshots of a debug session).

BTW, what .net thing does one need to get over?

Collapse
zoedreams profile image
☮️✝️☪️🕉☸️✡️☯️

i use visual studio enterprise as well. Depends on what i am using it for.

Having to include .net runtimes to ship with your code or making sure its running. Ive had issues with portability onto various linux and unix environments.

Thread Thread
sharpninja profile image
The Sharp Ninja Author

Why not include a bash script that tests the environment and launches the official install script to install a copy of the runtime if necessary?

Thread Thread
zoedreams profile image
☮️✝️☪️🕉☸️✡️☯️ • Edited

You can and I do, and sometimes on headless installs on lots of servers it doesn't work all the time, which means you need to preload the system with .NET. Also I have worked for a few organization where they did not allow .NET because of licensing and they paid X $ for oracle licensing and vice verses. Node is a bit easier because it is open source and can bundle the runtimes in with the release which works a lot like the cpp ecosystem.. like electron for example. Organization licensing can be Dumb sometimes.

However Microsoft has realize this too and has been migrating over to open source after acquiring GitHub. Which now .NET is open source so technically you can compile it directly on the end system, which yes you can py / bash it.

Don't get me wrong, i love .NET i think its. fantastic framework for authoring robust software quickly. I am just happy the rest of the world is starting to see this too.

Thread Thread
sharpninja profile image
The Sharp Ninja Author

I don't understand your point about licensing .net 5.0. Can you elaborate?

Thread Thread
zoedreams profile image
☮️✝️☪️🕉☸️✡️☯️

The latest version is not, but previous versions were not open source which required enterprise licensing from microsoft. Like i mention in my last reply microsoft has migrated over to open source licensing which is not an issue.

Thread Thread
sharpninja profile image
The Sharp Ninja Author

I believe that Dotnet Core has always been completely free and open source. If I'm wrong please let me know.

Collapse
sirseanofloxley profile image
Sean Allin Newell

Yikes! Tall order; may the transactions and acid be with you good sir!

Collapse
sharpninja profile image
The Sharp Ninja Author

Supporting TransactionScope is fundamental to my goals. One audience I want to target is data scientists who collect data from various sources and process them in real time and write results into AppDat. Transactions will be a must.