|
|
|
@ -4,74 +4,117 @@ gRPC C# |
|
|
|
|
A C# implementation of gRPC. |
|
|
|
|
|
|
|
|
|
Status |
|
|
|
|
----------------- |
|
|
|
|
------ |
|
|
|
|
|
|
|
|
|
**This gRPC C# implementation is work-in-progress and is not expected to work yet.** |
|
|
|
|
Ready for early adopters. |
|
|
|
|
|
|
|
|
|
- The implementation is a wrapper around gRPC C core library |
|
|
|
|
- Code only runs under mono currently, building gRPC C core library under Windows |
|
|
|
|
is in progress. |
|
|
|
|
- It is very possible that some parts of the code will be heavily refactored or |
|
|
|
|
completely rewritten. |
|
|
|
|
Usage: Windows |
|
|
|
|
-------------- |
|
|
|
|
|
|
|
|
|
- Prerequisites: .NET Framework 4.5+, Visual Studio 2013 with NuGet extension installed (VS2015 should work). |
|
|
|
|
|
|
|
|
|
INSTALLATION AND USAGE: WINDOWS |
|
|
|
|
------------------------------- |
|
|
|
|
- Open Visual Studio and start a new project/solution. |
|
|
|
|
|
|
|
|
|
- Open Grpc.sln using Visual Studio 2013. NuGet dependencies will be restored |
|
|
|
|
upon build. |
|
|
|
|
- Add NuGet package `Grpc` as a dependency (Project options -> Manage NuGet Packages). |
|
|
|
|
That will also pull all the transitive dependencies (including the native libraries that |
|
|
|
|
gRPC C# is internally using). |
|
|
|
|
|
|
|
|
|
- TODO: link to Helloworld example |
|
|
|
|
|
|
|
|
|
INSTALLATION AND USAGE: LINUX & MONO |
|
|
|
|
------------------------------------ |
|
|
|
|
Usage: Linux (Mono) |
|
|
|
|
-------------- |
|
|
|
|
|
|
|
|
|
- Compile and install the gRPC C# extension library (that will be used via |
|
|
|
|
P/Invoke from C#). |
|
|
|
|
- Prerequisites: Mono framework, MonoDevelop 5.9 with NuGet add-in installed. |
|
|
|
|
|
|
|
|
|
- Install gRPC C Core using instructions in https://github.com/grpc/homebrew-grpc |
|
|
|
|
|
|
|
|
|
- TODO: explain using LD_LIBRARY_PATH or installation to /usr/local |
|
|
|
|
|
|
|
|
|
- Open MonoDevelop and start a new project/solution. |
|
|
|
|
|
|
|
|
|
- Add NuGet package `Grpc` as a dependency (Project -> Add NuGet packages). |
|
|
|
|
|
|
|
|
|
- TODO: link to Helloworld example |
|
|
|
|
|
|
|
|
|
Building: Windows |
|
|
|
|
----------------- |
|
|
|
|
|
|
|
|
|
You only need to go through these steps if you are planning to develop gRPC C#. |
|
|
|
|
If you are a user of gRPC C#, go to Usage section above. |
|
|
|
|
|
|
|
|
|
- Prerequisites for development: NET Framework 4.5+, Visual Studio 2013 (with NuGet and NUnit extensions installed). |
|
|
|
|
|
|
|
|
|
- The grpc_csharp_ext native library needs to be built so you can build the Grpc C# solution. You can |
|
|
|
|
either build the native solution in `vsprojects/grpc.sln` from Visual Studio manually, or you can use |
|
|
|
|
a convenience batch script that builds everything for you. |
|
|
|
|
``` |
|
|
|
|
make grpc_csharp_ext |
|
|
|
|
sudo make install_grpc_csharp_ext |
|
|
|
|
buildall.bat |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- Prerequisites for development: Mono framework, MonoDevelop (IDE) |
|
|
|
|
- Open Grpc.sln using Visual Studio 2013. NuGet dependencies will be restored |
|
|
|
|
upon build (you need to have NuGet add-in installed). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Building: Linux & Mono |
|
|
|
|
---------------------- |
|
|
|
|
|
|
|
|
|
You only need to go through these steps if you are planning to develop gRPC C#. |
|
|
|
|
If you are a user of gRPC C#, go to Usage section above. |
|
|
|
|
|
|
|
|
|
- Prerequisites for development: Mono framework, MonoDevelop 5.9 with NuGet and Nunit add-ins installed. |
|
|
|
|
``` |
|
|
|
|
sudo apt-get install mono-devel |
|
|
|
|
sudo apt-get install monodevelop monodevelop-nunit |
|
|
|
|
sudo apt-get install nunit nunit-console |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- NuGet is used to manage project's dependencies. Prior opening Grpc.sln, |
|
|
|
|
download dependencies using NuGet restore command: |
|
|
|
|
You can use older versions of MonoDevelop, but then you might need to restore |
|
|
|
|
NuGet dependencies manually (by `nuget restore`), because older versions of MonoDevelop |
|
|
|
|
don't support NuGet add-in. |
|
|
|
|
|
|
|
|
|
- Compile and install the gRPC C# extension library (that will be used via |
|
|
|
|
P/Invoke from C#). |
|
|
|
|
``` |
|
|
|
|
# Import needed certicates into Mono certificate store: |
|
|
|
|
mozroots --import --sync |
|
|
|
|
|
|
|
|
|
# Download NuGet.exe http://nuget.codeplex.com/releases/ |
|
|
|
|
# Restore the nuget packages with Grpc C# dependencies |
|
|
|
|
mono ~/Downloads/NuGet.exe restore Grpc.sln |
|
|
|
|
make grpc_csharp_ext |
|
|
|
|
sudo make install_grpc_csharp_ext |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- Use MonoDevelop to open the solution Grpc.sln (you can also run unit tests |
|
|
|
|
from there). |
|
|
|
|
- Use MonoDevelop to open the solution Grpc.sln |
|
|
|
|
|
|
|
|
|
- Build the solution & run all the tests from test view. |
|
|
|
|
|
|
|
|
|
Tests |
|
|
|
|
----- |
|
|
|
|
|
|
|
|
|
- After building the solution with MonoDevelop, you can use |
|
|
|
|
nunit-console to run the unit tests (currently only running one by |
|
|
|
|
one will make them pass. |
|
|
|
|
gRPC C# is using NUnit as the testing framework. |
|
|
|
|
|
|
|
|
|
Under Visual Studio, make sure NUnit test adapter is installed (under "Extensions and Updates"). |
|
|
|
|
Then you should be able to run all the tests using Test Explorer. |
|
|
|
|
|
|
|
|
|
Under Monodevelop, make sure you installed "NUnit support" in Add-in manager. |
|
|
|
|
Then you should be able to run all the test from the Test View. |
|
|
|
|
|
|
|
|
|
After building the solution, you can also run the tests from command line |
|
|
|
|
using nunit-console tool. |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# from Grpc.Core.Test/bin/Debug directory |
|
|
|
|
nunit-console Grpc.Core.Tests.dll |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
CONTENTS |
|
|
|
|
Contents |
|
|
|
|
-------- |
|
|
|
|
|
|
|
|
|
- ext: |
|
|
|
|
The extension library that wraps C API to be more digestible by C#. |
|
|
|
|
- Grpc.Auth: |
|
|
|
|
gRPC OAuth2 support. |
|
|
|
|
- Grpc.Core: |
|
|
|
|
The main gRPC C# library. |
|
|
|
|
- Grpc.Examples: |
|
|
|
|
API examples for math.proto |
|
|
|
|
- Grpc.Examples.MathClient: |
|
|
|
|
An example client that sends some requests to math server. |
|
|
|
|
- Grpc.Examples.MathServer: |
|
|
|
|
An example client that sends some requests to math server. |
|
|
|
|
- Grpc.IntegrationTesting: |
|
|
|
|
Client for cross-language gRPC implementation testing (interop testing). |
|
|
|
|
Cross-language gRPC implementation testing (interop testing). |
|
|
|
|