У нас есть система нисходящего потока, система ERP, которая может выставлять свои таблицы через SOAP. Веб-служба, которую он публикует, обычно имеет методы создания, обновления и удаления. Затем мы создаем прокси-сервер на нашем конце с помощью svcutil, включая методы async. Наконец, мы помещаем ACL перед этим для взаимодействия с другими системами.Лучше бросать NotSupportedException внутри или снаружи задачи?
Мы также только что обнаружили важную информацию об инварианте - стоимость для элементов не может быть обновлена ничем иным, чем самой системой ERP. Однако действительно немой API позволит потребителям сделать это.
Моя идея обойти это подклассы прокси-сервера WCF и иметь явные реализации для обновления, которые выкидывают NotSupportedException
. Нет, это не помешает разработчику генерировать собственный прокси-сервер и делать это. Но по крайней мере мы можем гарантировать, что это не может произойти, когда мы пройдем через наш ACL.
Update_Result Item_Port.Update(Update request)
{
throw new NotSupportedException();
}
Для асинхронных методов, я мог либо сделать
Task<Update_Result> Item_Port.UpdateAsync(Update request)
{
throw new NotSupportedException();
}
ИЛИ
Task<Update_Result> Item_Port.UpdateAsync(Update request)
{
return Task.Factory.StartNew<Update_Result>(() =>
{
throw new NotSupportedException();
});
}
С точкой зрения асинхронного, что один является более "правильным?
BTW, вместо использования 'StartNew()' с бросающей лямбдой, вместо этого вы можете использовать 'TaskCompletionSource' и' SetException() '. – svick
Этот вопрос касается .NET 4.0 без каких-либо расширений Async, было бы лучше удалить/исключить использование термина C# -5.0 'async' при формулировке вопроса, потому что он смущает –
. Я все время забываю, что .net 4.5 - C# 5.0. –