李思淳 5 년 전
부모
커밋
fc70eaf9c7

+ 13 - 3
TEAMModelOS.GRPC/Startup.cs

@@ -1,6 +1,7 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
+using System.Text.Json;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using Grpc.Extension.Abstract;
 using Grpc.Extension.Abstract;
 using Grpc.Extension.AspNetCore;
 using Grpc.Extension.AspNetCore;
@@ -10,6 +11,12 @@ using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.Configuration;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Hosting;
+using TEAMModelOS.GRPC.Services.Syllabus;
+using TEAMModelOS.SDK.Module.AzureBlob.Configuration;
+using TEAMModelOS.SDK.Module.AzureCosmosDB.Configuration;
+using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
+using TEAMModelOS.SDK.Module.AzureTable.Implements;
+using TEAMModelOS.SDK.Module.AzureTable.Interfaces;
 
 
 namespace TEAMModelOS.GRPC
 namespace TEAMModelOS.GRPC
 {
 {
@@ -27,6 +34,9 @@ namespace TEAMModelOS.GRPC
             services.AddGrpc();
             services.AddGrpc();
             //添加Grpc扩展
             //添加Grpc扩展
             services.AddGrpcExtensions(_conf);
             services.AddGrpcExtensions(_conf);
+
+
+            
         }
         }
 
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -49,11 +59,11 @@ namespace TEAMModelOS.GRPC
                 });
                 });
             });
             });
             //CodeFirst的Grpc(会自动扫描TStartup所在程序集下的IGrpcService)
             //CodeFirst的Grpc(会自动扫描TStartup所在程序集下的IGrpcService)
-            app.UseGrpcExtensions<IGrpcService>(options =>
+            app.UseGrpcExtensions<KnowledgeService>(options =>
             {
             {
                 //CodeFirst配制
                 //CodeFirst配制
-                options.GlobalPackage = "TEAMModelOS.GRPC";
-                options.ProtoNameSpace = "TEAMModelOS.GRPC";
+                options.GlobalPackage = "TMDOSGRPC";
+                options.ProtoNameSpace = "TMDOSGRPC";
             })
             })
             //CodeFirst生成proto
             //CodeFirst生成proto
             .UseProtoGenerate("Protos", false);
             .UseProtoGenerate("Protos", false);

+ 7 - 3
TEAMModelOS.GRPC/TEAMModelOS.GRPC.csproj

@@ -6,6 +6,9 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <DocumentationFile>TEAMModelOS.GRPC.xml</DocumentationFile>
     <DocumentationFile>TEAMModelOS.GRPC.xml</DocumentationFile>
   </PropertyGroup>
   </PropertyGroup>
+  <ItemGroup>
+    <None Remove="Protos\KnowledgeService.proto" />
+  </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <PackageReference Include="Grpc.AspNetCore" Version="2.24.0" />
     <PackageReference Include="Grpc.AspNetCore" Version="2.24.0" />
     <PackageReference Include="Grpc.Tools" Version="2.24.0">
     <PackageReference Include="Grpc.Tools" Version="2.24.0">
@@ -13,17 +16,18 @@
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
     </PackageReference>
     </PackageReference>
   </ItemGroup>
   </ItemGroup>
-
   <ItemGroup>
   <ItemGroup>
-    <Folder Include="Protos\" />
+    <Protobuf Include="Protos\KnowledgeService.proto" GrpcServices="Server" />
+  </ItemGroup>
+  <ItemGroup>
     <Folder Include="Services\Core\" />
     <Folder Include="Services\Core\" />
     <Folder Include="Services\Courses\" />
     <Folder Include="Services\Courses\" />
     <Folder Include="Services\Exam\" />
     <Folder Include="Services\Exam\" />
     <Folder Include="Services\Learn\" />
     <Folder Include="Services\Learn\" />
-    <Folder Include="Services\Syllabus\" />
   </ItemGroup>
   </ItemGroup>
 
 
   <ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\TEAMModelOS.SDK\TEAMModelOS.SDK.csproj" />
     <ProjectReference Include="..\TEAMModelOS.SDK\TEAMModelOS.SDK.csproj" />
+    <ProjectReference Include="..\TEAMModelOS.Service\TEAMModelOS.Service.csproj" />
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 28 - 0
TEAMModelOS.GRPC/appsettings.Development.json

