powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Что почитать чтобы научится программировать в асинхронной манере.
70 сообщений из 70, показаны все 3 страниц
Что почитать чтобы научится программировать в асинхронной манере.
    #37037874
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал разрабатывать приложение для сильвера - столкнулся со сложностями асинхронного взаимодействия с сервером. Что почитать по этому поводу чтобы начать эффективно разрабатывать в асинхронной модели взаимодействия с сервером
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37037947
Denis.,

извиняюсь за оффтоп, но... а в чем конкретно сложности-то? даже в дремучем WinApi полно функций, которые принимают указатель на callback, и только в ём (коллбэке) и можно что-то делать с результатом выполнения функции... столь любимый ajax сегодня (хоть в виде jquery, хоть как) - та же самая архивная... вещь. Просто считай, что тебя известят о результатах... потом... в другом потоке... делов-то?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37037952
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
злостный оффтопDenis.,

извиняюсь за оффтоп, но... а в чем конкретно сложности-то? даже в дремучем WinApi полно функций, которые принимают указатель на callback, и только в ём (коллбэке) и можно что-то делать с результатом выполнения функции... столь любимый ajax сегодня (хоть в виде jquery, хоть как) - та же самая архивная... вещь. Просто считай, что тебя известят о результатах... потом... в другом потоке... делов-то?
Почему оффтоп. Это не оффтоп.
Сложность вот в чем:
Например я заполняю список неких айтемов, берущихся с сервера. На колбек вешаю заполнение списка и все ок. Затем мне от сервера опять нужен этот список, но чтобы заполнить не первый листбокс, а например другой. Как в колбеке я пойму какой лист заполнять? Я понимаю что есть множество решений, но стройного что то я не соображу. А хочется прочитать про типичный паттерн как это делается.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37037965
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis.А хочется прочитать про типичный паттерн как это делается.
Паттерн называется Observer
Велосипед называется Rx
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37037987
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__ЛПDenis.А хочется прочитать про типичный паттерн как это делается.
Паттерн называется Observer
Велосипед называется Rx
Причем тут обзервер?
Про rx почитаю, спасибо.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038000
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis.Причем тут обзервер?
Именно при том.

Denis.Про rx почитаю, спасибо.
Да не за что.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038068
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не понял проблемы. Предположим у нас в ViewModel есть

Код: plaintext
public ObservableCollection<T> Items => INotifyPropertyChanged

В асинхронном методе получения данных с сервера просто читаем ответ (e.Result) и пишем в эту коллекцию (Items), которая биндится в самом представлении (хоть декларативно, хоть в code behind).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public void Foo()
{
    var svc = ServiceUtility.GetClient();
    svc.GetCategoriesCompleted += delegate(object sender, GetCategoriesCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            throw new System.Exception(e.Error.Message);
        }
        this.Items = e.Result;
     };
     svc.GetCategoriesAsync();
     svc.CloseAsync();
}

Если нужно несколько вызовов сервиса + результаты в отдельные модели (или тупо кастом проперти в ViewModel), ради бога - оформляем свои Items1, Items2, ..., ItemsN и работаем с ними. В чём вопрос-то?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038078
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Вопрос как раз в "Если нужно несколько вызовов сервиса + результаты в отдельные модели (или тупо кастом проперти в ViewModel), ради бога - оформляем свои Items1, Items2, ..., ItemsN и работаем с ними"
Возьмем пример: есть набор неких айтемов. Я загрузил приложение, дернул с сервера этот набор, он отобразился в листе.
Затем, например, я нажимаю некую кнопку, которая должна мне мессаджбоксом показать кол-во айтемов(на серввере), не обновив листбок прежде заполненный. Как это правильно делается?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038090
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Как это правильно делается?
Я же уже сказал - во вьюмодели.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void GetCategories()
{
    this.Items = e.Result;
}

public void GetCategoriesCount()
{
    /// ...
    this.Count = e.Result;
}

А в представлении с этими данными (Items и Count) можете что угодно делать.

