Upload
bars-group
View
970
Download
4
Embed Size (px)
DESCRIPTION
Гибадуллин И. Обзор платформы B4
Citation preview
+
ИльмирГибадуллин
Докладчик:
Решения для электронного правительства и электронизация государственных услуг
Больше, чем технологии!
Кроссплатформенный .NET на практике: Обзор платформы B4 и решений на ее основе.
Больше, чем технологии!Больше, чем технологии!
Что такое платформа Bars.B4?Что такое платформа Bars.B4?
Bars.B4 – это системная платформа и инструментарий для создания гибких, настраиваемых и изменяемых прикладных решений.
Bars.B4 – это системная платформа и инструментарий для создания гибких, настраиваемых и изменяемых прикладных решений.
Больше, чем технологии!Больше, чем технологии!
Стек технологийСтек технологий
Microsoft .NET Framework 3.5
ASP.NET MVC 2
Castle Windsor (IOC)
Nhibernate
Fluent Nhibernate
Sencha ExtJs
Больше, чем технологии!Больше, чем технологии!
Microsoft ASP.NET MVC 2Microsoft ASP.NET MVC 2
ASP.NET MVC Framework — фреймворк для создания веб-приложений, который реализует шаблон Model-view-controller.ASP.NET MVC Framework — фреймворк для создания веб-приложений, который реализует шаблон Model-view-controller.
Больше, чем технологии!Больше, чем технологии!
Пример контроллера B4Пример контроллера B4
Описание класса контроллера:
ListUpdateGetDelete
public class NewsController : DataController<News>{ }
Определение метода контроллера:
public ActionResult MyAction() { return new JsonNetResult(new { result = ”Результат" });}
http://myapp/action/news/list
Обращения к методу контроллера:
Больше, чем технологии!Больше, чем технологии!
Castle Windsor (IOC)Castle Windsor (IOC)
IOC, Inversion of Control (Инверсия управления) – паттерн реализующий слабую связанность компонентов системы.IOC, Inversion of Control (Инверсия управления) – паттерн реализующий слабую связанность компонентов системы.
Сильная связанность Слабая связанность
Больше, чем технологии!Больше, чем технологии!
Примеры работы с IOC - контейнеромПримеры работы с IOC - контейнером
Container.Register(Component.For<ILogger>() .ImplementedBy<ConsoleLogger>() .Named("ConsoleLogger") .LifeStyle.Transient);
Регистрация реализации интерфейса:
ILogger logger = Container.Resolve<ILogger>();logger.Debug("App start");
Разрешение реализации интерфейса
ILogger logger = Container.Resolve<ILogger>("ConsoleLogger");logger.Debug("App start");
Разрешение реализации интерфейса по имени
Transient SingletonPerThread Pooled PerWebRequest
Transient SingletonPerThread Pooled PerWebRequest
LifeStyles
Container.ReplaceComponent<ILogger>("ConsoleLogger", typeof(DataBaseLogger));
или Container.ReplaceComponent<ILogger>(typeof(ConsoleLogger), typeof(DataBaseLogger));
Замена реализации
Больше, чем технологии!Больше, чем технологии!
NhibernateNhibernate
public class Car{ int Id { get; set; }
string Model { get; set; } double MaxSpeed { get; set; }}
public class Person{ int Id { get; set; }
string Name { get; set; } DateTime Birthday { get; set; } Car MyCar { get; set; }}
CAR
ID MODEL SPEED
1 Ferrari 300
2 Bugatti 350
Person
ID Name BIRTHDAY
MY_CAR
1 Mr. Freeman
21.09.2009 2
2 Pupkin 01.01.1980
1
NHibernate — ORM-решение для платформы Microsoft .NET. NHibernate позволяет отображать объекты бизнес-логики на реляционную базу данных.
Больше, чем технологии!Больше, чем технологии!
Интерфейс для работы с даннымиИнтерфейс для работы с данными
public interface IRepository<T> : IRepository {
new T Get(int id);
void Save(T value);
void Update(T value);
new void Delete(int id);
new T Load(int id);
new IQueryable<T> GetAll(); }
IRepository – интерфейс для работы с данными.
Больше, чем технологии!Больше, чем технологии!
Примеры работы с даннымиПримеры работы с данными
IRepository<News> repository = Container.Resolve<IRepository<News>>();
var newsList = repository.GetAll().Where(x => x.Header == “Тест").Select(x=>new { x.Id, x.Name })
.OrderBy(x => x.Name).ToList();
Пример запроса
IRepository<News> repository = Container.Resolve<IRepository<News>>();
News news = new News();
news.Name = “Тест”;
repository.Save(news);
Пример сохранения объекта
Больше, чем технологии!Больше, чем технологии!
Архитектура ПлатформыАрхитектура Платформы
Asp.Net MVC 2
CoreData
AccessFramewo
rkReports Utils
Resources
ExtJs
Security
AuditFile
Storage
Report Panel Messenger …
System modules
Appication Modules
B4 Application
B4 Application
Больше, чем технологии!Больше, чем технологии!
Как создать и использовать модуль?Как создать и использовать модуль?
Реализация интерфейса
IModule
MyModule.dllMyModule.dll
modules
public interface IModule{ string Id { get; } string Name { get; } string Description { get; } IEnumerable<string> DependsOn { get; } void InitModule();}
Больше, чем технологии!Больше, чем технологии!
Панель администрирования «Setup»Панель администрирования «Setup»
Настройка подключения к БД
Настройка параметров приложения
Управление модулями
Настройка меню
Проведение миграции БД
Обновление
Просмотр логов
Просмотр списка ошибок
Просмотр информация о системе