Major upgrade to .NET Standard 2.1 and .NET Core 3.1 for LTS reasons
BaSyx.Components.Common project added for shared server functions across all components
Every server application updated due to .NET Core 3.1
BaSyx.Utils splitted into subprojects BaSyx.Utils.DependencyInjection & BaSyx.Utils.Client.Mqtt to have less dependencies when using basic BaSyx functions
Cleaned up a lot of code
NuGet Package handling refactored due to .NET Core 3.1
Asynchronous operation invocation added
NuGet packaged updated
diff --git a/sdks/dotnet/basyx-core/BaSyx.Models/Communication/InvocationResponse.cs b/sdks/dotnet/basyx-core/BaSyx.Models/Communication/InvocationResponse.cs
new file mode 100644
index 0000000..272be84
--- /dev/null
+++ b/sdks/dotnet/basyx-core/BaSyx.Models/Communication/InvocationResponse.cs
@@ -0,0 +1,39 @@
+/*******************************************************************************
+* Copyright (c) 2020 Robert Bosch GmbH
+* Author: Constantin Ziesche (constantin.ziesche@bosch.com)
+*
+* This program and the accompanying materials are made available under the
+* terms of the Eclipse Public License 2.0 which is available at
+* http://www.eclipse.org/legal/epl-2.0
+*
+* SPDX-License-Identifier: EPL-2.0
+*******************************************************************************/
+using BaSyx.Models.Core.Common;
+using BaSyx.Utils.ResultHandling;
+using System.Runtime.Serialization;
+
+namespace BaSyx.Models.Communication
+{
+    [DataContract]
+    public class InvocationResponse
+    {
+        [DataMember(EmitDefaultValue = false, IsRequired = true, Name = "requestId")]
+        public string RequestId { get; private set; }
+
+        [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "outputArguments")]
+        public IOperationVariableSet OutputArguments { get; set; }
+
+        [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "operationResult")]
+        public OperationResult OperationResult { get; set; }
+
+        [DataMember(EmitDefaultValue = false, IsRequired = false, Name = "executionState")]
+        public ExecutionState ExecutionState { get; set; }
+
+        public InvocationResponse(string requestId)
+        {
+            RequestId = requestId;
+            OutputArguments = new OperationVariableSet();
+            ExecutionState = ExecutionState.Initiated;
+        }
+    }
+}