P.S. Почитайте про паттерны MVVM или MVC (MVP).
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038102
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDenis.Как это правильно делается?
Я же уже сказал - во вьюмодели.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public void GetCategories()
{
    this.Items = e.Result;
}

public void GetCategoriesCount()
{
    /// ...
    this.Count = e.Result;
}

А в представлении с этими данными (Items и Count) можете что угодно делать.

P.S. Почитайте про паттерны MVVM или MVC (MVP).
Про MVC и MVP я, конечно, в курсе. Про mvvm - представляю что это такое. тем не менее все же непонятно 2 момента:
мне на "каждый вызов" удаленного метода создавать член класса?
Как в удобочитаемой манере заюзать, в данном случае, Count, без синка потоков? Нечто вроде:
Код: plaintext
1.
2.
3.
4.
5.
void Foo()
{
 if(serviceProxy.GetItemsCount()==0)
 ...
}
ЗЫ. Я понимаю различные варианты решения проблемы. Просто не нахожу ни один из них тривиальным(что часто == правильным)
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038112
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще мне непонятно почему убрана синхронная модель :-(
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038114
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Про mvvm - представляю что это такое.
Не представляете.

Denis.мне на "каждый вызов" удаленного метода создавать член класса?
Это Вы уже сами решайте, но ViewModel "должна быть в курсе", что Вы там дёрнули и что оно там вернулось, чтобы известить об этом представление.

Denis.без синка потоков?
Их не нужно синхронизировать, у нас полноценная асинхронная обёртка. Никаких костылей не нужно, всё, как Вы выразились, тривиально. Уже обсуждали про "синхронность SL".
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038117
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.вообще мне непонятно почему убрана синхронная модель :-(
Читать от сюда: 9899156
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038118
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDenis.Про mvvm - представляю что это такое.
Не представляете.

Denis.мне на "каждый вызов" удаленного метода создавать член класса?
Это Вы уже сами решайте, но ViewModel "должна быть в курсе", что Вы там дёрнули и что оно там вернулось, чтобы известить об этом представление.

Denis.без синка потоков?
Их не нужно синхронизировать, у нас полноценная асинхронная обёртка. Никаких костылей не нужно, всё, как Вы выразились, тривиально. Уже обсуждали про "синхронность SL".
Это все здорово при биндинге вью на вьюмодель, но вот когда никакого биндинга нет, а вызов сервиса используется в БЛ фактически все становится не так стройно
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038120
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Это все здорово при биндинге вью на вьюмодель, но вот когда никакого биндинга нет, а вызов сервиса используется в БЛ фактически все становится не так стройно

Код: plaintext
1.
2.
3.
private void OnCompleted(object sender, OnCompletedEventArgs e ) 
{     
    Dispatcher.BeginInvoke(() => // доступ к UI // ); 
}
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038125
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDenis.Это все здорово при биндинге вью на вьюмодель, но вот когда никакого биндинга нет, а вызов сервиса используется в БЛ фактически все становится не так стройно

Код: plaintext
1.
2.
3.
private void OnCompleted(object sender, OnCompletedEventArgs e ) 
{     
    Dispatcher.BeginInvoke(() => // доступ к UI // ); 
}


не, я не про то:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void SomeMethod()
{
   if(serviceProxy.GetItemsCount()==0)
  { 
      viewModel.Items = serviceProxy.GetOtherItems();
      if(!serviceProxy.TryFillDefaultItems())
      {
          ....
      }
  }
}
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038131
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.не, я не про то:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
void SomeMethod()
{
   if(serviceProxy.GetItemsCount()==0)
  { 
      viewModel.Items = serviceProxy.GetOtherItems();
      if(!serviceProxy.TryFillDefaultItems())
      {
          ....
      }
  }
}


Чё за бред? :)
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038141
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

это не важно. Суть в том, как его переписать в асинхронной модели. Например !serviceProxy.TryFillDefaultItems(). Мне нужно вызвать асинхронный метод, в нем заполнить поле, созданное для него, в потоке текущего метода подождать коллбека и взять значение из члена.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038148
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Простыми lookup'ами лучше не засорять основной ViewModel. Для них можно создать отдельный Locator(конвертер или markup extenstions), который будет делать выборку из БД.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038152
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.МСУ, это не важно.
Это важно. Во-первых, с точки зрения производительности, а во-вторых - нагрузки на сам сервер, где котором хостится сервис. Зачем дергать n-раз метод, если можно за один проход получить интересующую информацию. Будет возвращаться класс, содержащий в себе всю необходимую информацию для принятия дальнейшего решения.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038175
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж надо раскидать по n-вызовам, то в чём проблема написать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var svc = ServiceUtility.GetClient();
svc.GetItemsCountCompleted += delegate(object service1, GetItemsCountCompletedEventArgs args1)
{
    if (args1.Result == 0)
    {
        var client = ServiceUtility.GetClient();
        client.GetItemsCountCompleted += delegate(object service2, GetItemsCountCompletedEventArgs args2)
        {
            // телодвижения
        };
        client.GetItemsCountAsync();
        client.CloseAsync();
    }
};
svc.GetItemsCountAsync();
svc.CloseAsync();
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038430
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУЕсли уж надо раскидать по n-вызовам, то в чём проблема написать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var svc = ServiceUtility.GetClient();
svc.GetItemsCountCompleted += delegate(object service1, GetItemsCountCompletedEventArgs args1)
{
    if (args1.Result == 0)
    {
        var client = ServiceUtility.GetClient();
        client.GetItemsCountCompleted += delegate(object service2, GetItemsCountCompletedEventArgs args2)
        {
            // телодвижения
        };
        client.GetItemsCountAsync();
        client.CloseAsync();
    }
};
svc.GetItemsCountAsync();
svc.CloseAsync();


Не проблема, только лениво писать одно и тоже десятки раз
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37038917
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iНе проблема, только лениво писать одно и тоже десятки раз
Согласен. И я про то же.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37039490
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУiНе проблема, только лениво писать одно и тоже десятки раз
Согласен. И я про то же.
Ну, дык, для это же Rx и советовали, насколько я понимаю?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37039698
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiНе проблема, только лениво писать одно и тоже десятки раз
Согласен. И я про то же.

Тогда предлагай общие варианты, когда не нужно это писать сорок восем раз.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37039882
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qu-qu, i

я о том, чтобы эту логику заложить в сам метод сервиса (if...else...=> выдача результата), а не городить огород из SOA-лапшекода, который он хочет вообще прибить к code behind (или в VM). И Rx тут нахер не нужен. Всё банально и более чем стандартно.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37039987
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Проблемы ТС, похоже, совсем не в асинхронных вызовах.
Но поскольку зашел разговор о классификаторах, то надцать callback'ов для них в viewmodel - вариант решения в лоб
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040079
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не стоит притягивать за уши то чего сказано не было. Например на вопрос "почему не вытянуть нужные данные сразу, а не делать кучу вызовов" можно найти 1000 правильных вариантов ответа почему так делать не стоит, но суть поста была не почему так делать не надо, а как это можно сделать если это надо. И не надо мне доказывать что синхронный вызов метода не правилен по такому то паттерну. Это чушь. Где то это правильно, где то нет.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040085
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis.Не стоит притягивать за уши то чего сказано не было. Например на вопрос "почему не вытянуть нужные данные сразу, а не делать кучу вызовов" можно найти 1000 правильных вариантов ответа почему так делать не стоит, но суть поста была не почему так делать не надо, а как это можно сделать если это надо. И не надо мне доказывать что синхронный вызов метода не правилен по такому то паттерну. Это чушь. Где то это правильно, где то нет.

А в синхронных вызовах кучу данных тоже никто не возращает за один раз.
Нет никаких сложностей в асинхронных кроме привычек.

ЗЫ Вопрос поставлен совершенно невнятно.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040291
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iто надцать callback'ов для них в viewmodel - вариант решения в лоб
На клиенте (коде бехинде, VM) - согласен. Но в самом методе сервиса (причём синхронно и нелапшекодно) - то, что доктор прописал.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040302
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iА в синхронных вызовах кучу данных тоже никто не возращает за один раз.
Нет никаких сложностей в асинхронных кроме привычек.
Не соглашусь. А соглашусь с Денисом. Я уже как-то говорил об этом - это разные подходы вызовов, и дело вовсе не привычках.
Даже в Application Architecture Guide v2 об этом говорится. Мухи - для мух, котлеты - для котлет.
Религия и бестпрактис тут неуместны, ещё раз - это различные подходы вызов со своими плюсам и минусами.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040470
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУ, а с чем ты можешь согласиться, если кроме callback'ов ничего не видел, не знаешь и не пробовал?
Возможен общий вариант, когда про работу с БД можно забыть и не вспоминать, сделав один раз.
Модератор: Сева, по-легче с аллегориями
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040616
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i Возможен общий вариант, когда про работу с БД можно забыть и не вспоминать , сделав один раз.
Нечего на индусов пенять, если лениво напрягаться, то - LightSwitch или на искру переходите.
В Искре действительно работа с БД реализована на уровне платформы, отвлекаться на это не нужно. Соглашусь, в общем.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040617
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i ничего не видел, не знаешь и не пробовал?
Rx - это "всё", что нужно демократии? Тогда я пластаю руками, - над элементарным телодвижением ещё и левый костыль-подпорку ставить.
P.S. Еще раз напоминаю, о чём пошла речь - "синхронность vs асинхронность". Это глупое сравнение в принципе, в чём я с Денисом солидарен. А ты мне про свой гавноRx...
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040778
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Изучай LightSwitch. Твои ItemN и так до бесконечности даже в WPF c cинхронными вызовами - решение в лоб, берем лопату и копаем.
Есть совершенно другие
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040826
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

как деталь записи подгружаются?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040855
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosiscrafm,

как деталь записи подгружаются?
по требованию. Т.е. деталь регистрируется и как только в ней возникает необходимость - подгружается
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040874
__ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУP.S. Еще раз напоминаю, о чём пошла речь - "синхронность vs асинхронность".
Это откуда такое взялось?
Речь не шла про "синхронность vs асинхронность", это ты сам такое нафантазировал.
Речь шла про то, чтобы один и тот же асинхронный метод (метод получения данных с сервера) заставить "возвращать" данные в разные наборы.

... На колбек вешаю заполнение списка и все ок. Затем мне от сервера опять нужен этот список, но чтобы заполнить не первый листбокс, а например другой. Как в колбеке я пойму какой лист заполнять? ...

Если ты ничего не придумал, кроме сорока восьми почти одинаковых колбеков для сорока восьми списков - ну что ж, бывает :)
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37040876
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iИзучай LightSwitch. Твои ItemN и так до бесконечности даже в WPF c cинхронными вызовами - решение в лоб, берем лопату и копаем.
Есть совершенно другие
Ты ваще в вакууме или просто тупишь?

Я говорю за то, что на клиенте асинхронно "ItemN" юзать - лапшекодно и не есть бест практис, очнись. А вот на сервер сайд (WCF) эти "ItemN" мы будем юзать синхронно, как полагается. Если нужно, вынесим в отдельный блок (метод) набор "ItemN", если еще где используется эта логика. А для клиента мы в результате получим нормальный единоразовый асинхронный врап.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37041499
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiИзучай LightSwitch. Твои ItemN и так до бесконечности даже в WPF c cинхронными вызовами - решение в лоб, берем лопату и копаем.
Есть совершенно другие
Ты ваще в вакууме или просто тупишь?

Я говорю за то, что на клиенте асинхронно "ItemN" юзать - лапшекодно и не есть бест практис, очнись. А вот на сервер сайд (WCF) эти "ItemN" мы будем юзать синхронно, как полагается. Если нужно, вынесим в отдельный блок (метод) набор "ItemN", если еще где используется эта логика. А для клиента мы в результате получим нормальный единоразовый асинхронный врап.
Выборка данных используется везде и всюду. "Отдельный блок" - шаблон Repository. Если он нормально сделан, то нет никакой разницы какие там вызовы. Item1 ... Item2 в ViewModel жирно перечеркиваем, создаем ViewModelLocator, c ним можно загружать нужные классификаторы напрямую из XAML.
Можно иметь нормальную архитектуру или кричать о кривизне рук индусов и всю жизнь ковыряться в обработчиках и callback'ах, изобретая собственные велосипеды.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37042558
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iВыборка данных используется везде и всюду. "Отдельный блок" - шаблон Repository. Если он нормально сделан, то нет никакой разницы какие там вызовы.
Слишком круто "отдельный блок" описывать под Repository. Это обычный метод репозитория, в котором заложено n-обращений.

iItem1 ... Item2 в ViewModel жирно перечеркиваем, создаем ViewModelLocator, c ним можно загружать нужные классификаторы напрямую из XAML.
Item1 ... Item2 нечего делать в ViewModel, я уже сто и один раз об этом говорил. ViewModelLocator нежно пакуем в топку, туда же, где и Rx.

iМожно иметь нормальную архитектуру или кричать о кривизне рук индусов и всю жизнь ковыряться в обработчиках и callback'ах, изобретая собственные велосипеды.
"Нормальной архитектурой" сборную солянку в виде костыле-библиотек как-то язык не поворачивается назвать.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37042978
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУ, расставание с обработчиками событий - трудный процесс для некоторых.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043028
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iМСУ, расставание с обработчиками событий - трудный процесс для некоторых.
Проблема заключается в том, что с ними никто не собирается расставаться. MVVM - это дешёвка и бред. Мы с Дениской (другим, не ТС) уже объясняли это. MVVM + MVC(P) - это да, хороший съедобный вариант.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043090
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmViPRosiscrafm,

как деталь записи подгружаются?
по требованию. Т.е. деталь регистрируется и как только в ней возникает необходимость - подгружается
а лукапы?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043105
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУiМСУ, расставание с обработчиками событий - трудный процесс для некоторых.
Проблема заключается в том, что с ними никто не собирается расставаться. MVVM - это дешёвка и бред. Мы с Дениской (другим, не ТС) уже объясняли это. MVVM + MVC(P) - это да, хороший съедобный вариант.

Да ничего вы не объяснили, а продемонстрировали только, что шаблоны еще нужно правильно применять с учетом возможностей технологии, иначе, действительно, конфуз получается
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043275
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iДа ничего вы не объяснили, а продемонстрировали только, что шаблоны еще нужно правильно применять с учетом возможностей технологии, иначе, действительно, конфуз получается
Да нет же, всё было предельно разжёвано (даже в денискином блоге). MVVM в принципе не жизнеспособен в реальных приложениях. Посему, обработчики-таки рулили и будут рулить, ибо это удобно и платформенно-переносимо (я уже говорил об этом).
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043526
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosiscrafmпропущено...

по требованию. Т.е. деталь регистрируется и как только в ней возникает необходимость - подгружается
а лукапы?
также. Загружается только видимая информация. Если не воспользовались никакими из десятков лукапов или деталей, то они так и останутся незагруженными.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043615
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
iscrafmViPRosпропущено...

а лукапы?
также. Загружается только видимая информация. Если не воспользовались никакими из десятков лукапов или деталей, то они так и останутся незагруженными.

А если нужно вытащить сразу весь граф объекта (Root->Child->GrandChild->etc) сидим и тоскливо наблюдаем, как неспешно идут запросы.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043616
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm, почему не используете кеширование + ленивая загрузка (она и так уже впринципе есть)?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043858
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, это слишком объемный вопрос для новогоднего вечера, после праздников. С наступающим!
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С наступающим, коллеги!
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37043976
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУС наступающим, коллеги!
...наступившим
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044348
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУiscrafm, почему не используете кеширование + ленивая загрузка (она и так уже впринципе есть)?
С Новым Годом!
Ленивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще. Дело в том, что значения "лукапов", о которых был вопрос, загружаются из БД уже в основной записи. Сами списки - по требованию. Предлагаемая модель проектирования приложений во многих случаях, за счет механизмов автозаполнений, исключает необходимость в таких требованиях. Т.е. только если пользователя по каким-то причинам не удовлетворит то, что заполнил за него разработик, то тогда он конечно "предъявит требование" и нужный список подгрузится с сервера.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044519
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С Новым Годом!

iscrafmЛенивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще.
Суть lazy loading заключается как-раз в том, "чтобы не грузить информацию, которая может не понадобиться вообще" :)

P.S. Про кешинг ни слова...
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044639
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУС Новым Годом!

iscrafmЛенивая загрузка по умолчанию не используется чтобы не грузить информацию, которая может не понадобиться вообще.
Суть lazy loading заключается как-раз в том, "чтобы не грузить информацию, которая может не понадобиться вообще" :)

