#asp.net-core #synchronization #stripe-payments #payment-gateway
Вопрос:
Я использую API платежного шлюза, который используется нашим ASP.NET Основное приложение для получения истории платежей клиентов, когда они открывают страницу «Платежи».
Вопрос в том, является ли это хорошей практикой всегда извлекать эту информацию из API платежного сервиса или лучше хранить локальную копию этих объектов, так как это будет быстрее?
о чем следует подумать:
- объекты оплаты не изменяются в API после их завершения
- извлечение непосредственно из API влияет на допустимое ограничение запросов для этого API
- чтобы хранить эти объекты локально, я думаю, что мне нужно регулярно синхронизировать таблицу БД с данными API
P.S.: Стек, который я использую:
- бэкэнд: ASP.NET Сердечник
- база данных: PostgreSQL
- платежный шлюз: Stripe
Комментарии:
1. Я предлагаю немного проверить информацию о сквозной записи и обратной записи при реализации кэша, реализуйте их как кэш памяти или кэш Redis по мере необходимости
2. Используйте какую-то логику с GetOrCreate , имейте некоторую логику для организации и удаления ключа кэша по мере необходимости, должно быть достаточно
3. Я вижу это по-другому. История платежей клиента всегда должна быть правильной, если вы сохраняете копию в кэше, как обеспечить обновление последней истории платежей? Или у вас есть другой api, который достаточно умен, чтобы просто запросить последнюю часть, а затем обновить локальные данные? Поэтому я думаю, что лучше все время вызывать api и пытаться улучшить производительность api. Это всего лишь мои 2 цента.
Ответ №1:
Конечно, это полностью зависит от вашего сценария, если вы используете api. Единственная проблема заключается в том, что ваш сервер использует большую пропускную способность при большом количестве запросов, и такие вещи, как задержка, могут быть неприятными для ваших пользователей. В общем, лучше иметь копию в своей базе данных, даже если этот сервер API находится вне досягаемости, ваше приложение не будет иметь никаких проблем и будет работать должным образом