Разница между ссылкой на проект и ссылкой на службу в .NET

Всякий раз, когда мы создаем приложение .NET, мы рассматриваем несколько архитектур, таких как уровень доступа к данным (DAL) или бизнес-уровень (BL). В этих слоях обычно мы пишем код для взаимодействия с базой данных. Таким образом, для взаимодействия с этими методами, написанными в этих слоях, у нас есть несколько вариантов. Здесь мое внимание сосредоточено на справке по проекту и справке по службе.

Первый — щелкните правой кнопкой мыши проект ‹‹ Добавить ссылку ‹‹ Выберите «Проект» на вкладке «Проект». Второй — создайте службу asmx/wcf, разместив их в проекте. Щелкните правой кнопкой мыши проект ‹‹ Добавить ссылку на службу ‹‹ Выберите нужную службу для взаимодействия.

В чем разница обоих этих вариантов с точки зрения производительности или каких-либо других параметров?


person Sumant    schedule 07.09.2011    source источник


Ответы (1)


С точки зрения производительности разница зависит, но, как правило, если и служба, и прямая ссылка на проект выполняют одни и те же вычисления в одинаково сопоставимых системах, ссылка на проект приведет к меньшему снижению производительности.

Вы на самом деле не сравниваете яблоки с яблоками, здесь.

Ссылка на проект заставляет 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