да, извините. Перечитал предложение, поправил.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044641
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,

Что означает "подгружается в основной записи"? основная запись -вью? можно ли в гриде редактировать? как описывается само понятие "лукап" в метаданных? насколько глубоко лукапность простирается? кешируются ли лукапы для использования в разных формах с одинаковыми требованиями лукапам? ну поговори немного
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044645
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может ли быть лукапом динамический union? если да то как автозаполнение срабатывает?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044649
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в методах обработчиков (вну в расчетных задачах) используются стандартные функции загрузки деталь записей предусмотренных для юзер интерфейса или СКЛ?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044815
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iПутаница в показаниях, полное отсутствие профтерминологии. Кто кого заполняет и удовлетворяет понять невозможно
ошибка в предложении исправлена, ты просто не дочитала. Скажи, какая у тебя профтерминология - переведу.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044826
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmда, извините. Перечитал предложение, поправил.
Ок.
iscrafm
Во многих случаях поможет кеширование. Приведу копипаст из Application Architecture Guide:

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

 Выберите подходящее размещение для кэша. Если приложение развертывается на Веб-ферме, избегайте применения локальных кэшей, для которых необходима синхронизация. В этом случае рекомендуется использовать систему управления транзакционными ресурсами, такую как Microsoft® SQL Server®, или продукт, поддерживающий распределенное кэширование, такой как технология Memcached производства компании Danga Interactive или механизм кэширования Velocity от компании Microsoft (больше информации по этому вопросу можно найти в разделе Дополнительные источники в конце данной главы).
 При работе с кэшем в памяти применяйте кэширование данных в готовом к использованию виде. Например, кэшируйте не просто необработанные данные
