Much tighter integration with Function Apps
There should be a much tighter integration between functions and logic apps.
You should be able to add a C# code block directly in the Logic App designer.
You configure this code block in the gui in the same way as any other action, by selecting the input parameters and so on.
The prototype "main function" should be partly automatically generated so it contains all the configured parameters and their correct data type.
There should be NOTHING here indicating that this has anything to do with either Logic apps or Function apps, it should just be a plain C# file.
This file and any plumbing needed should then automatically be hosted inside a Function App somewhere. This Function Apps environment should be part of the Logic Apps service and be hidden and inaccessible . It should just provide a runtime for this code block.
IMPORTANT: The code block has to be accessible in Visual Studio as a normal C# file.
The code block action should provide a way to reference external nuget packages, DLLs, and so on.
It should be possible to set a reference in Visual Studio to another project in the same solution, and automatically get the DLLS from the project included when you publish.
It should also be possible for visual studio to precompile the code block and just deploy the precompiled DLL.
The Logic App Service should precompile everything to real NATIVE code to minimize startup time.
Actually, it doesn't really matter if the Code block is actually hosted as a Function App, you can host it many other ways, the important thing here is tight integration, very low latency, and that it automatically scales with load.
I should not need to setup and maintain a who Function Apps instance just because I want to run a few lines of code.
With this kind of tight integration, there is no need for swagger, parameter parsing or anything like that, everything will be strongly typed and it will just work.
The only thing the developer needs to worry about is the business code in the function, not the plumbing and all the setup, maintenance, configuration that comes with setting up a Function app.
Also, worth mention, though it is kind of obvious, inside the code block you need to have access to configuration values from the Logic App. For example, if there is a connection to a storage account, then the StorageAccountName and the StorageAccountKey needs to be accessible from within the code block, how else would you interact with the storage inside the code block?
The strongly typed return value from the Code block should be used as any other return value from any other action in the Logic App
