Программирование сокетов; я должен использовать pInvoke или написать версию C # существующего приложения C ++ - PullRequest
0 голосов
/ 25 февраля 2010

Я был назначен на задачу, где мне нужно подключиться к сокету и получать много обновлений (3K-4K сообщений в секунду). Мне также нужно отправить некоторое сообщение на сервер для аутентификации и конфигурации.

Существуют приложения C ++, предоставленные поставщиком данных, и у них нет образца c #. Я пытался написать это приложение на C #, но возникли некоторые трудности; особенно с структурами сортировки, содержащими массивы переменной длины и т. д. Я на правильном пути, чтобы сделать это?

Мне посоветовали использовать PInvoke, но, похоже, мне нужно сначала изменить их образец C ++, чтобы он стал похожим на API, а затем я могу правильно вызвать его на C #. И я не уверен насчет производительности с PInvoke.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2010

P / Invoke снижает производительность. C # имеет очень хорошую модель сетевого программирования, и я действительно советую вам попробовать еще раз. Преимущество будет в том, что у вас будет полностью управляемое, более эффективное и обслуживаемое приложение.

Конечно, если существующее приложение огромно и вам нужно много времени для его переноса на C #, вы можете рассмотреть p / invoke. Однако, поскольку вам все еще нужно изменить его, вы потеряете некоторые преимущества этого маршрута.

0 голосов
/ 25 февраля 2010

Почему бы не использовать C ++, если приложение уже в этом?
Если есть причина использовать C #, я всегда переписываю C ++, если это возможно. Вы будете писать новый код на C #, чтобы вы могли выполнить полную миграцию, а не громоздкую смесь.
Я, конечно, не стал бы использовать pinvoke для чего-то вроде сетевого программирования ... это достаточно сложно, как и без добавления этого. Это неизбежно сказывается на производительности, хотя в действительности это «зависит».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...