базы данных, а используйте специализированные объекты необходимые приложению. Реализуйте кэширование в памяти с помощью Microsoft Velocity.
 Не кэшируйте часто изменяющиеся данные и незашифрованные конфиденциальные данные.
 Не полагайтесь на кэшированные данные, они могут быть удалены. Реализуйте механизм обработки сбоев кэша, возможно, путем повторной загрузки элемента из источника.
 Будьте особенно осторожны при работе с кэшем из нескольких потоков. В случае использования множества потоков для обеспечения непротиворечивости данных убедитесь, что любой доступ к кэшу является потокобезопасным.


Хороший движок - Caching Application Block (щас уже есть более свежий - Microsoft Enterprise Library 5.0 ).

Ну это что касается .NET. Для дельфей, думаю, тоже есть какие вещи. На крайний случай, можно самому написать простенький движок кешей.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044838
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий, думаю, тоже будет интересно почитать - Caching Architecture Guide for .NET Framework Applications
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044885
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm, вся архитектурная нить, о которой я спрашивал Вас, находится ниже. Руководствуясь данным манускриптом (из того же Application Architecture Guide), нужно выбрать свою стратегию кеширования:

Этапы проектирования стратегии кэшированияКэширование может играть решающую роль в повышении производительности. Исключительно важно спроектировать соответствующую стратегию кэширования, потому что неправильный выбор методик может негативно сказаться на производительности. Рассматриваемые далее этапы проектирования помогут выработать правильную стратегию кэширования для приложения.

