This is Microsoft's take on OpenAPI client code generation. My thoughts:
Not ready for prime time.
Generated code is confusing to utilize.
Passing custom validation tokens in headers is cumbersum.
I ran into type and other strange errors on client code generation.
Stick to Nswag for now. While their generated code sometimes needs massaging, in most cases it works well out of the box.
For a current contract (Mulesoft competitor) - I've been working on a slack bot as a demonstrations connector. Two great resources below including SlackNet which makes this quite easy. Frankly, the hardest part was setting up the Slack side of things.
My git repo implementing some of this stuff in C#
Other resources:
NPM reminds me so much of the RPM hell days when using RedHat Linux. I appreciate the ease of getting packages, but the dependencies can be a pain. Not to mention the number of packages that seem to just stop getting updates.
I'm going to give MS Blazor a shot next I think. It has some nice JSX like features and seems to be a stable, long term supported, and often updated project.
I love this thing!
Writing code in the browser has never been easier.
No need to deal with your own lexers and parsers.
Soooo many languages supported.
Combine this with the emit features of the Roslyn compiler and you can code, execute, and store byte code easily.
The fun part about JS is that there are so many ways to do things. The bad part of JS is choosing the best way.
Conditional rendering with React is straight forward in this respect.
I'm still thinking about which way I want to expose inference endpoints. Good details in this doc between gRPC and GraphQL. I might still just stick with basic Restful endpoints.
Ever had something that you always forget how to do? Mine is NHibernate a querying to a custom type. In this case I wanted high-level details on the files I'm binding to in/out tensor code. The GUI doesn't need all the binary data so why not just select the fields needed and proxy into a simpler type?
Alias to bean is the answer! Its funny to see "bean" as an homage to Hibernate which is Java based and the version to proceed the C# implementation.
https://crishantha.medium.com/handling-enospc-error-on-vs-code-9bfd89063705
Above is a good article on increasing the number of files VS Code can listen to for changes.
I've used multiple controllers in projects before with the non-core version of ASP.net on Windows. ASP.net Core on Linux threw me for a loop.
The SPA proxy needs to be made aware of added controllers.
The proxy doesn't seem to reflectively add all controllers in the controllers directory.
I'm probably doing something wrong but adding entries to the setupProxy.js finally gave me access to the controllers I added.
When I have more time I need to get better acquainted with the fancy routing options within Program.cs (Startup.cs is gone since .Net 7.0 I believe)
Setting up the dance between the web server and your browser to play nice with CORS can take a bit of work. Frustratingly things like improperly setup POST calls can manifest error reports that appear to be CORS related but aren't. For ASP.Net Core 6.0/70 seutp has changed a bit.
Startup.cs no longer exists and is replaced by Program.cs
CORS server side policies need to be applied when the web app is built, and then referenced when the app is run.
CORS policies can be added broadly to all calls (GET/PUT/POST/HEAD/DELETE) within a controller, or to specific controller endpoints via annotations.
.Net Core with NHibernate and SQLite is pretty darn easy.
To Note:
SQLite can make its DB file on the fly if the underlying DB file hasn't been made yet.
C# Fluent mapping of DB tables in NHibernate are nice. This makes writing type safe queries easy and has full SQL query expression available in C#. Proxying queries into custom types is darn easy to do as well. I have loved NHibernate for a loooong time!
Turning NHibernate on its head to generate a schema in (ANY) supported database (SQLite, PostgreSQL, SQL Server, etc) is easy. You collect the C# table mappings and then just ask NHibernate to generate a schema compatible with the targeted DB type.