WebFrameworkCSharpAPI 1.0.7

dotnet add package WebFrameworkCSharpAPI --version 1.0.7
                    
NuGet\Install-Package WebFrameworkCSharpAPI -Version 1.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebFrameworkCSharpAPI" Version="1.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WebFrameworkCSharpAPI" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="WebFrameworkCSharpAPI" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WebFrameworkCSharpAPI --version 1.0.7
                    
#r "nuget: WebFrameworkCSharpAPI, 1.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WebFrameworkCSharpAPI@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WebFrameworkCSharpAPI&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=WebFrameworkCSharpAPI&version=1.0.7
                    
Install as a Cake Tool

C++ HTTP/HTTPS server with C# API

Quick start

Server needs few files to run:

Main.cs

using Framework;
using Framework.Exceptions;

namespace hello_csharp
{
	internal class Program
	{
		static void Main(string[] args)
		{
			try
			{
				using WebFramework server = new("config.json"); // Create server

				server.Start(true, () => Console.WriteLine()); // Start server and wait
			}
			catch (WebFrameworkException e)
			{
				Console.WriteLine(e.Message);

				Environment.Exit(-1);
			}
			catch (Exception e)
			{
				Console.WriteLine(e.Message);

				Environment.Exit(-2);
			}
		}
	}
}

Settings

web.json

{
  "HelloExecutor": {
    "route": "",
    "loadType": "initialization"
  }
}

Config

config.json

{
  "WebServer": {
    "ip": "0.0.0.0",
    "port": 8080,
    "timeout": 0
  },
  "WebFramework": {
    "settingsPaths": [
      "web.json"
    ],
    "loadSources": [
      "hello_executor"
    ],
    "assetsPath": "assets",
    "templatesPath": "templates",
    "cachingSize": 536870912,
    "webServerType": "multiThreaded",
    "HTTPS": {
      "useHTTPS": false,
      "pathToCertificate": "certificates/cert.pem",
      "pathToKey": "certificates/key.pem"
    },
    "defaultAssetsPath": "WebFrameworkAssets"
  },
  "Logging": {
    "usingLogging": false,
    "dateFormat": "DMY",
    "logFileSize": 134217728
  },
  "ThreadPoolServer": {
    "threadCount": 0
  }
}

Run sample

After running server open url 127.0.0.1:8080.
You will see response from server

{
  "message": "Hello, World!"
}

Executors

Executors are C++ classes that responsible for giving responses for their route(url).
Source code of HelloExecutor from example
HelloExecutor.h

#pragma once

#include "Executors/BaseStatelessExecutor.h"

namespace executors
{
	class HelloExecutor : public framework::BaseStatelessExecutor
	{
	public:
		HelloExecutor() = default;

		void doGet(framework::HTTPRequest& request, framework::HTTPResponse& response) override;

		~HelloExecutor() = default;
	};
}

HelloExecutor.cpp

#include "HelloExecutor.h"

#include "JSONBuilder.h"

namespace executors
{
	void HelloExecutor::doGet(framework::HTTPRequest& request, framework::HTTPResponse& response)
	{
		response.addBody(json::JSONBuilder(CP_UTF8).appendString("message", "Hello, World!"));
	}

	DECLARE_EXECUTOR(HelloExecutor);
}

More information you can find in wiki.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.7 86 12/29/2024
1.0.6 91 11/26/2024
1.0.5 87 11/16/2024
1.0.4 96 11/14/2024
1.0.3 95 11/10/2024
1.0.2 94 10/28/2024
1.0.1 87 10/24/2024
1.0.0 119 10/9/2024