Шаг 1 – Выбор данных, подлежащих кэшированию

В ходе проектирования приложения важно определиться с тем, какие данные годятся для кэширования. Для каждого слоя приложения создайте список данных, которые могут быть кэшированы. Рассмотрите возможность кэширования следующих типов данных:

Общие данные приложения. Рассмотрите возможность кэширования статических данных, которые используются всеми пользователям приложения. Примерами таких данных являются списки продуктов и сведения о продуктах.

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

Относительно статические Веб-страницы. Рассмотрите возможность кэширования вывода Веб-страниц или частей Веб-страниц, которые меняются нечасто.

Параметры хранимых процедур и результаты запросов. Рассмотрите возможность кэширования часто используемых параметров и результатов запросов.

Шаг 2 – Выбор места кэширования данных

При принятии решения о месте кэширования данных обычно необходимо рассмотреть два вопроса: физическое размещение кэша и его логическое размещение.
Физически кэш размещается либо в памяти, либо на диске в файлах или базе данных. Кэширование в памяти может осуществляться с помощью механизма кэширования ASP.NET, Enterprise Library Caching Application Block или механизма распределенного кэширования в памяти, такого как проект Microsoft под кодовым названием Velocity или технология Memcached от компании Danga Interactive .

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

Логическое размещение кэша – это его место в логике приложения. Важно кэшировать данные в максимальной близости к месту их использования. Это обеспечит снижение объема необходимой обработки, сокращение количества обращений к сети и времени отклика приложения и повышение производительности.
Принимая решение о логическом размещении кэша данных, руководствуйтесь следующими рекомендациями:


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

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

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

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

