GraphQL, C#, and Data Aggregations

Disclaimer

This article describes my personal experience dealing with GraphQL usage for reports in the Asp.Net Core application. I’m not claiming that my solution is the best one. However, I was focused on achieving low maintenance costs and simple implementation.

I will provide only a high-level overview of GraphQL without diving deep into more advanced features like Schema Stitching, etc.

I’m open to discussion about this topic, so feel free to prove I’m wrong :)

What is GraphQL?

GraphQL is a tool that provides dynamic queries against application data.

The main benefit is that client of API can easily configure the data he wants…


Or How to replace a Dictionary with CLR?

Disclaimer

This article gives an overview of the techniques that can make your code harder to understand and maintain.

Clean code is the priority of development. Developers can effectively implement any performance optimizations only after setting up measurement for Clean code execution.

Dictionary of Generics

Example

Imagine the following hierarchy:

  • ICar interface represents general Vehicle interface.
  • IElecricCar, IDieselCar, and IGasolineCar implement ICar interface with additional functionality.
  • Car A, CarB, Car C, etc., implement a specific interface from the layer above.
Visualized hierarchy example

Now, let’s assume that we need to put all of these class instances inside some data structure that will allow us to access them by…


A real-life example of LINQ queries optimization.

Disclaimer

Write clean code. Measure. Optimize.
Optimization of LINQ is necessary only when it is the root of the problem.

If you make an optimization and don’t measure to confirm the performance increase, all you know for certain is that you’ve made your code harder to read.
Martin Fowler

Introduction

Project

I’m working on an open-source pet project called QueryNinja that provides dynamic query building. Changes defined in this article are related to version v1.1.0 and will be applied in future releases. The main execution path includes creating the query using Asp.Net Core ModelBinding and translating the query to Expression Trees.

LINQ vs. ‘for’ loop

‘For’ loops…

Oleksandr Redka

Lead Software Engineer at EPAM

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store