@@ -36,6 +36,34 @@
   "Kestrel": {
   "Kestrel": {
     "EndpointDefaults": {
     "EndpointDefaults": {
       "Protocols": "Http2"
       "Protocols": "Http2"
+    },
+    "Azure": {
+      "Table": {
+        "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelostest;AccountKey=QB/zYHHCAtZfl9tf4emL1Y9ZXGc6fqZ+nNbCxIHM70HnziC8dMdEAu7+Pa4mbKLlbswV90wWHAF3nMjrKB54Lw==;EndpointSuffix=core.chinacloudapi.cn"
+      },
+      "Blob": {
+        "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn",
+        "Container": "teammodelos"
+      },
+      "CosmosDB": {
+        "ConnectionString": "https://192.168.8.128:8081",
+        "ConnectionKey": "ddwAeGSf8Lsf1kxPXmdqnyzzi3CkJ0KW2BTPZ7Zq1N7qbJic5j7AaQ+WbF86F3rnzuDgGM1yg8O7BUFo93iA8w==",
+        "Database": "TEAMModelOS",
+        "CollectionThroughput": 400,
+        "ScanModel": [ "TEAMModelOS.Service" ]
+      },
+      "Redis": {
+        "ConnectionString": "106.12.23.251:6379,password=habook,ssl=false,abortConnect=False,defaultDatabase=13,writeBuffer=10240,poolsize=50,prefix=habook:"
+      }
+    },
+    "HaBookAuth": {
+      "TeamModelRegistUrl": "https://account.habookaclass.biz/regist?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+      "TeamModelLoginUrl": "https://account.habookaclass.biz/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+      "AccountUrl": "https://api.habookaclass.biz/account",
+      "ServiceUrl": "https://api.habookaclass.biz/service",
+      "UserInfoKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpZCIsImF1ZCI6ImNoZW5nZHVJZCIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYwNTIzNjcsIm5iZiI6MTUzNjA1MjM2NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.RGKDVtwFEp4OBctlHOuF6yqyI21fTz4cinCxjFCxkSQ",
+      "SchoolCodeKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzY2hvb2xDb2RlIiwiYXVkIjoiY2hlbmdkdVNjaG9vbENvZGUiLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTM2MDUyNDI3LCJuYmYiOjE1MzYwNTI0MjcsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.8m5VH3Nz4N9EdMz8AexTOEuDVitcJZFKy9DfW_UQkSY",
+      "SmsKey": "Basic ZmYwMWM0YTJjODdmZmNkYTUyNjhmMDEwOmE0YTE5YTVjNTU2ZWVhZTNjZmZhNTI0Mg=="
     }
     }
   }
   }
 }
 }

+ 28 - 0
TEAMModelOS.GRPC/appsettings.json

@@ -34,6 +34,34 @@
   "Kestrel": {
   "Kestrel": {
     "EndpointDefaults": {
     "EndpointDefaults": {
       "Protocols": "Http2"
       "Protocols": "Http2"
+    },
+    "Azure": {
+      "Table": {
+        "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelostest;AccountKey=QB/zYHHCAtZfl9tf4emL1Y9ZXGc6fqZ+nNbCxIHM70HnziC8dMdEAu7+Pa4mbKLlbswV90wWHAF3nMjrKB54Lw==;EndpointSuffix=core.chinacloudapi.cn"
+      },
+      "Blob": {
+        "ConnectionString": "DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn",
+        "Container": "teammodelos"
+      },
+      "CosmosDB": {
+        "ConnectionString": "https://192.168.8.128:8081",
+        "ConnectionKey": "ddwAeGSf8Lsf1kxPXmdqnyzzi3CkJ0KW2BTPZ7Zq1N7qbJic5j7AaQ+WbF86F3rnzuDgGM1yg8O7BUFo93iA8w==",
+        "Database": "TEAMModelOS",
+        "CollectionThroughput": 400,
+        "ScanModel": [ "TEAMModelOS.Service" ]
+      },
+      "Redis": {
+        "ConnectionString": "106.12.23.251:6379,password=habook,ssl=false,abortConnect=False,defaultDatabase=13,writeBuffer=10240,poolsize=50,prefix=habook:"
+      }
+    },
+    "HaBookAuth": {
+      "TeamModelRegistUrl": "https://account.habookaclass.biz/regist?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+      "TeamModelLoginUrl": "https://account.habookaclass.biz/?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsb2dpbiIsImF1ZCI6ImNoZW5nZHVMb2dpbiIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYxMzUwNDcsIm5iZiI6MTUzNjEzNTA0NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.F4AnkbJrMRoZvJ6SC-lqZEYIYSoq5x8lvX6_a3YqSgM&callback=",
+      "AccountUrl": "https://api.habookaclass.biz/account",
+      "ServiceUrl": "https://api.habookaclass.biz/service",
+      "UserInfoKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJpZCIsImF1ZCI6ImNoZW5nZHVJZCIsImlzcyI6Imh0dHBzOi8vYXBpLmhhYm9va2FjbGFzcy5iaXoiLCJpYXQiOjE1MzYwNTIzNjcsIm5iZiI6MTUzNjA1MjM2NywiZXhwIjoxNTY3NTU1MjAwLCJpZHAiOiJIYWJvb2sgQ29yZVNlcnZpY2UifQ.RGKDVtwFEp4OBctlHOuF6yqyI21fTz4cinCxjFCxkSQ",
+      "SchoolCodeKey": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzY2hvb2xDb2RlIiwiYXVkIjoiY2hlbmdkdVNjaG9vbENvZGUiLCJpc3MiOiJodHRwczovL2FwaS5oYWJvb2thY2xhc3MuYml6IiwiaWF0IjoxNTM2MDUyNDI3LCJuYmYiOjE1MzYwNTI0MjcsImV4cCI6MTU2NzU1NTIwMCwiaWRwIjoiSGFib29rIENvcmVTZXJ2aWNlIn0.8m5VH3Nz4N9EdMz8AexTOEuDVitcJZFKy9DfW_UQkSY",
+      "SmsKey": "Basic ZmYwMWM0YTJjODdmZmNkYTUyNjhmMDEwOmE0YTE5YTVjNTU2ZWVhZTNjZmZhNTI0Mg=="
     }
     }
   }
   }
 }
 }

+ 20 - 0
TEAMModelOS.Grpc/Models/Dtos/RequestDict.cs

@@ -0,0 +1,20 @@
+using ProtoBuf;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace TEAMModelOS.GRPC.Models.Dtos
+{
+    [ProtoContract]
+    public class RequestDict
+    {
+        /// <summary>
+        /// 查询dict
+        /// </summary>
+        [ProtoMember(1)]
+        public Dictionary<string, string> dict { get; set; }
+
+
+    }
+}

+ 16 - 0
TEAMModelOS.Grpc/Models/Dtos/ResponseList.cs

@@ -0,0 +1,16 @@
+//using ProtoBuf;
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Threading.Tasks;
+
+//namespace TEAMModelOS.GRPC.Models.Dtos
+//{
+//    [ProtoContract]
+//    public class ResponseList<T>
+//    {
+
+//        [ProtoMember(1)]
+//        public List<T> response { get; set; }
+//    }
+//}

+ 31 - 0
TEAMModelOS.Grpc/Protos/KnowledgeService.proto

@@ -0,0 +1,31 @@
+syntax = "proto3";
+option csharp_namespace = "TMDOSGRPC.KnowledgeService";
+package TMDOSGRPC.KnowledgeService;
+
+
+service KnowledgeService {
+   rpc FinKnowledge1(RequestDict) returns(stream Knowledge);
+
+}
+
+
+
+message RequestDict {
+   //查询dict
+   map<string,string> dict = 1;
+}
+
+message Knowledge {
+   string id = 1;
+   int32 type = 2;
+   string name = 3;
+   string alias = 4;
+   string subjectCode = 5;
+   string scopeCode = 6;
+   int32 order = 7;
+   int32 status = 8;
+   repeated string points = 9;
+   string knowledgeId = 10;
+   int32 source = 11;
+   string period = 12;
+}

+ 61 - 0
TEAMModelOS.Grpc/Services/Syllabus/KnowledgeService.cs

