Я пытаюсь улучшить скорость задания C#, назовем его «WidgetProcessor». За один проход WidgetProcessor обработает около 5000 виджетов и займет около 12 часов (около 8 секунд/виджет).Ссылка на проект веб-службы C# непосредственно в решении C#
WidgetProcessor делает ссылки на 3 разных веб-службы и называет их несколько раз для каждого обработанного виджета. Существуют различные улучшения производительности/дизайна, которые могут быть внесены в программу «WidgetProcessor», но я хочу проверить, вызовы нескольких веб-сервисов по сети заставляют работу работать медленно.
У меня есть исходный код для каждой из трех веб-сервисов (и у вас есть доступ ко всем ресурсам, которые используют эти веб-службы) и Мне интересно, есть ли способ легко использовать интерфейсы веб-сервисов в WidgetProcessor, ссылаясь на сами проекты веб-сервисов (вместо вызова веб-службы по сети). Веб-службы реализованы на C#.
Я бы обращался непосредственно к классам реализации службы, но основная проблема, с которой я сталкиваюсь, заключается в том, что в веб-службах собрано около 100 контрактов данных, а имена, обращенные к публике, отличаются от классов реализации.
[DataContract(Name = "WidgetInfo")]
public class WidgetDataContract
{
// DataMembers
}
Таким образом, ссылки на реализации непосредственно означают, что я буду делать много изменений кода в WidgetProcessor. Скорее, я хотел бы использовать служебные интерфейсы, так что изменения кода могут оставаться как минимум.
В принципе, я хочу получить сервис в своем решении WidgetProcessor, который выглядит и действует как веб-сервис, но не выполняет его операций по сети.
Возможно ли это?
Это решение работает, но требует много классов-оболочек. Некоторые члены данных внутри контрактов данных также переименованы, поэтому для данных также потребуется обертка. – SuperSimple
@SuperSimple, это опции. Я добавил еще пару, но какую производительность вы ищете от службы? > 10k calls/second легко достижимо с WCF. – Mitch