Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)

Бодибилдинг
Программы тренировок для занятий штангой, гантелями; описание тренажеров

Я записываю курсы!
  Курс валют

НБУ курс евро






C# - Паттерн MVC (Model View Controller)



В этой статье я хочу как можно проще пояснить паттерн (шаблон) MVC (Model View Controller).

Недавно я пошел в книжный магазин, чтобы узнать есть ли у них интересующая меня книга. Так вот, когда я возвращался домой, мне блеснула идея, как проще на примере показать его реализацию. Собственно, давайте я вам расскажу туже схему. По началу, я пришел и спросил про наличие книги. После чего начался поиск по базе. Когда поиск закончился, я получил ответ. Теперь уясним что ж из этого модель, что представление, а что контроллер.

Так вот, ответ, который я получил, это - представление, продавец контроллер, который знает, как говорить с моделью, то есть с базой данных, где он и добывает для меня ответ!

Если все это представить программно, то представлением будет форма, на которой есть поле, куда пользователь будет вводить вопрос. Представление этот вопрос посылает контроллеру. Контроллер делает свое дело, посылая запрос модели. После получения результата, контроллер дает ответ представлению. Уже в самом представление, конечный пользователь увидит ответ!

База данных на схеме и класс, который умеет общаться с нею – не обязательно! Все это может делать сама модель. Просто с моей точки зрения и взгляда на мир ООП, так грамотнее.

Паттерн MVC

А теперь такая схема:

Шаблон MVC

  1. Пользователь вводит вопрос и нажимает кнопку.
  2. Контроллер получает запрос и обращается к модели.
  3. Модель каким то образом дает ответ!

Теперь код:

Представление:

namespace MVC
{
    public partial class View : Form
    {
        // создаем объект класса Controller
        Controller controller = new Controller(); 
        public View()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
                // выводим результат
                MessageBox.Show(controller.Question(textBox1.Text));
        }
    }
}

Контроллер:

namespace MVC
{
    class Controller
    {
        public string Question(string msg)//msg - то что ищем
        { 
            Model model =  new Model();
            return "На даный момент у нас товар "
                + model.GetAnser(msg); 
        }
    }
}

Модель:

namespace MVC
{
    class Model
    {
        //question - то что ищем
        public string GetAnser(string question)
        {
            return DataBase.GetAnser(question);
        }
    }
}

Класс помощник. Умеет общаться с базой данных:

namespace MVC
{
    static class DataBase
    {
        //question - то что ищем
        public static string GetAnser(string question)
        {
            string path = "D:\\shop.txt";// путь к базе даных ):
            
            // создаем обьект (читатель)
            using (StreamReader sr =
                new StreamReader(path, Encoding.Default))
            {
                string str = null;
                while (true)
                {
                    //если пустая то это конец
                    str = sr.ReadLine();
                    if (str != null)
                    {
                        //если считаная строчка 
                        //равна строке для поиска
                        if (str == question)
                            return "есть в наличие.";
                    }
                    else
                        return "нет в наличие.";
                }
            }
        }
    }
}

Тестируем:

patter MVC

Видим, что в текстовом файле есть такая запись, по этому ответ следующий:

шаблон паттерн мвс

Код очень простой! Надеюсь, что все было понятно!



Больше информации читайте по теме:

Переопределение событий в C#.
Применяем делегаты, лямбда выражения и события вместе
C# Делегаты, анонимные методы, лямбда выражения.
Шаблон Factory Method
Методы расширения в C#
Использование делегатов в событиях на C# - Часть 2
Использование делегатов в событиях на C#
Автозапуск программы в C#
Обобщенные делегаты на C#
Регулярные выражения в c#
c# - сортировка List<T>
Пространства имен в c#
c# - Использование Shell (для получения списка файлов/папок)
Методы классов Math и Random в c#
Строковые массивы класса string в c#
c# - Символьные массивы
Массивы в C#
Операторы языка C#
Операции языка C# и особенности их использования
Шифрование на c# (хеш-код строки по алгоритму MD5)
Отписка от событий в c#
Примеры регулярных выражений на c# (класс RegularExpressions.Regex)
c# - итератор для списка Dictionary (foreach для словаря)
Перемешивание списков (массивов) любых типов на c# - противоположность сортировки
c# - CultureInfo (IFormatProvider) и конвертация, приведение числовых типов
Работа в c# с DateTime - получение набора дат в текущем году
GZip - архивация (упаковка) файлов на c#
DateTime - пример определения даты и времени
Время выполнения операций c#
Паттерн (шаблон) SingleTon средствами c#
Обобщенная коллекция Dictionary
c# структуры - не классы?! А что же это - struct VS class
Создание пользовательских событий на c#
Выборка файлов из директории и поддиректорий на c#
Делегаты и методы на c#
Запуск одного экземпляра приложения на c#
c# - Битовый флаг enum



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Александр    04.01.2012 21:22:26
        

У Вас в блоке View создается экземпляр Controller. Это не хорошо, View не должен о нем знать.

78.26.128.181


        Артем    25.01.2012 14:00:56
        

Да, паттерн MVC как раз таков, что ьвюшка вообще нечего не знает ни о модельке, ни о контроллере. Вьюшкой извне управляет контроллер

109.167.36.100




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Черный список покупателей
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок