@@ -9,101 +9,54 @@ Install-Package BeetleX.XRPC -Version x
9
9
```
10
10
## Server
11
11
``` csharp
12
- class Program
13
- {
14
- private static XRPCServer mXRPCServer ;
15
- static void Main (string [] args )
16
- {
17
- mXRPCServer = new XRPCServer ();
18
- // mXRPCServer.ServerOptions.DefaultListen.Port = 80;
19
- mXRPCServer .Register (typeof (Program ).Assembly );
20
- mXRPCServer .Open ();
21
- Console .Read ();
22
- }
23
- }
24
- ```
25
- ## Server controller
26
- ``` csharp
27
- [Controller (typeof (IUserService ))]
28
- public class UserService : IUserService
12
+ class Program
29
13
{
30
- public Task <User > Add (string name , string email , string city , string remark )
31
- {
32
- User user = new User ();
33
- user .Name = name ;
34
- user .EMail = email ;
35
- user .City = city ;
36
- user .Remark = remark ;
37
- return Task .FromResult (user );
38
- }
39
-
40
- public Task <List <User >> List (int count )
14
+ static void Main (string [] args )
41
15
{
42
- List < User > result = new List < User >();
43
- for ( int i = 0 ; i < count ; i ++ )
16
+ var builder = new HostBuilder ()
17
+ . ConfigureServices (( hostContext , services ) =>
44
18
{
45
- User user = new User ();
46
- user .ID = Guid .NewGuid ().ToString (" N" );
47
- user .City = " GuangZhou" ;
48
-
49
- user .Name = " henryfan" ;
50
- user .Remark = " http://ikende.com" ;
51
- result .Add (user );
52
- }
53
- return Task .FromResult (result );
54
- }
55
-
56
- public bool Login (string name , string pwd )
57
- {
58
- return (name == " admin" && pwd == " 123456" );
19
+ services .UseXRPC (s =>
20
+ {
21
+ s .ServerOptions .LogLevel = BeetleX .EventArgs .LogType .Trace ;
22
+ s .ServerOptions .DefaultListen .Port = 9090 ;
23
+ s .RPCOptions .ParameterFormater = new JsonPacket ();// default messagepack
24
+ },
25
+ typeof (Program ).Assembly );
26
+ });
27
+ builder .Build ().Run ();
59
28
}
29
+ }
30
+ ```
31
+ ## Server controller
32
+ ``` csharp
60
33
61
- public User Modify ( User user )
62
- {
63
- return user ;
64
- }
34
+ public interface IHello
35
+ {
36
+ Task < string > Hello ( string name ) ;
37
+ }
65
38
66
- public void Save ()
39
+ [Service (typeof (IHello ))]
40
+ public class HelloImpl : IHello
41
+ {
42
+ public Task <string > Hello (string name )
67
43
{
68
- Console . WriteLine ( " user saved " );
44
+ return $" hello { name } { DateTime . Now } " . ToTask ( );
69
45
}
70
46
}
71
47
```
72
48
## Client
73
49
``` csharp
74
- client = new XRPCClient (" localhost" , 9090 );
75
- client .Connect ();
76
- client .NetError = (c , e ) =>
77
- {
78
- Console .WriteLine (e .Error .Message );
79
- };
80
- client .TimeOut = 10000 ;
81
- ```
82
- ``` csharp
83
- var api = client .Create <IUserService >();
84
- var lresult = await api .Login (" admin" , " 123456" );
85
- Console .WriteLine (lresult );
86
- var result = await api .
Add (
" henry" ,
" [email protected] " ,
" gz" ,
" http://github.com" );
87
- Console .WriteLine ($" {result .Name }\t {result .EMail }\t {result .City }\t {result .Remark }" );
88
- await api .Save ();
89
- Console .WriteLine (" save completed" );
90
- User user = new User ();
91
- user .ID = Guid .NewGuid ().ToString (" N" );
92
- user .Name = " henry" ;
93
-
94
- user .City = " GuangZhou" ;
95
- user .Remark = " http://github.com/ikende" ;
96
- result = await api .Modify (user );
97
- Console .WriteLine ($" {result .Name }\t {result .EMail }\t {result .City }\t {result .Remark }" );
98
- var items = await api .List (5 );
99
- foreach (var item in items )
100
- {
101
- Console .WriteLine ($" {item .Name }\t {item .EMail }\t {item .City }\t {item .Remark }" );
102
- }
50
+ client = new XRPCClient (" localhost" , 9090 );
51
+ client .Options .ParameterFormater = new JsonPacket ();// default messagepack
52
+ hello = client .Create <IHello >();
53
+ while (true )
54
+ {
55
+ Console .Write (" Enter you name:" );
56
+ var name = Console .ReadLine ();
57
+ var task = hello .Hello (name );
58
+ task .Wait ();
59
+ Console .WriteLine (task .Result );
60
+ }
103
61
```
104
- ## Performance
105
- `
106
- Server: E3-1230V2 16Gb Bandwidth:10Gb sysetm: windows 2008
107
- `
108
- ![ ] ( https://github.com/IKende/dotnet-rpc-benchmark/raw/master/Result/10G_128C.png?raw=true )
109
- [ https://github.com/IKende/dotnet-rpc-benchmark ] ( https://github.com/IKende/dotnet-rpc-benchmark )
62
+
0 commit comments