hexagonal architecture .net example