23.01.2017, 13:27 | #1 |
Участник
|
Поговорим о Unit Of Work?
наткнулся на
https://www.youtube.com/watch?v=cm64vkwzxl4 SMART TALKS: Dynamics AX мероприятие что думаете о реализации класса UnitOfWork в Аксапте? что думаете о реализации UnitOfWork по сравнению с InventSumDelta? в комментариях к видео я написал: паттерн Unit of Work: https://martinfowler.com/eaaCatalog/unitOfWork.html полностью паттерн реализован в .net Entity Framework. в аксапте достаточно ограниченная реализация. основное преимущество не в многопоточной вставке, конечно. основное преимущество в комбинации методов обновления и ЧТЕНИЯ (getByKey) особенно когда записи обновляются несколько раз. пример - inventTrans.costAdjustment обновляется каждый раз, когда происходит вставка в InventSettlement. по идее нужно делать inventTrans.update в базе каждый раз. кроме того, есть InventSum, который нужно обновлять каждый раз как только изменяется/добавляется запись в InventTrans. с Unit of work можно сделать алгоритм, который: 1. читает inventTrans из базы один раз. 2. обновляет в памяти 3. читает обновленную версию из памяти 4. в самом конце делает команду обновления в базу. таким образом, сильно сокращается число обращений к базе. за счет этого и происходит оптимизация. главная особенность: getByKey читает запись из памяти, а если записи в памяти нет, то метод самостоятельно читает из базы. за счет этого и достигается унификация алгоритма и щастье программиста. особенности:
ну, и конечно Unit of Work в своем изначальном виде во внеаксаптовском мире часто используется как data source для unit test'ов. Последний раз редактировалось mazzy; 23.01.2017 в 13:42. |
|
Теги |
unitofwork, полезное |
|
|