Github tag 0.7.0.0
OK, made a few more steps forward. Firstly, specifying to run the project 'out of process' discussed in last post, worked a treat in terms of running the Startup class methods at application startup and not at first access. All that was required was adding this to the .csproj file...
I left the logic to load the MINST images into the DI services collection in a protected method in the startup class. There was a lot of previous musing about putting this in an implementation of IStartupFilter... but as far as I can tell, these startup filters are run later in the startup process, and the DI services collection is accessible to read, but you can't add to it. Currently all the code concerning pre-caching of MNIST images is encapsulated in the Startup.SetupMnistImageDataStructures() method, and I'm happy with that.
In addition, I've made the following changes...
I wanted to document all of the next steps / outstanding things, as there are quite a few of them, and writing them here gives them some permanency...
Item | Notes |
---|---|
Cleanup of MnistImageController routes | Don't like having consecutive numbers in Label/{label}/{index}... because looking at an actual URL (not the code), how do you know the meaning of the 'index' parameter? Something like Label({label})/{index} could be an option, but also has some drawbacks. I'm starting to lean towards using OData for these type of 'secondary' query/filtering of a resource endpoint. |
Versioning | Reviewing the suggestions in the MS API Guidelines, and I expect I'll use the ASP.NET API Versioning libraries. |
Logging | I reviewed the doco for the stuff built into ASP.NET Core and it looks pretty comprehensive, so will likely go with that. |
Metrics | Likely I'll use my own ApplicationMetrics project for server-side metrics capture. Doing this will also force me to update that project to .NET Standard. |
Pagination | Will probably tie in with the 'Cleanup of MnistImageController routes' mentioned above, as I can likely leverage OData filters to control the pagination and also help to cleanly define a continuation URL. |
Swagger | Want to have clean/detailed Swagger defined for the API surface. |
IMnistImageReader implementation for AWS S3 and/or Azure Blob Storage | To be ready for cloud deployment. |
Deployment | Get a basic automated deployment pipeline setup for AWS and/or Azure. |