2009-12-03 1 views
2

Я пытаюсь перенести простое приложение WinForms в веб-приложение ASP.Net. Приложение WinForms в основном представляет собой только уровень представления для сложного простого приложения C и взаимодействует с устаревшим кодом через COM-взаимодействие. У меня скромный опыт работы в ASP.Net, javascript, jQuery и большой опыт работы в WinForms и interop, поэтому я знаю основы, мне просто нужно принять дизайнерское решение.Веб-приложение для устаревшего кода interop

Путь приложение выглядит сейчас так:

  1. Существует куча унаследованной C (даже не С ++) код, который может быть изменен и повторно, но портирование это не вариант. Это уровень бизнес + данных, назовите его так, как вы хотите. Я буду называть его устаревшим кодом.

  2. При запуске устаревший код создает COM-сервер, который используется для представления и взаимодействия с пользователем. Данные презентации сериализуются и отправляются на этот COM-объект («Я отправляю вам некоторый результат».), а взаимодействие с пользователем осуществляется посредством циклического опроса («Есть ли у вас вход для меня?»). Не самое красивое решение, но просто как черт.

  3. COM-объект - это приложение .NET 2.0 WinForms, отображаемое как COM. Это приложение также предоставляет некоторые функции другим приложениям .NET через .NET Remoting, но это также не так важно.

Хотя система довольно сложна, приложение WinForms действительно используется только для взаимодействия, поэтому довольно легко переключиться на Интернет. Я не уверен, что это лучший способ сделать веб-сервер. < ---> взаимодействие устаревшего кода.

Первое, что приходит мне на ум (поскольку я уже реализовал .NET Remoting) заключается в том, чтобы разоблачить функциональность WinForms для веб-части через локальный .NET Remoting, заставляя ее действовать как своего рода прокси-сервер между устаревшим кодом и веб-приложение. Мне на самом деле нужна только часть сообщения, без форм. В этом случае веб-приложение должно получить доступ к этой функции через .NET Remoting (локально).

Можно ли использовать веб-приложение для локального использования в другом приложении с помощью .NET Remoting? Кроме того, я мог бы изменить приложение на службу Windows, но могу ли я по-прежнему показывать его функциональность через COM для устаревшего кода?

Что было бы лучшим способом достичь этого? Обратите внимание, что при необходимости я могу внести некоторые изменения в устаревший код.

ответ

2

Я считаю, что одним важным аспектом для вас является односторонность приложения WinForms и многопользовательская сессия сети.

10 лет назад Я был вовлечен в несколько веб-проектов, в которых мы управляли бизнес-логикой как объекты COM (VB6) в MTS, а затем COM +. Если позволить этим COM-объектам принадлежать сеансам, это не-нет, потому что, если пользователи приходят и уходят много, вы можете получить много ресурсов, связанных с неиспользуемыми, но живущими COM-объектами.

Я предлагаю вам изучить запуск COM-объектов в службах компонентов. Возможно, это НЕ РЕШЕНИЕ, но это стоит изучить.

Ввод COM-объектов в Службы компонентов как можно ближе к написанию службы Windows, доступной через COM - что-то, что я коснулся бы всех x в y: где x - любимая еда, а y - любимое место.

.Net Remoting замечательный, но в основном интересный как устройство связи. Я не знаю, собираетесь ли вы разделить это на многих серверах, это похоже на внутреннее приложение компании. У меня недостаточно подробностей, чтобы быть более конкретными.

+0

Спасибо за ваш ответ. У меня нет опыта работы с Component Services, поэтому я сначала проверю это. – Groo

1

Похоже, вы должны попытаться найти место для простое использование простого кода WinForms через инфраструктуру ASP.NET. Это означает, что вам, вероятно, не понадобится перезаписывать код пользовательского интерфейса, а просто использовать его как есть в некоторой эмуляционной инфраструктуре WinForms через Интернет.

Смотрите мое немедленное предложение структуры, которая делает именно то, что: http://www.visualwebgui.com/landing/wow.aspx

Я надеюсь, что это помогает ...

+0

Спасибо. Но графический интерфейс настолько прост, что у меня нет проблем с переносом его в Интернет. Проблема в том, что приложение WinForms действует как COM-сервер для простого приложения C, которое фактически создает его. Эта активация меня беспокоит. – Groo