For one of my projects, needed to build a networking and data layer as a library which could be used in my Unity game. I wanted a single library which would provide data model classes, handling both persistence (database) and client/server transport (networking).
It made sense to build the project using C# .NET 4.6, meaning that it’d use the same language / framework as Unity itself. However, the rest of the architecture decisions I made are largely language agnostic. In the following posts, I’ll discuss both the code (implementation), as well as related (i.e., deployment) topics.
- Pluggable networking, with GRPC (HTTP/2) & GraphQL (HTTP 1.1) supported natively.
- Pluggable databases, with MySQL and Sqlite supported natively.
- Server deployed on AWS (ElasticBeanstalk) with auto-scaling and load-balancing.
- Client targeting all platforms (iOS, Android, Windows, Mac, Linux, Web).
- Building a Deploy-less GraphQL Gateway to a GRPC Server
- Cross-Compiling GRPC in C# and Unity, targeting All Platforms (iOS, Android, Linux, Windows, Mac)
- GraphQL and GRPC Speed Test using C# and Ruby