locked
Question: Intranet Corporate Application - Power of web based with hardware/thick app interaction: ActiveX/NPAPI/LocalWebService/Other? RRS feed

  • Question

  • User-2064253957 posted

    The power of WCF, ASP.net, MVC, and server side design architecture is well understood and implemented today (IMO) with a fantastic design.  Microsoft consultants helped confirm things are on the up and up.

    It is an intranet application used by 30k uses or so.  The users are spread across the US with restricted pipe lines.  Software updates occur often due to government over regulation and policy changes.

    Input hardware (signature pad) is connected to the client with drivers bundled as part of the base image and updated rarely through a software deployment process that is well under control.

    Riding on the success of the project the company is looking to expand input devices to include some or all of the following:

    • finger print reader
    • scanner
    • 2d barcode scanner
    • mag strip reader

    So what's the problem?  Well the communication with the local device is accomplished with "Evil ActiveX".  Obviously we have Intranet settings relaxed to support ActiveX and tight on the internet and even trusted sites.  We have spent some time developing a fairly standard ActiveX wrapper for communicating with the input device drivers including the ability to query version numbers (to support or inform of older versions), settings and actions are sent in a fairly generic JSON interface and received wrapped in JSON again.  This is ideal since much of the interaction occurs on a single page and AJAX (via jquery) is used to call back and forth between the commands sent back and forth between the ActiveX driver wrapper to the Web UI and through back to the server.

    All in all, I think it's handled quite well but of course using ActiveX means we are limited to IE  and the future of ActiveX from Microsoft Consultants in one off conversation is "I wish we could get rid of it but it's used in too many places including by Microsoft itself."

    I can see few real possible solutions to the problem:

    1.  Continue to build ActiveX and stay close to any browser changes internally (and hope we never go outside the firewall)

    2.  Build ActiveX as a primary and a NPAPI (Firefox, Chrome, other) wrapper for the simple methods.

    3.  Build both ActiveX and NPAPI versions (yuck)

    4.  Build a webrequest "service" that can run 24/7 that handles JSON requests including which local driver to speak with.  For protection the service would ignore all requests except for those originating from the computer itself (via a webpage).

    5.  Java (so dang slow and frankly, I hate it.. perhaps irrationally)

    I guess I assume I'm not the only one in the position, particularly with intranet usage and more and more applications moving to the web requiring some interfacing with client side hardware.  My hope is that others have spent time money and resources already evaluating these which could help make my life easier. Or perhaps others are in (or soon to be) a similar situation I'd like to partake in some online or even phone conversations about the topic.

    Help is appreciated.

    Wednesday, March 31, 2010 9:53 PM

Answers

  • User-389939489 posted

    Thanks LV for the quick reply.  Is there a common name for this method?  I'd like to read up on some standards / white papers / patterns around the topic.

    In the context of solution 4: For the middle tier, maybe a bit overkill for your scenario, anyway Service Oriented Architecture (SOA) comes to my mind (or: distributed systems / distributed workflows; you could have queues, not only discovery); On the client (thinking Ajax in a web page, but could be Wpf), you have a triad of patterns that is the hit of the moment: MVC, MVP, MVVM.

    Hope this gives you some starting points (I cannot think of anything more specific than SOA, although there is at least an issue of the Architecture Journal, some two years from now, fully devoted to SOA and workflows, that I'd suggest in any case...).

    -LV

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, April 1, 2010 10:43 AM

All replies

  • User-389939489 posted

    I'd prefer solution 4, where you just need some standard ajax from the client, and the middle tier can then scale as you like (say, with a discovery service in-between). Should also be much easier to code and maintain than any of the alternatives you mention.

    HTH,

    -LV

    Wednesday, March 31, 2010 11:43 PM
  • User-2064253957 posted

    Thanks LV for the quick reply.  Is there a common name for this method?  I'd like to read up on some standards / white papers / patterns around the topic.

    Thursday, April 1, 2010 12:49 AM
  • User-389939489 posted

    Thanks LV for the quick reply.  Is there a common name for this method?  I'd like to read up on some standards / white papers / patterns around the topic.

    In the context of solution 4: For the middle tier, maybe a bit overkill for your scenario, anyway Service Oriented Architecture (SOA) comes to my mind (or: distributed systems / distributed workflows; you could have queues, not only discovery); On the client (thinking Ajax in a web page, but could be Wpf), you have a triad of patterns that is the hit of the moment: MVC, MVP, MVVM.

    Hope this gives you some starting points (I cannot think of anything more specific than SOA, although there is at least an issue of the Architecture Journal, some two years from now, fully devoted to SOA and workflows, that I'd suggest in any case...).

    -LV

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, April 1, 2010 10:43 AM