лучшее решение для архитектуры корпоративного веб-приложения, использующего аппаратные и локальные ресурсы, а также тяжелые формы ввода данных - PullRequest
4 голосов
/ 10 июня 2011

у нас есть приложение, которое использует много локальных ресурсов, таких как API печати Windows, реестр Windows, некоторые Active X для подключения к POS-устройствам (для оплаты денег и получения квитанции, цена отправляется из приложения), принтер штрих-кода для печать этикеток, устройства RFID для чтения и записи некоторых данных. Приложение написано с использованием .Net Framework 3.5 и использует некоторые новые функции .Net Framework (например, WCF). Формы в приложении представляют собой очень тяжелые формы (7 из них являются обязательными), в каждой форме имеется более 100 текстовых полей, комбо, переключателей, панелей и многих других элементов управления, которые в соответствии с потребностями пользователя отображаются или скрыты, отключены или включен, заполнен и очищен, много-много раз.

После того, как пользователь выполнит работу, большая часть отпечатков будет автоматически отправлена ​​на ранее выбранный принтер, большинство этикеток будет напечатано на принтере штрих-кодов, при необходимости будут вызваны устройства RFID и POS.

Проблема в том, что теперь нам нужна базовая веб-версия этого. причина в том, что существует административный отдел, который должен знать о любых транзакциях в сети (есть программное обеспечение для панели инструментов). В версии WIN APP мы используем WCF для отправки и получения новых данных (что-то похожее на репликацию).

Согласно моим поискам, есть 3 (даже 4) способа достижения этой цели, как показано ниже.

  1. Использование технологии WPF

  2. Использование Clickonce

  3. Использование Pure html + Active X (что означает asp.net, очень тяжелый JavaScript и запись Active X)

  4. Хостинг Windows формирует элементы управления в IE

WPF XBAP - это хорошо, но: Необходимо загрузить все библиотеки DLL на локальный компьютер, а затем запустить приложение. Это также происходит каждый раз, когда на сервер загружается новая версия. Размеры DLL составляют около 5мг. Также существует риск, что пользователь может разобрать DLL. Также нам нужно подписать сборки, чтобы иметь возможность использовать win API, и пользователю необходимо добавить сайт на его защищенный сайт.

Основным недостатком является то, что WPF на самом деле отсутствует в веб-архитектуре. Я имею в виду, что dll выполняет вычисления на стороне клиента, а сервер отвечает только за сохранение сущностей (и выполняет некоторые проверки). см. https://stackoverflow.com/tags/web-applications/info

Clickonce: Понятия не имею, мы можем развернуть приложение (версия WPF или версия для Windows) как приложение clickonce, но сервер отвечает только за обновление новых версий программного обеспечения.

Чистая сеть и HTML + Active X : Это трудоемкая работа, все вроде бы нормально, но на самом деле мы должны быть мастерами JQuery и AJAX, и я думаю, что большая часть времени уходит на отладку javascript. Также только IE может запускать App @ all из-за элементов управления Active X на странице.

Winform в IE : Совсем не лучший выбор, но мы можем это сделать, вывод работает только в IE, а также визуализированный пользовательский интерфейс, в очень плохом стиле.

Существует также другой способ , который может быть взломом, когда мы разрабатываем с помощью чистого веба, мы можем написать некоторые службы WCF для выполнения аппаратной части (связь с оборудованием, локальными ресурсами и другими вещами) и установите их на клиентах (например, запустите cassini). Поэтому, когда нам нужно, например, работать с аппаратными и локальными ресурсами (POS, RFID, Registry и другими), мы можем вызывать их с нашего сайта с помощью вызова веб-службы (который указывает на локальный хост).

Что из этого является хорошим выбором и что? Есть ли другое решение? любая идея может помочь.

большое спасибо .

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Самым чистым решением может быть переход на WPF для уровня представления (для Silverlight потребуется дополнительный шаг для доступа к локальной машине) и щелчок один раз (только потому, что вы считаете, что щелчок один раз не означает, что ваш сервертеперь это просто механизм распространения, также исправьте меня, если я ошибаюсь, но вы также можете включить среду выполнения .Net как часть пакета рассылки click-Once)

Также только потому, что его WPF не означает all ваша бизнес-логика должна быть загружена с клиентом, идентифицируйте вашу серверную бизнес-логику, по крайней мере, секретные вещи и вызовите ее через wcf - с выбранной вами безопасностью -.

РЕДАКТИРОВАТЬ

Некоторые полезные ссылки

1 голос
/ 18 июня 2011

Я не уверен, что правильно понимаю все ваши требования. Мне кажется, что все, что вам нужно, это компонент службы, который отслеживает транзакции . Вместо того чтобы переписывать все как WPF / SL, почему бы не изменить текущее приложение (вы не упомянули используемую технологию и не можете его изменить), чтобы записать любую транзакцию в конечную точку службы.

Конечная точка службы записывает транзакции в базе данных (например, WCF через https, хранение данных в SQL Server). Оттуда вы можете либо предоставить информацию как часть программного обеспечения для панели инструментов , которое вы упомянули, либо создать свое собственное приложение для создания отчетов , используя что-то вроде ASP.NET MVC .

...