Я пытаюсь перенести простое приложение WinForms в веб-приложение ASP.Net. Приложение WinForms в основном является только уровнем представления для сложного простого приложения C и взаимодействует с устаревшим кодом через COM-взаимодействие. У меня скромный опыт работы с ASP.Net, javascript, jQuery и большой опыт работы с WinForms и взаимодействием, поэтому я знаю основы, мне просто нужно принять решение по дизайну.
Сейчас приложение выглядит так:
Существует куча устаревшего кода C (даже не C++), который может быть изменен и перекомпилирован, но перенос невозможен. Это уровень бизнес+данные, называйте его как хотите. Я буду называть его устаревшим кодом.
При запуске устаревший код создает экземпляр COM-сервера, который используется для представления и взаимодействия с пользователем. Данные презентации сериализуются и отправляются в этот COM-объект («Я отправляю вам некоторые выходные данные»), а взаимодействие с пользователем достигается посредством циклического опроса («У вас есть какие-либо данные для меня? ?"). Не самое красивое решение, но чертовски простое.
COM-объект на самом деле представляет собой приложение .NET 2.0 WinForms, представленное как COM. Это приложение также предоставляет некоторые функции другим приложениям .NET через .NET Remoting, но это также не так важно.
Хотя система довольно сложная, приложение WinForms действительно используется только для взаимодействия, поэтому переключиться на веб довольно просто. В чем я не уверен, так это в том, как лучше всего сделать веб-сервер ‹---> взаимодействие с устаревшим кодом.
Первое, что приходит мне в голову (поскольку я уже внедрил .NET Remoting), — это предоставить функциональность WinForms веб-части через локальное .NET Remoting, заставив его действовать как своего рода прокси между устаревшим кодом и веб-приложением. На самом деле мне нужна была бы только коммуникационная часть, без форм. В этом случае веб-приложение должно будет получить доступ к этой функции через .NET Remoting (локально).
Целесообразно ли, чтобы веб-приложение локально взаимодействовало с другим приложением с помощью .NET Remoting? Кроме того, я мог бы изменить приложение на службу Windows, но смогу ли я по-прежнему предоставлять его функциональность через COM для устаревшего кода?
Что было бы лучшим способом для достижения этого? Обратите внимание, что я также могу внести некоторые изменения в устаревший код, если это необходимо.