The best enterprise web application architecture solution using hardware and local resources and heavy data entry forms

we have an APP that uses a lot of local resources, such as the Windows print API, the Windows registry, some Active X for connecting to POS devices (to pay money and receive a receipt, the price is sent from the APP), a barcode printer for printing labels RFID devices for reading and writing some data. The application is written with .Net framework 3.5 and uses some new features of the .Net framework (for example: WCF). The forms in the application are very heavy forms (7 of them are significant), in each form there are more than 100 text fields, combos, switches, panels and many other controls that are displayed or hidden in accordance with the user's needs, disabled or allowed, filled out and cleared many times.

After the user completes this work, prints will be sent to the previously selected printer automatically, labels will be printed mainly using a barcode printer, if necessary, RFID and POS devices.

The problem is that now we need a version of the web base. the reason is that there is an administrative department that needs to know about any transactions online (there is dashboard software). In the WIN APP version, we use WCF to send and receive new data (something like replication happens).

According to my searches, there are 3 (even 4) ways to achieve this, as shown below.

  • Using WPF Technology

  • Using Clickonce

  • Using Pure html + Active X (which means asp.net, very heavy javascript and Write Active X)

  • Windows Forms Hosting in IE

WPFs XBAP is good, but: It should load all the DLLs on the local machine and then run the application. This also happens every time a new version is uploaded to the server. Dll sizes are about 5 mg. There is also a risk that the user may parse the DLL. We also need to sign assemblies in order to be able to use the win API, and the user needs to add the site to his secure site.

The main drawback is that WPF is not really a web architecture, I mean, dlls perform client-side calculations, and the server is only responsible for storing objects (and some checks). refer to https://stackoverflow.com>

Clickonce: No idea, we can deploy the application (WPF version or Windows Form version) as a clickonce application, but the server is only responsible for updating new versions of software.

Pure web and HTML + Active X : This is a time-consuming job, everything looks fine, but in reality we need to be jQuery and AJAX masters, and I think most of the time is spent on debugging javascript. Also, only IE can launch the @all application due to Active X elements on the page.

Winform in IE : Not a good choice, but we can do it, the output works only in IE, and the displayed user interface is in a very bad style.

There is another way , it can be hacked when we develop using the clean Internet, we can write some WCF services to execute the hardware (related to equipment, local resources and other things) and install them on clients (for example, run cassini). Therefore, when we need, for example, to work with hardware and local resources (POS, RFID, Registry and others), we can call them from our website by calling a web service (which points to the local host).

Which one is a good choice and what? Is there any other solution? any idea can help.

thank you very much .

+4
source share
2 answers

The best solution might be to switch to WPF for the presentation level (Silverlight will require an additional step to access the local machine) and click-once (just because you are considering click-once, this does not mean that your server is now is just a distribution mechanism, also correct me if I'm wrong, but you can also include the .NET environment as part of the click-once distribution distribution)

Also, since its WPF does not mean everything , your business logic must be loaded with the client, the identifier collects your server part of the business logic, at least the sensitive material and calls it through wcf -with security of your choice-.

EDIT

Some useful links

+1
source

I'm not sure that I understand all your requirements correctly. It seems to me that all you need is a service component that monitors transactions . Instead of rewriting everything as WPF / SL, why not change your current application (you have not mentioned the technology used and cannot change it) to register any transaction at the service endpoint.

The service endpoint logs transactions in the database (for example, WCF via https, storing data in SQL Server). From there, you can provide information as part of the control panel software that you mentioned, or you can create your own reporting application using something like ASP.NET MVC .

+1
source

All Articles