Кэшируйте данные в слое доступа к данным при наличии коллекции входных параметров для часто вызываемых хранимых процедур или небольших объемов необработанных данных, возвращаемых часто выполняемыми запросами. Рассмотрите варианты кэширования для типизированных наборов данных в слое данных.

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

Шаг 3 – Определение формата кэширования данных

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

Этого правила следует придерживаться, если данные кэшируются в памяти, если кэш не будет использоваться совместно разными процессами или компьютерами, если нет необходимости перемещать кэшированные данные в разные участки памяти, и если приходится кэшировать необработанные данные, такие как объекты DataSet, DataTable и Веб-страницы.

Если необходимо хранить или передавать кэшированные данные, рассмотрите возможность их сериализации. Сериализация кэшированных данных – хороший выбор для кэширования данных на диск или для хранения состояния сеансов на отдельном сервере или базе данных SQL Server. Это также хороший подход, если необходимо обеспечить совместное использование кэша разными процессами или компьютерами, перемещать кэшированные данные в разные участки памяти или кэшировать собственные объекты. Сериализация может осуществляться с помощью механизма сериализации XML или механизма бинарной сериализации.

Механизм сериализации XML подойдет, если определяющим фактором является возможность взаимодействия. Если основной упор делается на производительность, используйте механизм бинарной сериализации.

