Skip to content

Commit 299fd00

Browse files
author
Abhishek Kumar Singh
committed
Push GRPC projects
0 parents  commit 299fd00

File tree

24 files changed

+1080
-0
lines changed

24 files changed

+1080
-0
lines changed

gRPC-csharp/Client/App.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<startup>
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
5+
</startup>
6+
</configuration>

gRPC-csharp/Client/Client.csproj

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.props" Condition="Exists('..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.props')" />
4+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
5+
<PropertyGroup>
6+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
7+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
8+
<ProjectGuid>{6B09681A-0125-4096-AF83-B32911786A05}</ProjectGuid>
9+
<OutputType>Exe</OutputType>
10+
<RootNamespace>client</RootNamespace>
11+
<AssemblyName>client</AssemblyName>
12+
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
15+
<Deterministic>true</Deterministic>
16+
<NuGetPackageImportStamp>
17+
</NuGetPackageImportStamp>
18+
</PropertyGroup>
19+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
20+
<PlatformTarget>AnyCPU</PlatformTarget>
21+
<DebugSymbols>true</DebugSymbols>
22+
<DebugType>full</DebugType>
23+
<Optimize>false</Optimize>
24+
<OutputPath>bin\Debug\</OutputPath>
25+
<DefineConstants>DEBUG;TRACE</DefineConstants>
26+
<ErrorReport>prompt</ErrorReport>
27+
<WarningLevel>4</WarningLevel>
28+
</PropertyGroup>
29+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
30+
<PlatformTarget>AnyCPU</PlatformTarget>
31+
<DebugType>pdbonly</DebugType>
32+
<Optimize>true</Optimize>
33+
<OutputPath>bin\Release\</OutputPath>
34+
<DefineConstants>TRACE</DefineConstants>
35+
<ErrorReport>prompt</ErrorReport>
36+
<WarningLevel>4</WarningLevel>
37+
</PropertyGroup>
38+
<ItemGroup>
39+
<Reference Include="Google.Protobuf, Version=3.21.12.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
40+
<HintPath>..\packages\Google.Protobuf.3.21.12\lib\net45\Google.Protobuf.dll</HintPath>
41+
</Reference>
42+
<Reference Include="Grpc.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
43+
<HintPath>..\packages\Grpc.Core.2.46.6\lib\net45\Grpc.Core.dll</HintPath>
44+
</Reference>
45+
<Reference Include="Grpc.Core.Api, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
46+
<HintPath>..\packages\Grpc.Core.Api.2.46.6\lib\net45\Grpc.Core.Api.dll</HintPath>
47+
</Reference>
48+
<Reference Include="System" />
49+
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
50+
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
51+
</Reference>
52+
<Reference Include="System.Core" />
53+
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
54+
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
55+
</Reference>
56+
<Reference Include="System.Numerics" />
57+
<Reference Include="System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
58+
<HintPath>..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
59+
</Reference>
60+
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
61+
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
62+
</Reference>
63+
<Reference Include="System.Xml.Linq" />
64+
<Reference Include="System.Data.DataSetExtensions" />
65+
<Reference Include="Microsoft.CSharp" />
66+
<Reference Include="System.Data" />
67+
<Reference Include="System.Net.Http" />
68+
<Reference Include="System.Xml" />
69+
</ItemGroup>
70+
<ItemGroup>
71+
<Protobuf Include="../*.proto" OutputDir="%(RelativePath)models/" />
72+
</ItemGroup>
73+
<ItemGroup>
74+
<Compile Include="Program.cs" />
75+
<Compile Include="Properties\AssemblyInfo.cs" />
76+
</ItemGroup>
77+
<ItemGroup>
78+
<None Include="App.config" />
79+
<None Include="packages.config" />
80+
</ItemGroup>
81+
<ItemGroup>
82+
<Folder Include="models\" />
83+
</ItemGroup>
84+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
85+
<Import Project="..\packages\Grpc.Core.2.46.6\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.2.46.6\build\net45\Grpc.Core.targets')" />
86+
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
87+
<PropertyGroup>
88+
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
89+
</PropertyGroup>
90+
<Error Condition="!Exists('..\packages\Grpc.Core.2.46.6\build\net45\Grpc.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Core.2.46.6\build\net45\Grpc.Core.targets'))" />
91+
<Error Condition="!Exists('..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.props'))" />
92+
<Error Condition="!Exists('..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.targets'))" />
93+
<Error Condition="!Exists('..\packages\Google.Protobuf.Tools.3.21.12\build\Google.Protobuf.Tools.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Google.Protobuf.Tools.3.21.12\build\Google.Protobuf.Tools.targets'))" />
94+
</Target>
95+
<Import Project="..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.targets" Condition="Exists('..\packages\Grpc.Tools.2.51.0\build\Grpc.Tools.targets')" />
96+
<Import Project="..\packages\Google.Protobuf.Tools.3.21.12\build\Google.Protobuf.Tools.targets" Condition="Exists('..\packages\Google.Protobuf.Tools.3.21.12\build\Google.Protobuf.Tools.targets')" />
97+
</Project>

