Можно ли запустить приложение Windows Form на платформе Windows CE?

Я новичок в разработке Windows CE и никогда не делал этого. Нужен совет от эксперта здесь.

В нашем текущем проекте мы разрабатываем клиент-серверное приложение. На стороне клиента используется приложение Windows Form, основанное на ОС Windows XP, в то время как сервер является веб-приложением.

Этот вопрос относится к клиентскому приложению (Windows Form). Это приложение использует Sql Server Express Edition для хранения данных. Данные хранятся в формате объекта XML. Он также может передавать данные с клиента на сервер через веб-сервис. Он также взаимодействует с таким оборудованием, как считыватель магнитных карт, бесконтактный считыватель смарт-карт и термопринтер. Большая часть связи между аппаратным устройством и системами основана на последовательном порте. Он использует стандартный app.config для конфигурации и является многопоточным приложением.

Существует новое требование для использования портативного устройства, использующего платформу Windows CE. В это портативное устройство входило необходимое оборудование, такое как бесконтактный считыватель смарт-карт, принтер и считыватель магнитных полос. Вместо того, чтобы разрабатывать новое клиентское приложение, могу ли я преобразовать мое текущее приложение, основанное на Windows XP, в Windows CE? Если да, как я могу это сделать? Если нет, то есть ли еще какое-нибудь блестящее предложение сделать это?

Заранее спасибо. Программист

6 ответов

Да, это возможно с помощью .NET compact framework.

Однако вы должны понимать, что CF является подмножеством полной платформы.NET, а версия CLR для CE имеет ограничения, отличные от версии для настольных компьютеров.

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

Как уже упоминалось, .NET Compact Framework - это путь.

Полезный совет: чтобы определить, поддерживается ли что-то CF, на страницах MSDN есть небольшой значок, который при прокрутке говорит: "Поддерживается.NET Compact Framework". Например, вы переходите к методам WaitHandle и видите, что поддерживается WaitOne, но не WaitAny или WaitAll. Это может дать вам лучшее представление о том, сколько вам, возможно, придется изменить.

Это потребует определенных усилий, но это возможно. Windows Forms не совпадает с Windows Mobile, так как Compact Framework является лишь подмножеством.NET Framework.
Кроме того, будут некоторые ограничения, на которые следует обратить внимание, особенно в отношении выделения памяти (ограничение WinCE до 32 МБ памяти, выделяемой для одного приложения), потоков и ограниченных вычислительных ресурсов (например, в приложении моей компании вносятся некоторые изменения на экране независимыми темами).

API-интерфейсы в Windows CE значительно отличаются, некоторые аспекты могут легко переноситься, но, скорее всего, потребуется немало изменений.

Это возможно, но вам придется ограничиться тем, что доступно в .Net compact framework.

Эта редакция фреймворка предназначена для работы на встраиваемых устройствах и Windows CE.

И технология базы данных, которую вы ищете, - это SQL Server Compact Edition (также известный как SQLCE).

Экземпляр базы данных SQL CE представляет собой один файл (.sdf) в локальном файловом хранилище (очень похоже на старые компоненты базы данных Access) и НЕ работает в качестве отдельной службы. Поэтому убедитесь, что вы аккуратно закрываете соединения с базой данных (используйте предложение finally!).

Из краткого прочтения контекста вашего приложения я не думаю, что вы столкнетесь с серьезной проблемой множественного доступа / пула соединений.

Раздражает о Windows Forms вещи на WinCE:

  1. sllllooooowwww (графический ускоритель недоступен или что-то)
  2. метки не имеют автоматического размера, многостраничные текстовые поля только для чтения - это то, к чему иногда прибегают
  3. текст на кнопках не переносит слова
  4. анимированные GIF-файлы не поддерживаются в PictureBox

К тому времени, как вы пересмотрели код, запущенный на вашем устройстве, вам будет очень трудно портировать обратно, поэтому постарайтесь сохранить новое дерево в вашем контроле исходного кода полностью...:(

Другие вопросы по тегам