Шаг 4 – Выработка подходящей стратегии управления кэшем

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

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


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

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

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

Для сборки мусора необходимо определить условия и набор эвристических правил, согласно которым элемент должен быть удален в ходе сборки мусора. Эту политику рекомендуется применять, если требуется автоматически активировать сборку мусора при устаревании ресурсов системы, если требуется обеспечить автоматическое удаление редко используемых или маловажных элементов из кэша, или при работе с кэшем в памяти.
Рассмотрим общие правила сборки мусора:

Алгоритм вытеснения по давности использования (Least Recently Used) обеспечивает удаление элементов, которые не использовались в течение наибольшего периода времени.

Алгоритм вытеснения по частоте использования (Least Frequently Used) обеспечивает удаление элементов, которые с момента загрузки использовались реже всего.

При использовании алгоритма вытеснения по приоритетности (Priority) всем кэшированным элементам присваиваются приоритеты, и сборка мусора выполняется на основании этих приоритетов с сохранением элементов, имеющих более высокий приоритет.

Шаг 5 – Выбор метода загрузки кэшированных данных

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

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


Упреждающая загрузка обеспечивает извлечение всех данных приложения при его запуске и их кэширование на весь период выполнения приложения. Упреждающая загрузка подойдет для относительно статических данных, или если известны заранее частота их обновления, время жизни и размер. Если размер данных неизвестен, их загрузка может привести к истощению ресурсов системы. Используйте этот вариант загрузки также, если в качестве источника кэшированных данных предполагается медленная база данных, или данные извлекаются по медленной сети или из ненадежного Веб-сервиса.