gRPC-csharp/Client/Program.cs

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
using Dummy;
2+
using Greet;
3+
using Grpc.Core;
4+
using Sum;
5+
using System;
6+
using System.Threading.Tasks;
7+
8+
namespace client
9+
{
10+
class Program
11+
{
12+
private const string target = "127.0.0.1:50051";
13+
private static Channel channel = null;
14+
static async Task Main(string[] args)
15+
{
16+
#region Creating Channel and making connection with Server
17+
channel = new Channel(target, ChannelCredentials.Insecure);
18+
await channel.ConnectAsync().ContinueWith((Task) =>
19+
{
20+
if (Task.Status == TaskStatus.RanToCompletion)
21+
Console.WriteLine("Client connected successfully\n");
22+
else
23+
Console.WriteLine("Client not able to connect\n");
24+
});
25+
#endregion
26+
27+
#region Creating clients for communicating servers
28+
await CreatingClientsAndCallingServers(channel);
29+
#endregion
30+
31+
#region Closing channel
32+
channel.ShutdownAsync().Wait();
33+
Console.ReadKey();
34+
#endregion
35+
}
36+
private static async Task CreatingClientsAndCallingServers(Channel channel)
37+
{
38+
//var client = new DummyService.DummyServiceClient(channel);
39+
40+
Console.WriteLine("Please choose from the below clients : ");
41+
Console.WriteLine("1. Greeting Service (Unary)\n2. Sum Service (Unary)\n3. Greet many times from server (Server Streaming)\n" +
42+
"4. Find all factors of a number (Server streaming)\n5. Sending many times to the server (Client Streaming)\n" +
43+
"6. Compute Average (Client Streaming)");
44+
Console.WriteLine("--------------------------------------------------------");
45+
int clientNumber = Convert.ToInt32(Console.ReadLine());
46+
47+
switch (clientNumber)
48+
{
49+
case 1: // Unary
50+
var client = new GreetingService.GreetingServiceClient(channel);
51+
var reqModal = new GreetingRequestModal() { FirstName = "Abhishek", LastName = "Singh" };
52+
var request = new GreetingRequest() { Modal = reqModal };
53+
var response = client.GreetingUnaryFunc(request);
54+
Console.WriteLine(response.Response);
55+
break;
56+
case 2: // Unary
57+
var client2 = new CalculatorService.CalculatorServiceClient(channel);
58+
var reqModal2 = new SumRequestModal() { N1 = 10, N2 = 2 };
59+
var request2 = new SumRequest() { RequestModal = reqModal2 };
60+
var response2 = client2.SumServiceFunc(request2);
61+
Console.WriteLine(response2.N);
62+
break;
63+
case 3: // Server Streaming
64+
var client3 = new GreetingService.GreetingServiceClient(channel);
65+
var reqModal3 = new GreetingRequestModal() { FirstName = "Abhishek", LastName = "Singh" };
66+
var request3 = new GreetingRequest() { Modal = reqModal3 };
67+
var response3 = client3.GreetingServerStreamingFunc(request3);
68+
69+
while (await response3.ResponseStream.MoveNext())
70+
{
71+
Console.WriteLine(response3.ResponseStream.Current.Response);
72+
await Task.Delay(200);
73+
}
74+
break;
75+
case 4: // Server Streaming
76+
var client4 = new CalculatorService.CalculatorServiceClient(channel);
77+
var reqModal4 = new RequestNumber() { N = 120 };
78+
var response4 = client4.PrintAllFactorsOfNumberFunc(reqModal4);
79+
80+
while (await response4.ResponseStream.MoveNext())
81+
{
82+
Console.WriteLine(response4.ResponseStream.Current.N);
83+
await Task.Delay(200);
84+
}
85+
break;
86+
case 5: // Client Streaming
87+
var client5 = new GreetingService.GreetingServiceClient(channel);
88+
var reqModal5 = new GreetingRequestModal() { FirstName = "Abhishek", LastName = "Singh" };
89+
var stream5 = client5.GreetingClientStreamingFunc();
90+
91+
for (int i=0; i<5; i++)
92+
{
93+
await stream5.RequestStream.WriteAsync(new GreetingRequest() { Modal = reqModal5 });
94+
}
95+
await stream5.RequestStream.CompleteAsync();
96+
97+
var response5 = await stream5.ResponseAsync;
98+
Console.WriteLine(response5.Response);
99+
break;
100+
case 6: // Client Streaming
101+
var client6 = new CalculatorService.CalculatorServiceClient(channel);
102+
var stream6 = client6.ComputeAverageFunc();
103+
104+
for (int i = 1; i < 5; i++)
105+
{
106+
await stream6.RequestStream.WriteAsync(new RequestNumber() { N = i });
107+
}
108+
await stream6.RequestStream.CompleteAsync();
109+
110+
var response6 = await stream6.ResponseAsync;
111+
Console.WriteLine("Average [ 1,4 ] (in INT): " + response6.N);
112+
break;
113+
}
114+
}
115+
}
116+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// General Information about an assembly is controlled through the following
6+
// set of attributes. Change these attribute values to modify the information
7+
// associated with an assembly.
8+
[assembly: AssemblyTitle("Client")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("")]
12+
[assembly: AssemblyProduct("Client")]
13+
[assembly: AssemblyCopyright("Copyright © 2023")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// Setting ComVisible to false makes the types in this assembly not visible
18+
// to COM components. If you need to access a type in this assembly from
19+
// COM, set the ComVisible attribute to true on that type.
20+
[assembly: ComVisible(false)]
21+
22+
// The following GUID is for the ID of the typelib if this project is exposed to COM
23+
[assembly: Guid("6b09681a-0125-4096-af83-b32911786a05")]
24+
25+
// Version information for an assembly consists of the following four values:
26+
//
27+
// Major Version
28+
// Minor Version
29+
// Build Number
30+
// Revision
31+
//
32+
// You can specify all the values or you can default the Build and Revision Numbers
33+
// by using the '*' as shown below:
34+
// [assembly: AssemblyVersion("1.0.*")]
35+
[assembly: AssemblyVersion("1.0.0.0")]
36+
[assembly: AssemblyFileVersion("1.0.0.0")]

gRPC-csharp/Client/packages.config

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="Google.Protobuf" version="3.21.12" targetFramework="net472" />
4+
<package id="Google.Protobuf.Tools" version="3.21.12" targetFramework="net472" />
5+
<package id="Grpc" version="2.46.6" targetFramework="net472" />
6+
<package id="Grpc.Core" version="2.46.6" targetFramework="net472" />
7+
<package id="Grpc.Core.Api" version="2.46.6" targetFramework="net472" />
8+
<package id="Grpc.Tools" version="2.51.0" targetFramework="net472" developmentDependency="true" />
9+
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
10+
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
11+
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
12+
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
13+
</packages>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0"?>
2+
<package>
3+
<metadata>
4+
<id>GRPC.Client.Nuget</id>
5+
<version>1.0.0.0</version>
6+
<title>GRPC.Client</title>
7+
<authors>Eternals</authors>
8+
<owners>Abhishek Kumar Singh</owners>
9+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
10+
<projectUrl>https://dev.azure.com/AbhishekORG/GRPC/_versionControl</projectUrl>
11+
<description>Used for creating nuget package for GRPC Client project.</description>
12+
<releaseNotes>GRPC</releaseNotes>
13+
<copyright>Copyright 2023 Eternals</copyright>
14+
<tags>GRPC Client Nuget</tags>
15+
<dependencies>
16+
<group targetFramework=".NETFramework4.7.2" />
17+
</dependencies>
18+
</metadata>
19+
<files>
20+
<file src="..\..\Client\bin\Release\Google.Protobuf.dll" target="lib\net45" />
21+
<file src="..\..\Client\bin\Release\Google.Protobuf.pdb" target="lib\net45" />
22+
<file src="..\..\Client\bin\Release\Google.Protobuf.xml" target="lib\net45" />
23+
<file src="..\..\Client\bin\Release\Grpc.Core.Api.dll" target="lib\net45" />
24+
<file src="..\..\Client\bin\Release\Grpc.Core.Api.pdb" target="lib\net45" />
25+
<file src="..\..\Client\bin\Release\Grpc.Core.Api.xml" target="lib\net45" />
26+
<file src="..\..\Client\bin\Release\Grpc.Core.dll" target="lib\net45" />
27+
<file src="..\..\Client\bin\Release\Grpc.Core.pdb" target="lib\net45" />
28+
<file src="..\..\Client\bin\Release\Grpc.Core.xml" target="lib\net45" />
29+
<!--<file src="..\..\Client\bin\Release\grpc_csharp_ext.x64.dll" target="lib\net45" />
30+
<file src="..\..\Client\bin\Release\grpc_csharp_ext.x86.dll" target="lib\net45" />
31+
<file src="..\..\Client\bin\Release\libgrpc_csharp_ext.x64.dylib" target="lib\net45" />
32+
<file src="..\..\Client\bin\Release\libgrpc_csharp_ext.x64.so" target="lib\net45" />-->
33+
<file src="..\..\Client\bin\Release\System.Buffers.dll" target="lib\net45" />
34+
<file src="..\..\Client\bin\Release\System.Buffers.xml" target="lib\net45" />
35+
<file src="..\..\Client\bin\Release\System.Memory.dll" target="lib\net45" />
36+
<file src="..\..\Client\bin\Release\System.Memory.xml" target="lib\net45" />
37+
<file src="..\..\Client\bin\Release\System.Numerics.Vectors.dll" target="lib\net45" />
38+
<file src="..\..\Client\bin\Release\System.Numerics.Vectors.xml" target="lib\net45" />
39+
<file src="..\..\Client\bin\Release\System.Runtime.CompilerServices.Unsafe.dll" target="lib\net45" />
40+
<file src="..\..\Client\bin\Release\System.Runtime.CompilerServices.Unsafe.xml" target="lib\net45" />
41+
</files>
42+
</package>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<package >
3+
<metadata>
4+
<id>GRPC.Server.Nuget</id>
5+
<version>1.0.0.0</version>
6+
<title>GRPC.Server</title>
7+
<authors>Eternals</authors>
8+
<owners>Abhishek Kumar Singh</owners>
9+
<requireLicenseAcceptance>false</requireLicenseAcceptance>
10+
<projectUrl>https://dev.azure.com/AbhishekORG/GRPC/_versionControl</projectUrl>
11+
<description>Used for creating nuget package for GRPC Server project.</description>
12+
<releaseNotes>GRPC</releaseNotes>
13+
<copyright>Copyright 2023 Eternals</copyright>
14+
<tags>GRPC Server Nuget</tags>
15+
<dependencies>
16+
<group targetFramework=".NETFramework4.7.2" />
17+
</dependencies>
18+
</metadata>
19+
<files>
20+
<file src="..\..\Server\bin\Release\Google.Protobuf.dll" target="lib\net45" />
21+
<file src="..\..\Server\bin\Release\Google.Protobuf.pdb" target="lib\net45" />
22+
<file src="..\..\Server\bin\Release\Google.Protobuf.xml" target="lib\net45" />
23+
<file src="..\..\Server\bin\Release\Grpc.Core.Api.dll" target="lib\net45" />
24+
<file src="..\..\Server\bin\Release\Grpc.Core.Api.pdb" target="lib\net45" />
25+
<file src="..\..\Server\bin\Release\Grpc.Core.Api.xml" target="lib\net45" />
26+
<file src="..\..\Server\bin\Release\Grpc.Core.dll" target="lib\net45" />
27+
<file src="..\..\Server\bin\Release\Grpc.Core.pdb" target="lib\net45" />
28+
<file src="..\..\Server\bin\Release\Grpc.Core.xml" target="lib\net45" />
29+
<!--<file src="..\..\Server\bin\Release\grpc_csharp_ext.x64.dll" target="lib\net45" />
30+
<file src="..\..\Server\bin\Release\grpc_csharp_ext.x86.dll" target="lib\net45" />
31+
<file src="..\..\Server\bin\Release\libgrpc_csharp_ext.x64.dylib" target="lib\net45" />
32+
<file src="..\..\Server\bin\Release\libgrpc_csharp_ext.x64.so" target="lib\net45" />-->
33+
<file src="..\..\Server\bin\Release\System.Buffers.dll" target="lib\net45" />
34+
<file src="..\..\Server\bin\Release\System.Buffers.xml" target="lib\net45" />
35+
<file src="..\..\Server\bin\Release\System.Memory.dll" target="lib\net45" />
36+
<file src="..\..\Server\bin\Release\System.Memory.xml" target="lib\net45" />
37+
<file src="..\..\Server\bin\Release\System.Numerics.Vectors.dll" target="lib\net45" />
38+
<file src="..\..\Server\bin\Release\System.Numerics.Vectors.xml" target="lib\net45" />
39+
<file src="..\..\Server\bin\Release\System.Runtime.CompilerServices.Unsafe.dll" target="lib\net45" />
40+
<file src="..\..\Server\bin\Release\System.Runtime.CompilerServices.Unsafe.xml" target="lib\net45" />
41+
</files>
42+
</package>

gRPC-csharp/Greet.proto

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
syntax = "proto3";
2+
3+
package greet;
4+
5+
message GreetingRequestModal
6+
{
7+
string firstName = 1;
8+
string lastName = 2;
9+
}
10+
11+
message GreetingRequest
12+
{
13+
GreetingRequestModal modal = 1;
14+
}
15+
16+
message GreetingResponse
17+
{
18+
string response = 1;
19+
}
20+
21+
service GreetingService
22+
{
23+
// Unary
24+
rpc GreetingUnaryFunc(GreetingRequest) returns (GreetingResponse) {}
25+
26+
// Server Streaming
27+
rpc GreetingServerStreamingFunc(GreetingRequest) returns (stream GreetingResponse) {}
28+
29+
// Client Streaming
30+
rpc GreetingClientStreamingFunc(stream GreetingRequest) returns (GreetingResponse) {}
31+
}

0 commit comments

Comments
 (0)