Что я иду на компромисс, запустив свое приложение как 32-битное на 64-битной машине с ОС?

Недавно мы перешли с Windows XP на Windows 7. Мы обнаружили, что одна часть приложения на C #, которая пытается создать файл dbf для КПК, не смогла вывести сообщение об ошибке «Поставщик 'Microsoft.ACE.OLEDB.12.0' не зарегистрирован на локальная машина ".

Я нашел много форумов, предлагающих мне создать 32-битный exe-файл, например здесь.

Мой вопрос № 1) Есть ли другой драйвер для доступа к dbf на машине с 64-битной ОС? (Я знаю, что есть один для доступа к Excel и доступа к БД). Есть что-нибудь для dbf?

Вопрос № 2. такой же, как и в моем Заголовке. У меня такое чувство, что, конвертируясь в 32-битную версию, я не использую все преимущества 64-битной версии. Итак, что я теряю из-за этого обходного пути?

Заранее спасибо.


person franklins    schedule 23.02.2011    source источник


Ответы (5)


Процессы x64 имеют доступ к большему количеству инструкций и большему количеству регистров. Компилируя для x86 и любого процессора, вы отказываетесь от возможности JIT-компилятора использовать эти инструкции и регистры (и больше памяти), что обычно приводит к (небольшому) снижению производительности. Но на самом деле в 99 случаях из сотни ваши пользователи не заметят.

Они заметят, что ваша программа не работает, если вы скомпилируете ее для любого процессора, потому что нет 64-битного драйвера OLE для файлов dbf. Этот формат больше не используется, поэтому я не удивлюсь, узнав, что Microsoft не писала и не планирует создавать 64-битную версию.

person Joel Coehoorn    schedule 23.02.2011

Отвечая на ваш второй вопрос, 64-битная версия не даст вам так много, если вы не хотите хранить огромные объемы данных в памяти. Большинство разработчиков по-прежнему ориентируются на x86 (32-разрядную версию), потому что с ней гораздо меньше проблем. Тем не менее, есть случаи, когда 64-битные системы работают лучше, но, как я уже сказал, это в основном связано с объемом памяти, который вы хотите использовать.

person Dmitri Nesteruk    schedule 23.02.2011

Отвечая на ваш первый вопрос, на 64-разрядной машине, пытающейся получить доступ к базе данных с 32-разрядным программным обеспечением через механизмы MS, должны быть установлены компоненты подключения к данным:

http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en.

person Joel Etherton    schedule 23.02.2011
comment
Хм, 32-битная база данных - неправильное название. - person Seva Alekseyev; 23.02.2011
comment
Спасибо, я попробовал вышеуказанный exe (на самом деле 64-битный из microsoft.com/downloads/en/. Но опять же похоже, что это решение предназначено только для xls или mdb, но не для dbf. - person franklins; 23.02.2011
comment
@fabraham - я видел это, и я, по-видимому, недостаточно внимательно прочитал ваш вопрос, потому что я пропустил часть .dbf (похоже, повторяющаяся тема для меня сегодня). У @Joel Coehoorn есть подходящий ответ. - person Joel Etherton; 23.02.2011

С x86 вы экономите память и упрощаете использование Edit-and-Continue. С другой стороны, вы ограничиваете свое адресное пространство. См. Некоторые доводы в пользу 1) отказа от создания 64-разрядной версии VS и 2) установки значения по умолчанию для новых приложений, созданных в 32-разрядной версии VS:

1: http://blogs.msdn.com/b/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

2: http://blogs.msdn.com/b/rmbyers/archive/2009/06/8/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

Плюс: http://blogs.msdn.com/b/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

person Mark Sowul    schedule 23.02.2011

Я не могу ответить на вопрос №1, а вот на вопрос №2 ответ, вероятно, будет «в зависимости от обстоятельств». При правильной реализации тяжелые математические операции (например, криптография) могут значительно повысить скорость 64-битных систем. А также вы сможете адресовать больше памяти (но это, вероятно, не проблема, если вы не используете большие объемы памяти).

В других случаях я действительно видел небольшие замедления для 64-битных приложений по сравнению с их построением как 32-битные приложения (вероятно, из-за некоторых накладных расходов, связанных с большими адресами).

person Yhrn    schedule 23.02.2011