Архитектура корпоративных систем

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Архитектура корпоративных систем - Presentation Transcript

    1. Архитектура корпоративных систем
    2. Планы на ближайшее время
      • 30 марта — лабораторная работа №2
      • 3 апреля — модульное тестирование
      • 10 апреля — рефакторинг
      • 17 апреля — разработка пользовательских интерфейсов
      • 24 апреля — дизайн пользовательских интерфейсов (!!!)
    3. Виды корпоративных приложений
    4. Архитектура?
    5. Архитектура
      • — представление системы программного обеспечения, процесс, а также и дисциплина, посвященные эффективной разработке проекта данной системы.
    6. Модель OSI
    7. Историческая справка
    8. Историческая справка
      • — Все вместе
    9. Историческая справка
      • — Клиентское приложение
      • — Сервер баз данных
    10. Историческая справка
      • — Представление (presentation)
      • — Домен (предметная область)
      • — Источник данных
    11. Задача
    12.  
    13. Организация логики предметной области
    14. Сценарии транзакции
      • class Cart
      • {
      • public DataTable GetItems();
      • public decimal GetTotalPrice();
      • public void AddItemToCart(int a_ItemId);
      • public void RemoveItemFromCart(int a_ItemId);
      • public void Offer(int a_UserId);
      • public DataRow GetCurrentUser();
      • ...
      • }
    15. Сценарии транзакции
      • class Cart
      • {
      • public DataTable GetItems()
      • {
      • XCommand command = Registry.DataBase.CreateCommand("select * from CartItems join Items on Items.id = CartItems.id_Item where id_Session = @session");
      • command["session"].Value = GetSessionId();
      • return command.ExecuteDataTable();
      • }
      • public decimal GetTotalPrice()
      • {
      • XCommand command = Registry.DataBase.CreateCommand("select sum(Price * Amount) from CartItems join Items on Items.id = CartItems.id_Item where id_Session = @session");
      • command["session"].Value = GetSessionId();
      • return (decimal)command.ExecuteScalar();
      • }
      • public void AddItemToCart(int a_ItemId)
      • {
      • XCommand command = Registry.DataBase.CreateCommand("insert into CartItems (id_Session, id_Item) values (@session, @item)");
      • command["session"].Value = GetSessionId();
      • command["item"].Value = a_ItemId;
      • command.ExecuteNonQuery();
      • }
    16. Модуль таблицы
      • — DataSet
      • — DataTable
      • — DataRow
    17. Модуль таблицы
      • public void AddItemToCart(DataRow a_Item)
      • {
      • DataTable cartItems = new DataTable("CartItems");
      • DataRow newCartItem = items.NewRow();
      • newCartItem["id_Item"] = a_Item["id"];
      • newCartItem["id_Session"] = Registry.GetSessionId();
      • Registry.DataBase.Update(cartItems);
      • }
    18. Модуль таблицы
      • public void AddItemToCart(DB.ItemsRow a_Item)
      • {
      • DB.CartItems cartItems = new DB.CartItems();
      • DB.CartItemsRow newCartItem = items.NewRow();
      • newCartItem.id_Item = a_Item.id;
      • newCartItem.id_Session = Registry.GetSessionId();
      • Registry.DataBase.Update(cartItems);
      • }
    19. Модель предметной области
      • class Cart
      • {
      • public List<Item> Items;
      • public decimal Get TotalPrice () ;
      • public void Save();
      • ...
      • }
      • class Item
      • {
      • public string Description;
      • public decimal Price;
      • }
    20. Модель предметной области
      • Cart cart = Cart.GetCurrent();
      • Item item = new Item(234);
      • cart.Items.Add(item);
      • cart.Save();
    21. Модель предметной области
      • public decimal GetTotalPrice()
      • {
      • decimal result = 0;
      • foreach(Item item in Items)
      • {
      • result += item.Price;
      • }
      • return result;
      • }
    22. Модель предметной области VS сценарий транзакции
      • public decimal GetTotalPrice()
      • {
      • XCommand command = Registry.DataBase.CreateCommand(&quot;select sum(Price * Amount) from CartItems join Items on Items.id = CartItems.id_Item where id_Session = @session&quot;);
      • command[&quot;session&quot;].Value = GetSessionId();
      • return (decimal)command.ExecuteScalar();
      • }
      • public decimal GetTotalPrice()
      • {
      • decimal result = 0;
      • foreach(Item item in Items)
      • {
      • result += item.Price;
      • }
      • return result;
      • }
    23. Сравнение
    24. :-)
    25. Организация логики работы с базой данных
    26. ActiveRow (активная запись)
      • class Company
      • {
      • DB.CompaniesRow m_Row;
      • public Company(DB.CompaniesRow a_Row)
      • {
      • m_Row = a_Row;
      • }
      • public int Id
      • {
      • get { return m_Row.id; }
      • }
      • public string Alias
      • {
      • get { return m_Row.Alias; }
      • set { m_Row.Alias = value; }
      • }
      • public string FullName
      • {
      • get { return m_Row.FullName; }
      • set { m_Row.FullName = value; }
      • }
      • public void Save()
      • {
      • XRegistry.DataBase.Update(m_Row);
      • }
      • }
    27. ActiveRow
      • public static Company Find(int a_Id)
      • {
      • XCommand command = Registry.DataBase.CreateCommand(&quot;select * from Companies where id = @id&quot;);
      • command[&quot;id&quot;].Value = a_Id;
      • DB.CompaniesRow row = command.ExecuteDataTable<DB.Companies>()[0];
      • return new Company(row);
      • }
      • public static Company CreateNew()
      • {
      • DB.Companies table = new DB.Companies();
      • return new Company((DB.CompaniesRow)table.NewRow());
      • }
    28. Data Mapper
      • class Company
      • {
      • public Company(int a_Id, string a_Alias, string a_FullName)
      • {
      • m_Id = a_Id;
      • m_Alias = a_Alias;
      • m_FullName = a_FullName;
      • }
      • int m_Id;
      • public int Id
      • {
      • get { return m_Id; }
      • }
      • string m_Alias;
      • public string Alias
      • {
      • get { return m_Alias; }
      • set { m_Alias = value; }
      • }
      • string m_FullName;
      • public string FullName
      • {
      • get { return m_FullName; }
      • set { m_FullName = value; }
      • }
      • public void Save()
      • {
      • CompanyMapper.Instance.Save(m_Id, m_Alias, m_FullName);
      • }
      • }
    29. Data Mapper (преобразователь данных)
      • class CompanyMapper
      • {
      • public static CompanyMapper Instance ;
      • public Company Find(int a_Id)
      • {
      • XCommand command = Registry.DataBase.CreateCommand(&quot;select * from Companies where id = @id&quot;);
      • command[&quot;id&quot;].Value = a_Id;
      • DataRow row = command.ExecuteDataRow();
      • return new Company((int)row[&quot;id&quot;], (string)row[&quot;Alias&quot;], (string)row[&quot;FullName&quot;]);
      • }
      • public void Save(int a_Id, string a_Name, string a_FullName)
      • {
      • XCommand command = Registry.DataBase.CreateCommand(&quot;update Companies set Alias = @alias, FullName = @fullname where id = @id&quot;);
      • command[&quot;id&quot;].Value = a_Id;
      • command[&quot;alias&quot;].Value = a_Name;
      • command[&quot;fullname&quot;].Value = a_FullName;
      • command.ExecuteNonQuery();
      • }
      • }
    30. Объект запроса
    31.  
    32. Наследование с одной таблицей
    33. Наследование с таблицами для каждого конкретного класса
    34. Наследование с таблицами для каждого класса
    35. Отображение внешних записей
    36. Отображение внешних записей
      • XCompanyContacts m_Contacts = null;
      • public XCompanyContacts Contacts
      • {
      • get
      • {
      • if (m_Contacts == null)
      • {
      • m_Contacts = new XCompanyContacts(this);
      • }
      • return m_Contacts;
      • }
      • }
    37. Отображение внешних записей
      • XObjectCollection<XCompany, XCompanyGroup, DB.xCompaniesToCategories> m_Groups = null;
      • public XObjectCollection<XCompany, XCompanyGroup, DB.xCompaniesToCategories> Groups
      • {
      • get
      • {
      • if (m_Groups == null)
      • {
      • m_Groups = new XObjectCollection<XCompany, XCompanyGroup, DB.xCompaniesToCategories>
      • (this, XCompanyGroupRepostitory.Instance, &quot;id_Company&quot;, &quot;id_Category&quot;);
      • }
      • return m_Groups;
      • }
      • }
    38.  
    39.  
    40. Московский финал Imagine Cup! 28 марта, офис компании Microsoft Russia

    + kichikkichik, 5 months ago

    custom

    231 views, 0 favs, 2 embeds more stats

    Лекция Михаила Гуренкова по more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 231
      • 199 on SlideShare
      • 32 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 3
    Most viewed embeds
    • 27 views on http://oop.mainfo.ru
    • 5 views on http://www.oop.mainfo.ru

    more

    All embeds
    • 27 views on http://oop.mainfo.ru
    • 5 views on http://www.oop.mainfo.ru

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories