Ошибка обработки веб-сервиса

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

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

-- редактировать -- Например: Банк А – другой, Банк Б – я. Человек идет в банк А, чтобы внести чек из банка Б, поэтому он использует мой веб-сервис для совершения транзакции, а я делаю снятие средств и возвращаю сообщение «ОК», но затем, прежде чем банк А успевает добавить деньги на счет, < em>что-то не работает. Итак, теперь я снял деньги, но у человека на самом деле нет денег, потому что банк А провалил транзакцию.


person alfjos89    schedule 18.11.2010    source источник
comment
не уверен, что правильно понял... все транзакции будут происходить на стороне сервера, не так ли?? что именно вы имеете в виду, когда говорите, что клиент терпит неудачу? если операция на стороне клиента не удалась, в худшем случае она не вызовет запрос на стороне сервера, что сводит на нет любые шансы на потерю денег. я что-то пропустил??   -  person pinaki    schedule 18.11.2010
comment
Здесь нужно больше подробностей, пожалуйста, будьте более конкретными, что именно вы спрашиваете? Обработка исключений типа try catch?   -  person Jakub    schedule 18.11.2010
comment
Нет, если вы посмотрите на пример, моему банку удается снять деньги, но другой банк (банк а) не может внести деньги, так что теперь деньги потеряны, потому что их нет ни в банке а ни банка b, поэтому лучше всего будет откатить мою транзакцию, но как я узнаю, что другой банк потерпит неудачу?   -  person alfjos89    schedule 18.11.2010


Ответы (2)


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

Я бы сделал так, чтобы он был транзакционным, скажем, они звонят в сервис, чтобы начать вывод средств, затем вы подтверждаете, что транзакция началась и что ваш сервис ожидает снятия этой суммы. (Возможно, заблокируйте эти деньги, чтобы их нельзя было снять, пока транзакция не завершится, и установите время, чтобы транзакция автоматически завершилась неудачей через x секунд)

Затем клиент делает что-то с этой информацией, скажем, звонит во второй «банк». Когда они получают сообщение от другого банка о том, что сумма была добавлена, они звонят в службу с вашей системой, чтобы «отправить» транзакцию, фактически сняв сумму.

person Steve    schedule 18.11.2010

Проблема в том, что вы доверяете клиенту взять деньги из одного банка и положить их в другой. Действительно? Прохладный! Я собираюсь сделать несколько вызовов API, утверждая, что я только что «получил» много денег. Мваахахахаха!

Серьезно, что должно произойти, так это то, что клиент берет чек и представляет его банку А (один вызов API). Затем банк А предъявляет чек банку Б и получает средства. (Еще один вызов API). Затем, возможно, клиент может связаться с банком А, чтобы убедиться, что баланс его счета увеличился. Ни в коем случае клиент не должен связываться с банком B. Тогда клиент делает только один вызов API, и он не может сломать систему, как в вашем примере.

person James    schedule 18.11.2010