Реактивная загрузка обеспечивает извлечение данных при запросе приложением и их кэширование для запросов в будущем. Реактивная загрузка подойдет для относительно непостоянных данных, когда время жизни кэшированных данных неизвестно, объем кэшированных данных велик и источник данных надежен и всегда доступен.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044890
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДля дельфей, думаю, тоже есть какие вещи. На крайний случай, можно самому написать простенький движок кешей.
Что и требовалось доказать: delphimemcache

Requires:• Delphi 2010
• Indy 10

P.S. Почему не юзаем?
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044891
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosiscrafm,

Что означает "подгружается в основной записи"? основная запись -вью? можно ли в гриде редактировать? как описывается само понятие "лукап" в метаданных? насколько глубоко лукапность простирается? кешируются ли лукапы для использования в разных формах с одинаковыми требованиями лукапам? ну поговори немного
"подгружается в основной записи" означает то, что необходимые для лукапа значения отбираются запросом из БД, а не формируются на клиенте или сервере приложений (см. рис). По большому счету так, как ты сказал: "основная запись -вью" На рис. также показан фрагмент того, как описывается лукап в метаданных.
Насчет "глубины лукапности" уточни плз, что имеется ввиду?
Для разных форм данные лукапов на сервере не кешируются. После того как провайдер отдал записи, он закрывает набор данных, по-умолчанию, в режиме "Пользователь" оставляет только элементы метаданных. Хотя, это искуственно, можно кеш и не чистить.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37044895
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

спасибо за материал. Выскажусь чуть позже.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37045057
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,
"глубина лукапности" :) ну это когда поля для расшифровки идентификатора находятся на несколько уровней выше по дереву.
Допустим, есть Юрлицо(ИД, Наименование(лукап)), дальше есть Предприятие(ИД, Юрлицо.ИД(лукап), [Дата присоединение к холдингу]), т.е. и для Предприятия и для Юрлица значением лукап явялется Юрлицо.Наименование. Или еще хуже -
Предприятие(ИД, Юрлицо.ИД(лукап), Холдинг.ИД(лукап), [Дата присоединение к холдингу]), где Холдинг(ИД, Юрлицо.ИД(лукап), [Дата создания]), где лукап для Предприятия формируется как (Холдинг)Юрлицо.Наименование + "."+ (Предприятие)Юрлицо.Наименование
Ну для примера все структуры
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37045061
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
случай еще сложнее Спецификация([Составное изделие],[Сборочная единица],...), где поля [Составное изделие],[Сборочная единица] классификаторы, объединяющие несколько типов (Комплект,Комплекс,...,Деталь,Материал,...), которые тоже могут быть унаследовали лукапы + количество лукап полей для разных типов разное
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37045085
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosiscrafm,
"глубина лукапности" ну это когда поля для расшифровки идентификатора находятся на несколько уровней выше по дереву.

понял. Конечно. Можно использовать все, что ты можешь "вытянуть" средствами используемой СУБД, ограничений в этом плане нет. На картинке первое, что под рукой было: выбирается Категория, все остальное по "дереву" формируется от нее.
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37045121
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
iscrafm"подгружается в основной записи" означает то, что необходимые для лукапа значения отбираются запросом из БД, а не формируются на клиенте или сервере приложений (см. рис). По большому счету так, как ты сказал: "основная запись -вью" На рис.

iscrafm, непонятно, но здорово. У тебя смесь из двузвенки и трехзвенки? Какой-то винегрет
...
Рейтинг: 0 / 0
Что почитать чтобы научится программировать в асинхронной манере.
    #37045166
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iУ тебя смесь из двузвенки и трехзвенки? Какой-то винегрет
нет, обычная трехзвенка. БД->Сервер приложений->[маршаллинг]->Клиент. Ничего "двухзвеночного" именно нет.
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Что почитать чтобы научится программировать в асинхронной манере.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]