С точки зрения производительности разница зависит, но, как правило, если и служба, и прямая ссылка на проект выполняют одни и те же вычисления в одинаково сопоставимых системах, ссылка на проект приведет к меньшему снижению производительности.
Вы на самом деле не сравниваете яблоки с яблоками, здесь.
Ссылка на проект заставляет Visual Studio скомпилировать указанный проект и включить результат (обычно DLL) в основной проект. Это означает, что есть скомпилированный (в любом случае, для байт-кода) фрагмент кода, который работает вместе с вашим приложением. ссылка на проект аналогична прямой ссылке на .dll или компонент com в том смысле, что в итоге вы получаете ссылку на фрагмент кода, который находится в вашем приложении. Любая обработка происходит на той же машине, что и ваш код.
Ссылка на службу заставляет Visual Studio создать класс прокси-клиента, который обращается к службе по сети (через HTTP, TCP или другие допустимые методы, в зависимости от того, как настроена служба). Служба может работать на вашем компьютере или на сервере на другом конце земного шара. Обработка, выполняемая в рамках службы, выполняется на этом компьютере.
Причина, по которой я сказал ранее, что производительность лучше со ссылкой на проект, чем со ссылкой на службу, если они выполняют одни и те же вычисления, заключается в том, что служба выполняет вычисления И несет накладные расходы на установление сетевого соединения, работу с сетевым трафиком и т. д.
Конечно, на производительность могут повлиять и другие факторы. Служба может размещаться на старой устаревшей машине с проблемами производительности, и в этом случае производительность в сценарии службы будет еще хуже.
С другой стороны, если ВАША программа работает на медленном ПК, а СЛУЖБА работает на перегруженном сервере, тот факт, что обработка выполняется на более быстром сервере, может перевесить снижение производительности сетевого трафика.
Между прочим, использование сервисов (то, что вы получаете, когда добавляете ссылку на сервис) является принципом SOA (Сервис-ориентированная архитектура). Основное описание, преимущества и способы использования представлены в Википедии: http://en.wikipedia.org/wiki/Сервисно-ориентированная_архитектура. Это такая же хорошая отправная точка, как и любая другая. Если вам нужно узнать больше, вы можете заглянуть в веб-службы (разновидности SOAP и REST — Visual Studio прекрасно обрабатывает веб-службы SOAP), а затем в WCF, который является более новым предложением Microsoft в мире SOA.
person
David
schedule
07.09.2011