InstantRpc 0.3.0
dotnet add package InstantRpc --version 0.3.0
NuGet\Install-Package InstantRpc -Version 0.3.0
<PackageReference Include="InstantRpc" Version="0.3.0" />
<PackageVersion Include="InstantRpc" Version="0.3.0" />
<PackageReference Include="InstantRpc" />
paket add InstantRpc --version 0.3.0
#r "nuget: InstantRpc, 0.3.0"
#:package InstantRpc@0.3.0
#addin nuget:?package=InstantRpc&version=0.3.0
#tool nuget:?package=InstantRpc&version=0.3.0
InstantRpc
Using InstantRpc, you can make RPC server without defining interface so that another process on the same PC can get/set properties and invoke methods of any specified object. This enables you to operate or check objects in your app without API from out-of-process test code.
On server, add one line to expose your instance:
// case 1: for basic usage
InstantRpcService.Expose(this);
// case 2: for WPF app UI objects, specify Dispatcher.Invoke() as wrappers to access the object
InstantRpcService.Expose(this, (a) => Dispatcher.Invoke(a), (f) => Dispatcher.Invoke(f));
On client, refer the server assembly, then write calling with lamda expression:
// client side
var client = new InstantRpcClient<YourClass>();
client.WaitUntilExposed(TimeSpan.FromSeconds(5)); // if needed, wait server gets ready
// get
var value = client.Get((x) => x.Value);
// set
client.Set((x) => x.YourProperty, "new value");
// invoke
var result = client.Invoke((x) => x.YourMethod());
Find further examples here InstantRpc.Test/Test1.cs
Remarks
- You can specify any public properties or methods with property chain and casting type.
- Limitations to get/set property and get returning value of method
- ✔ Primitive type
- ✔ Enum
- ✔ ValueTuple (not nested)
- ✔ Parsable type - the type has a method
public static Parse(string)
and it can parseToString()
result. - ✖ Other types
- For method parameter, you can give any type if you specify constructor including property initialization.
- ✔
client.Invoke((x) => x.YourMethod(new MyParam("1", "2"), new MyParam() { Value = "3" })));
- ✖
client.Invoke((x) => x.YourMethod(myParam1, myParam2));
if myParams are not parsable.
- ✔
- Multiple servers/clients on a PC is not supported.
Requirements
No dependencies. You can use this library for any projects, but I recommend to use on testing environment only.
Supported platform:
- .NET Framework 4.0+
- .NET Core 2.0+
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
This package has 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.