Если приложение C ++ также работает в Windows, именованные каналы были бы хорошим решением. Их можно настроить так, чтобы они были долговечными, поэтому они могут ставить в очередь сообщения, если какая-либо из сторон не готова принять сообщение, и они довольно просты в использовании. По сути, они выглядят как файлы, которые вы можете читать или записывать, а данные появляются на другой стороне "канала".
Посмотрите документацию (C ++) здесь: http://msdn.microsoft.com/en-us/library/aa365781(v=VS.85).aspx
На стороне ASP.NET вы будете использовать .NET API. Вот хороший пример для начала работы: http://msdn.microsoft.com/en-us/library/bb546085.aspx (Этот пример включает в себя как клиентский, так и серверный код.)
Именованные каналы были бы отличным решением, если приложение C ++ находится на том же физическом сервере, что и приложение ASP.NET. В этом случае ОС будет просто перемещать память между процессами для вас, поэтому она может быть очень быстрой.
Кроме того, я бы настроил приложение C ++ как службу Windows, чтобы оно всегда было доступно и могло быть перезапущено при перезапуске сервера, на котором он запущен. Если поддерживать его в рабочем состоянии очень важно, вы можете интегрировать счетчики производительности, а затем ваша оперативная группа контролирует счетчики, чтобы убедиться, что он работает в ожидаемых пределах.