One of my next projects will be to improve database performance and reduce server side CPU usage by replacing Entity Framework with F# SQLCommandProvider.
You should look into it. On the one hand it is some very high tech stuff, on the other hand it lets you write SQL by hand, so there is no performance overhead at runtime. A little demo gif, where you can see how you get an IDE-time error message due to a typo in the query. Fix it, then you get types created automagically for the data the query returns:
Thanks man. Yeah C# still has a special place in my heart and is still very useful as it was my first language that I learned in-depth. I rag on it sometimes, mostly because what I've heard from Casey and Jeff from RAD/HH, but C# does have its place for quite a lot these days. My personal take is this: If I do
want to use an OOP language, C# is the best I can get, and the cost of having to "orient" my code towards objects just needs to be weighed against what the end-goal is. For example, you can get a working app that does more complex stuff up and running a lot faster in C# where extreme performance optimization is not needed, whereas I find C to be more fun and more rewarding, but it's definitely not a "get it up quick" type of situation. Some people get all up i in arms about some of the rants Casey goes on, but the fact is, he's a game programmer and has always been
a game programmer, and the real-timeness of games certainly comes with a higher demand for performance/optimization than web applications. That said, of course this is not a rule and personally I wished there was more focus on performance in modern web frameworks.
I appreciate the suggestion, I've been looking for alternatives to Entity Framework. The thing that kills me most about this stuff as I mentioned prior is that I tend to spend countless hours fighting with stuff like Unity DI framework, Entity Framework, Owin, Identity/OAuth, etc... I feel like it's more justified at least with OAuth and Identity because let's be real, everyone knows to not try to roll your own encryption service unless you're a security guy, but a lot of the other dependencies as kinda iffy. That said, I haven't much tried .NET Core yet, and I know that it is going to be a lot more modular and light-weight. Have you any experience with ASP.NET
Honestly, my chief complaint with most the C# web dev stuff has nothing to do with C#, but I just feel like it's too bloated with ridiculous jargon like:
MyServiceProvider<IProvider,Provider> serviceProvider = new MyServiceProvider<IProvider,Provider>(appSettings.Create(new Application()) blah blah.
it's like, why does that need to be so cryptic, ya know? What it's doing is so simple, but the OOP like jargon from Microsoft is very "Microsofty" and makes it way overly complicated. Alright, I'm ranting. XD