@@ -0,0 +1,61 @@
+using Grpc.Core;
+using Grpc.Extension.Abstract;
+using Microsoft.AspNetCore.Authorization;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using TEAMModelOS.SDK.Helper.Common.JsonHelper;
+using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
+using TEAMModelOS.Service.Models.Syllabus;
+using TEAMModelOS.GRPC.Models.Dtos;
+
+
+namespace TEAMModelOS.GRPC.Services.Syllabus
+{
+    public class KnowledgeService : IGrpcService
+    {
+        public IAzureCosmosDBV3Repository cosmosDBV3Repository;
+
+        public KnowledgeService(IAzureCosmosDBV3Repository cosmosDBV3Repository)
+        {
+            this.cosmosDBV3Repository = cosmosDBV3Repository;
+        }
+
+        //[Authorize]
+        public async Task FinKnowledge1(RequestDict request, IServerStreamWriter<Knowledge> responseStream, ServerCallContext context)
+        {
+            string a = request.dict.ToJson();
+            Dictionary<string, object> keyValuePairs = JsonNetHelper.FromJson<Dictionary<string, object>>(a);
+            List<Knowledge> knowledges = await cosmosDBV3Repository.FindByDict<Knowledge>(keyValuePairs);
+         
+            knowledges.ForEach(x =>
+            {
+                responseStream.WriteAsync(x);
+            });
+            //ResponseList<Knowledge> listKnowledge = new ResponseList<Knowledge>();
+            //listKnowledge.response = knowledges;
+            //return await Task.FromResult(listKnowledge);
+        }
+        //[Authorize]
+        //public async Task FinKnowledge(string request, IServerStreamWriter<Family> responseStream, ServerCallContext context)
+        //{
+        //    Console.WriteLine("gRPC ");
+        //    string a = request.ToJson();
+        //    Dictionary<string, object> keyValuePairs = JsonNetHelper.FromJson<Dictionary<string, object>>(request);
+        //    List<Family> knowledges = await cosmosDBV3Repository.FindByDict<Family>(keyValuePairs);
+        //    ListKnowledge listKnowledge = new ListKnowledge();
+        //    listKnowledge.knowledges = knowledges;
+        //    knowledges.ForEach(x =>
+        //    {
+        //        responseStream.WriteAsync(x);
+        //    });
+        //    //foreach (Family family in knowledges)
+        //    //{
+        //    //    await responseStream.WriteAsync(family);
+        //    //}
+        //    //return await Task.FromResult(listKnowledge);
+        //}
+
+    }
+}

+ 138 - 0
TEAMModelOS.Grpc/TEAMModelOS.GRPC.xml

