Skip to content

Калькулятор (версия сентября 2013 года). Приложение для демонстрации.

License

Notifications You must be signed in to change notification settings

ringill/Calculator_02

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Calculator_02

###Калькулятор (версия августа 2013 года)

Приложение представляет собой калькулятор с 4мя операциями (сложение, вычитание, умножение, деление) для 2х аргументов (аргумент - целое число от -2 147 483 648 до 2 147 483 647 включительно). Результат вычисления операции выводится через интерфейс пользователя, а также сама операция пишется в хранилище логов. Последние 5 операций можно посмотреть через пользовательский интерфейс.

Структура приложения делится на несколько слоев. Сборки вышележащего слоя не знают о реализации сборок нижележащего слоя, а знают только об интерфейсах нижележащего слоя.

Первый слой. Пользовательский интерфейс. Реализован как в виде WindowsForms-приложения (сборка Calculator.UI.WinApp), так и в виде ASP.NET MVC приложения (сборка Calculator.UI.MvcApp). Вызывает методы презентера через его интерфейс.Перехватывает исключения, которые возбуждают все нижележащие слои.

Второй слой. Презентер. (Интерфейс в сборке Calculator.Presentation.AbstractPresenters; Реализация в сборке Calculator.Presentation.Presenter) Занимается тем, что получает данные от пользовательского интерфейса в виде представлений (так называемых ViewModel, которые хранятся в сборке Calculator.Presentation.ViewModels). Проверяет валидность значений во ViewModel. Вызывает методы различных служб домена (опять же через их интерфейсы, хранящиеся здесь же, в сборке презентера), передавая им параметры из ViewModel и возвращает результат пользовательскому интерфейсу (либо в виде простых типов, либо в виде ViewModel; ViewModel преимущественно состоят из строковых полей).

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

Четвертый слой. Хранилище. Хранилище представлено следующими сборками:

  • Calculator.DataAccess.EF - лог хранится в базе данных MS SQL Server, а доступ к базе осуществляется через ORM Entity Framework.
  • Calculator.DataAccess.Sql - лог хранится в базе данных MS SQL Server, а доступ к базе осуществляется SQL-запросами через ADO.NET.
  • Calculator.DataAccess.Xml - лог хранится в xml-файле.

Описание прочих проектов (сборок):

  • Calculator.Infrastructure.BootStrapper - представляет собой реализацию IoC контейнера Unity. Здесь в файле Bootstrapper.cs маппинг интерфейсов и их реализаций. Между хранилищами можно переключаться раскомментирование соответствующих строк.
  • проекты Calculator.Tests - содержат Unit-тесты различных сборок.
  • Calculator.Settings - задача этой сборки - приведение параметров конфигурации приложения, которые хранятся в виде строк, к строготипизированному виду.
  • Calculator.Utils - содержит утилитарные методы, которые не касаются напрямую проблемной области. Например, преобразование строки в число.

Для того, чтобы пощупать решение вживую, необходимо предварительно создать хранилище (одно из двух) (IoC контейнер в текущей реализации не использует Lazy Loading, поэтому будет пытаться обращаться к хранилищу еще до запуска визуальной части; в связи с чем увидеть "ошибку обращения к хранилищу" через интерфейс пользователя, увы, не получится). И в конце файла Bootstrapper.cs проекта Calculator.Infrastructure.BootStrapper раскомментировать соответствующую строку.

Для xml-файла. Сам файл можно взять из проекта Calculator.DataAccess.Xml. Файл называется log.xml. Путь к файлу следует указать в настройках конфигурации приложения (App.config - для Calculator.UI.WinApp; Web.config - для Calculator.UI.MvcApp). В разделе следует поменять значение для ключа "XmlFilePath".

Для базы данных на MS SQL Server. Следует на сервере создать пустую базу данных. Заполнить её, выполнив sql-скрипт. Сам sql-скрипт можно взять из проекта Calculator.DataAccess.Sql. Файл называется script.sql. Указать корректную строку подключения в настройках конфигурации приложения (App.config - для Calculator.UI.WinApp; Web.config - для Calculator.UI.MvcApp). В разделе строка подключения с именем "DefaultConnection".

About

Калькулятор (версия сентября 2013 года). Приложение для демонстрации.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published