Есть блоги с информацией об этом.Быстрый Bing вызовет тысячи разговоров: http://www.bing.com/search?q=x64+vs+x86+server&src=IE-SearchBox&FORM=IE8SRC Но, если кратко:
Есть ли какой-либо выигрыш в производительности при развертывании приложения на 64-битной ОС?Если да, сколько?
Наиболее заметным преимуществом является использование памяти - в частности, ваша служба / приложение и все другие службы / приложения сервера имеют больше возможностей для воспроизведения.Верно только если у вас 4 ГБ или больше оперативной памяти.Если у вас меньше этого, вы фактически тратите память на каждое выделение блока.
Преимущество на уровне необработанной производительности для каждого цикла ЦП заключается в том, что вы можете выполнить додо 64 бит информации, а не 32 бит - вдвое больше информации.Значительно более заметно в многопоточных приложениях: например, ваша служба WCF, размещенная в IIS, которая является многопоточной для входящих запросов.:)
Нужно ли делать какие-либо специальные действия, чтобы сделать мое приложение совместимым с 64-битной ОС?Если да, то что?
Короткий ответ, ничего, как никогда.:) И это преимущество .NET, когда вы компилируете с опцией default «Any CPU»!
Когда вы компилируете код в сборки, вы компилируете код на промежуточный язык (IL) - не фактический машинный код.Версия .NET CLR (Common Language Runtime), которая устанавливается на конкретном сервере / рабочей станции / устройстве, на которое вы развертываете, - это то, что берет ваш IL-код и выполняет его в собственных инструкциях для этой конкретной платформы - x86, x64 илиIA-64 (или AMD64, ARM и т. Д., Если есть какие-либо настройки).Вам не нужно ничего делать!
Что касается практики кодирования, то здесь тоже ничего делать нечего.
Ссылки на сторонние собственные сборки? Теперь единственное беспокойствоесли вы используете ссылки на любые сторонние сборки через COM или аналогичные, скомпилированные в собственном коде (то есть, в основном, сторонние сборки, пишущие на необработанных языках).Это становится непросто, если ссылаться на 32-битную нативную сборку через CLR на компьютере с архитектурой x64 (в основном, вы должны заставить свое приложение компилироваться на 32-битную версию для доступа к нему).Есть и другие обходные пути, которые выходят за рамки этого ответа.
Вот почему я либо: придерживаюсь всех ссылок .NET, ссылаюсь только на сторонние сборки, написанные на .NET, просто напишу это самили попросите автора стороннего компонента выпустить скомпилированные 32- и 64-битные версии.Последнее становится трудно протестировать на вашей x86 (32-битной) машине, так как вы можете ссылаться только на 32-битные версии, но придется развернуть 64-битные версии.
Больше головной боли возникает при работе с вашей собственнойПроект WCF и эти сторонние собственные сборки состоят в том, что встроенная служба размещения WCF в Visual Studio (как и в Cassini) является только 32-разрядной, как и IntelliSense в Visual Studio.Да, это весело, когда вы используете сторонние сборки и пытаетесь отлаживать приложения на компьютере с архитектурой x64.Хорошие времена!