@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>TEAMModelOS.GRPC</name>
+    </assembly>
+    <members>
+        <member name="P:TEAMModelOS.GRPC.Models.Dtos.RequestDict.dict">
+            <summary>
+            查询dict
+            </summary>
+        </member>
+        <member name="T:Helloworld.HelloworldReflection">
+            <summary>Holder for reflection information generated from Protos/helloworld.proto</summary>
+        </member>
+        <member name="P:Helloworld.HelloworldReflection.Descriptor">
+            <summary>File descriptor for Protos/helloworld.proto</summary>
+        </member>
+        <member name="T:Helloworld.HelloRequest">
+            <summary>
+            The request message containing the user's name.
+            </summary>
+        </member>
+        <member name="F:Helloworld.HelloRequest.NameFieldNumber">
+            <summary>Field number for the "name" field.</summary>
+        </member>
+        <member name="T:Helloworld.HelloReply">
+            <summary>
+            The response message containing the greetings
+            </summary>
+        </member>
+        <member name="F:Helloworld.HelloReply.MessageFieldNumber">
+            <summary>Field number for the "message" field.</summary>
+        </member>
+        <member name="T:Helloworld.Greeter">
+            <summary>
+            The greeting service definition.
+            </summary>
+        </member>
+        <member name="P:Helloworld.Greeter.Descriptor">
+            <summary>Service descriptor</summary>
+        </member>
+        <member name="T:Helloworld.Greeter.GreeterBase">
+            <summary>Base class for server-side implementations of Greeter</summary>
+        </member>
+        <member name="M:Helloworld.Greeter.GreeterBase.SayHello(Helloworld.HelloRequest,Grpc.Core.ServerCallContext)">
+            <summary>
+            Sends a greeting
+            </summary>
+            <param name="request">The request received from the client.</param>
+            <param name="context">The context of the server-side call handler being invoked.</param>
+            <returns>The response to send back to the client (wrapped by a task).</returns>
+        </member>
+        <member name="M:Helloworld.Greeter.GreeterBase.SayHelloStream(Grpc.Core.IAsyncStreamReader{Helloworld.HelloRequest},Grpc.Core.ServerCallContext)">
+            <summary>
+            Stream Sends a greeting
+            </summary>
+            <param name="requestStream">Used for reading requests from the client.</param>
+            <param name="context">The context of the server-side call handler being invoked.</param>
+            <returns>The response to send back to the client (wrapped by a task).</returns>
+        </member>
+        <member name="M:Helloworld.Greeter.BindService(Helloworld.Greeter.GreeterBase)">
+            <summary>Creates service definition that can be registered with a server</summary>
+            <param name="serviceImpl">An object implementing the server-side handling logic.</param>
+        </member>
+        <member name="M:Helloworld.Greeter.BindService(Grpc.Core.ServiceBinderBase,Helloworld.Greeter.GreeterBase)">
+            <summary>Register service method with a service binder with or without implementation. Useful when customizing the  service binding logic.
+            Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary>
+            <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
+            <param name="serviceImpl">An object implementing the server-side handling logic.</param>
+        </member>
+        <member name="T:TMDOSGRPC.KnowledgeService.KnowledgeServiceReflection">
+            <summary>Holder for reflection information generated from Protos/KnowledgeService.proto</summary>
+        </member>
+        <member name="P:TMDOSGRPC.KnowledgeService.KnowledgeServiceReflection.Descriptor">
+            <summary>File descriptor for Protos/KnowledgeService.proto</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.RequestDict.DictFieldNumber">
+            <summary>Field number for the "dict" field.</summary>
+        </member>
+        <member name="P:TMDOSGRPC.KnowledgeService.RequestDict.Dict">
+             <summary>
+            查询dict
+             </summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.IdFieldNumber">
+            <summary>Field number for the "id" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.TypeFieldNumber">
+            <summary>Field number for the "type" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.NameFieldNumber">
+            <summary>Field number for the "name" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.AliasFieldNumber">
+            <summary>Field number for the "alias" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.SubjectCodeFieldNumber">
+            <summary>Field number for the "subjectCode" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.ScopeCodeFieldNumber">
+            <summary>Field number for the "scopeCode" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.OrderFieldNumber">
+            <summary>Field number for the "order" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.StatusFieldNumber">
+            <summary>Field number for the "status" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.PointsFieldNumber">
+            <summary>Field number for the "points" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.KnowledgeIdFieldNumber">
+            <summary>Field number for the "knowledgeId" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.SourceFieldNumber">
+            <summary>Field number for the "source" field.</summary>
+        </member>
+        <member name="F:TMDOSGRPC.KnowledgeService.Knowledge.PeriodFieldNumber">
+            <summary>Field number for the "period" field.</summary>
+        </member>
+        <member name="P:TMDOSGRPC.KnowledgeService.KnowledgeService.Descriptor">
+            <summary>Service descriptor</summary>
+        </member>
+        <member name="T:TMDOSGRPC.KnowledgeService.KnowledgeService.KnowledgeServiceBase">
+            <summary>Base class for server-side implementations of KnowledgeService</summary>
+        </member>
+        <member name="M:TMDOSGRPC.KnowledgeService.KnowledgeService.BindService(TMDOSGRPC.KnowledgeService.KnowledgeService.KnowledgeServiceBase)">
+            <summary>Creates service definition that can be registered with a server</summary>
+            <param name="serviceImpl">An object implementing the server-side handling logic.</param>
+        </member>
+        <member name="M:TMDOSGRPC.KnowledgeService.KnowledgeService.BindService(Grpc.Core.ServiceBinderBase,TMDOSGRPC.KnowledgeService.KnowledgeService.KnowledgeServiceBase)">
+            <summary>Register service method with a service binder with or without implementation. Useful when customizing the  service binding logic.
+            Note: this method is part of an experimental API that can change or be removed without any prior notice.</summary>
+            <param name="serviceBinder">Service methods will be bound by calling <c>AddMethod</c> on this object.</param>
+            <param name="serviceImpl">An object implementing the server-side handling logic.</param>
+        </member>
+    </members>
+</doc>