amarao: (Default)
[personal profile] amarao
Вот я только что придумал.

Предположим, у нас есть код, который по каким-то описаниям пользователя говорит "да" или "нет" (можно ему или нет).

MVP: fn allow_user(...) -> bool

Теперь мы начинаем его выносить в отдельный сервис. Но, вместо того, чтобы завернуть bool в HTTP, мы ... чуть-чуть увеличиваем вычурность.

Пусть у нас будет не bool а лямбда, причём с частичным замыканием. Лямбда может захватывать параметры, в том числе, переданные в описании пользователя, откладывая момент принятия решения. Часть параметров захватывается в момент формирования лямбды, но часть параметров остаётся свободной и должна быть передана в момент evaluate. Поскольку evaluate не хочет знать про сигнатуру лямбды, мы делаем отдельную систему глобальных переменных, которые захватываются по ссылке, и которые могут меняться (т.е. захват неполный).

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

И может быть, даже, через XML, с глобальным реестром определений для сущностей в запросах.

(И назад этот фарш не провернуть)

Date: 2024-11-21 04:11 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Тут есть нюансы. Есть Чужой Наш продакшн, его — уважай и уважаем будешь. И есть Чужой Чужой продакшн. Это вот тот, который успел первым и занимает (наше) место в мире, и его не грех и попробовать подвинуть.

Date: 2024-11-24 01:29 pm (UTC)
From: [personal profile] provokatorz
Там обычно не оцениваешь чужой продакшен по коду, только по выхлопам, но это другая история.

Profile

amarao: (Default)
amarao

September 2025

S M T W T F S
 12345 6
78 910111213
14151617 181920
21222324252627
282930    

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 27th, 2025 12:44 pm
Powered by Dreamwidth Studios