Повторное использование компонентов между ASP.NET и C#.NET

Это может показаться смешным вопросом, так как я совершенно неопытен в.NET.

Можно ли создавать компоненты в C#, используя.NET, который можно повторно использовать в ASP.NET. Например, если вы хотите портировать приложение на веб.

Если возможно, насколько они портативны? Т.е. можно ли в какой-то степени использовать графический интерфейс? Существует ли промежуточный формат для использования в качестве базового или требуется использование компонентов C# в качестве двоичных файлов?

Благодарю.

Редактировать:

Спасибо за ваш вклад! Я хорошо знаком с аспектами проектирования этой проблемы, то есть с тем, как моделировать компоненты для повторного использования. Однако вы заставили меня осознать, что на самом деле вопрос заключается в следующем: в какой степени.NET можно повторно использовать между ASP и Windows? Можно ли сказать, что некоторые пакеты компонентов.NET не зависят от среды, а некоторые - от платформы?

3 ответа

Решение

Абсолютно - класс.NET можно использовать в любом приложении.NET. Однако это зависит от того, о какой части приложения вы говорите.

Как правило, пользовательские интерфейсы Windows Forms НЕ могут повторно использоваться в качестве пользовательских интерфейсов ASP.NET, потому что конструктивные ограничения настолько различны (т. Е. Веб-браузеры поддерживают только небольшое количество элементов управления, часто используют макет потока (не сетки) и т. Д. Аналогично, события различаются (кнопка веб-формы отличается от кнопки формы Windows и т. д.).

Что вы можете легко использовать повторно, хотя, если вы все делаете правильно, это бизнес-логика. Создайте свои классы так, чтобы они ничего не знали о том, является ли это формой Windows или веб-формой (или консольным приложением, или веб-службой и т. Д.). То есть классы должны быть чистой реализацией вашей бизнес-логики. Затем вы можете использовать эти классы в любом контексте.

Короткий ответ на ваш вопрос - да - просто выделите код, которым вы хотите поделиться между двумя представлениями, в независимый от интерфейса класс, предпочтительно в отдельную сборку, и включите эту сборку.

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

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

Я никогда не делал этого раньше, но я думаю, вы можете поместить общий код в отдельный класс. Пользовательский интерфейс должен быть продублирован, поскольку формы окон и asp.net имеют совершенно разные подходы к программированию.

Другие вопросы по тегам