Improving rpc bkp

13
eleks.com eleks.com RPC. part 2. My Project. Using some patterns

Transcript of Improving rpc bkp

Page 1: Improving rpc bkp

eleks.com eleks.com

RPC. part 2. My Project. Using some patterns

Page 2: Improving rpc bkp

Improve proto types for using them in collections- Add Empty message type for void input or output parameters.- Add some repeatable types for data collections.- Improve Client and server to use those types - Don’t forget to add “Google.Protobuf.Custom v3.0.0-beta” reference to Client and Server

Page 3: Improving rpc bkp

// The request message containing the user's name.message stringRequest { string str = 1;}// The response message containing Usermessage User { int32 id = 1; string name = 2; string surname = 3;}

// The response message containing the USERSmessage UsersCollection { repeated User users = 1;}message Empty {}

Page 4: Improving rpc bkp

Server side code sample//private server fieldGoogle.Protobuf.Collections.RepeatedField<User> users;

public Task<UsersCollection> GetUserByName(stringRequest request, ServerCallContext context) { var reply = new UsersCollection();

var enumerator = users.GetEnumerator();

do { if (enumerator.Current != null) { if (enumerator.Current.Name == request.Str)

{ reply.Users.Add(enumerator.Current); } }

} while (enumerator.MoveNext());

return Task.FromResult(reply);}

Page 5: Improving rpc bkp

Client side code sample var users = client.GetUserByName(new stringRequest { Str = user }).Users; var enumerator = users.GetEnumerator();

do { if (enumerator.Current != null) { //do smth with user element } } while (enumerator.MoveNext());

Page 6: Improving rpc bkp

Online Shop sample

Page 7: Improving rpc bkp

InterfacesClient:

- Order a good (returns order id, or 0)- Cancel order (by order id)- Get my orders

Server:- Buy, Cancel handling- Some internal logic

Page 8: Improving rpc bkp

Lets CODE IT!

Page 9: Improving rpc bkp

Server Internal Logic. How to implement?

What is Template Method?

Can we use it here?

Page 10: Improving rpc bkp

What to do, if need to switch between RPC and non-RPC Server ?

Need to Adapt!

Real-Time Switching (Strategy)

Page 11: Improving rpc bkp

To Learn From:I Strongly Recommend this book for Patterns explanation:“Freeman Er, Freeman El - design patterns” (clear explanation, funny)

Page 12: Improving rpc bkp

eleks.com

Thanks!

Page 13: Improving rpc bkp

eleks.com

Inspired by Technology.Driven by Value.