Я использую Silverlight с RIA Services, которые по своей природе асинхронны. Однако вопрос не относится к выбору этой технологии.
Я хочу обернуть асинхронный вызов, например, для веб-службы, и предоставить собственный упрощенный и слабо связанный API (например, репозиторий поверх DomainClient).
Пока у меня есть следующие стили асинхронных методов в моих интерфейсах:
public void DoAsyncWork(Action<AsyncWorkResult<someResultType>> callback);
и я рассматриваю возможность добавления следующих перегрузок:
public void DoAsyncWork(Action<someResultType> onSuccess,
Action<Exception> onException);
и
public void DoAsyncWork(Action<someResultType> onSuccess,
Action<Exception> onException,
Action finally);
действие onSuccess
будет выполнено только в том случае, если асинхронный вызов успешно завершен, onException
выполняется в случае сообщения об ошибке, сообщенной вызовом, и finally
woul выполняется в конце в любом случае.
Мой вопрос заключается в том, что, реализовав первый стиль, который является своего рода «общим», и наиболее используемым (насколько я могу судить), я должен реализовать два других? стоят ли они инвестиций в разработку и обслуживание?
Этот вопрос касается аспекта дизайна, независимо от каких-либо требований.
Заранее спасибо:)