Мой совет - реализовать код там, где вам удобнее, но не забывайте о требованиях взаимодействия во время работы. Знайте заранее, каков ваш интерфейс и какой клей требуется в конечном продукте. Напишите интерфейс и протестируйте взаимодействие, прежде чем заполнять реализацию.
Если сложность вашего требования делает уровень комфорта несущественным, я написал бы его на C ++ таким образом, чтобы вы могли получить к нему доступ через P / Invoke.
Одним из важных факторов является то, что вы используете C ++ / CLI или нативный C ++. Намного проще взаимодействовать между C ++ / CLI и C # в любом направлении.