В зависимости от потребностей вашего приложения может быть лучше просто отказаться от клиента C # и создать только веб-интерфейс. Таким образом, ваши клиенты могут сэкономить деньги, не покупая коробку Windows с платформой .NET - браузер - это все, что вам нужно. Вы также сможете обновить свой веб-сайт, и все клиенты получат выгоду от ваших обновлений мгновенно.
Но если вы решите построить оба, есть несколько путей для выбора. Вы можете разместить свою бизнес-логику очень близко к внутреннему серверу. Вы могли бы даже написать это на C ++. Затем создайте общий коммуникационный уровень и отдельные уровни представления для каждого из ваших клиентских приложений (веб и настольный компьютер).
Другой подход - приблизить бизнес-логику к клиенту. Запишите его в .Net и сделайте его частью вашего настольного приложения и веб-сайта. Это бизнес-приложение может взаимодействовать с внутренним сервером, используя некоторую абстрактную стратегию (мыло для настольного клиента и прямое для веб-сервера). Конечно, это на самом деле не спасает вас от написания кода проверки на вашем внутреннем сервере C ++.