Архитектура приложения, лучший способ сделать это - PullRequest
2 голосов
/ 09 ноября 2010

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

Я, в основном, веб-программист, работающий с PHP, MySql, Unix и т. Д., И когда я создаю веб-сайт, мне нравится иметь конкретную структуру, которая будет иметь дело с такими вещами, как:

  • ОшибкаОбработка
  • Ввод / вывод
  • Библиотеки
  • Структура приложения
  • Абстракция базы данных / модели
  • Мониторинг ресурсов

В этом списке еще есть несколько пунктов, но я не буду его сокращать.

Поэтому, когда я нахожусь в C #, я понимаю, что при загрузке приложения мы запускаем непосредственно главную форму, которая, по-моему, заставляет вас форсироватьлогика для окон / форм в главной форме /

Лично я могу ошибаться, и это то, как это должно быть сделано, но я действительно так не думаю, я хочу сделать набор классов, которые контролируют«Процесс приложения» как таковой, эта базовая система будет контролировать создание и удаление форм, создание потоков и т. д.

Поэтому, когда Application.run() запускает мое приложение, я хочу, чтобы оно запустило объект с именем Systemи тогда этот объект будет анализировать Settings Files, Registry keys, Meta Information (CPU,Ram etc), Debugger, Switch Detection и т. д.

Затем он будет обрабатывать информацию и в зависимости от различных объектов, влияющих на загрузку приложения, мыбудет запускать форму, передавая информацию в эту форму.

Внутри этой формы, если пользователь A нажимает File > Options, то он запрашивает у системы загрузку формы параметров. Класс System затем загружает форму параметров.Передача требуемой информации.

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

Чтобыло бы хорошим примером построения системы, которая работает следующим образом, и у вас, ребята, есть какие-либо советы о том, как мне это сделать.

Также любой действительно пойдетпримеры, книги, статьи по созданию архитектуры MVC на языке C # также были бы плюсом.

Пожалуйста, просветите меня по этому вопросу.

Ответы [ 3 ]

3 голосов
/ 09 ноября 2010

Роберт,

Если вы создадите новое приложение Windows с помощью Visual Studio, вы определенно получите основную форму, как показано на первом экране, но это не обязательно должно быть так.

Visual Studio сделает это за вас.Он создает класс Program (Program.cs) с методом Main (который является точкой входа для вашего приложения, почти как любой другой язык) и вызывает для вас основную форму.

Найдите Program.csи вы найдете это:

static class Program
{
    /// 
    /// The main entry point for the application.
    /// 
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

Зная это, вы можете изменить его и делать практически все, что вы хотите, изменить способ обработки форм вашим приложением.

0 голосов
/ 09 ноября 2010

Если вы создаете более крупное приложение, вы можете создать среду для запуска модулей, компонентов, ресурсов и форм, а затем в конце отобразить свою форму.Я делаю это сам с MEF , поэтому, когда мои приложения запускаются, я позволяю MEF составить все компоненты, получить основную форму из MEF и запустить ее с Application.Run.Или я иногда извлекал свой основной контроллер формы (MVC) и велел контроллеру обработать Application.Run.

0 голосов
/ 09 ноября 2010

Существуют разные архитектуры для удовлетворения такого подхода:

Многоуровневая архитектура. Храните приложение в слоях. Реализуйте пользовательский интерфейс (называемый презентацией) на отдельном уровне (чтение сборки / исполняемый файл). Таким образом, процесс подачи заявки теперь находится в стороне от winform. Храните бизнес-логику (как работает процесс приложения) на отдельном уровне, а доступ к данным на отдельном уровне.

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

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