2015-08-12 17 views
6

Tôi biết rằng có rất nhiều chủ đề nói về chủ đề này nhưng hãy để tôi thảo luận về vấn đề của tôi trong một số chi tiết.Lựa chọn thay thế cho ActiveX trong .NET

Trong dự án, chúng tôi đang sử dụng rất nhiều thiết bị (Máy ảnh, Máy in, Thiết bị vân tay, Đầu đọc thẻ thông minh) trong ứng dụng dành cho máy tính để bàn và chúng tôi đã phát triển các thành phần C# để xử lý các thiết bị này bằng SDK của họ.

Vấn đề bây giờ là chúng ta đang chuyển sang phát triển web và chúng ta phải chuyển đổi các ứng dụng máy tính để bàn WPF thành các ứng dụng web ASP.NET MVC và cũng nên sử dụng các thành phần hiện có của chúng ta cho các thiết bị.

Các giải pháp khả thi để đối phó với các thiết bị từ web ứng dụng Net là:

  1. Sử dụng ActiveX (nào là chết hoặc sẽ chết sớm và nó đòi hỏi một số kinh nghiệm COM và rất khó để phát triển).
  2. Sử dụng Silverlight (Ngoài ra, đã chết hoặc sẽ sớm chết và rất hạn chế để chúng tôi không thể thêm tham chiếu đến các thành phần C# hiện có).
  3. Sử dụng Java Applet (yêu cầu một số trải nghiệm Java và chúng tôi sẽ viết lại các thành phần C# hiện có trong Java).

Có giải pháp nào khác để chúng tôi có thể xử lý các thiết bị từ ứng dụng ASP.NET MVC qua mạng nội bộ không?

+2

Java Applet trong trình duyệt cũng tốt như đã chết. – Snarf

+0

Câu trả lời được chấp nhận tại http://stackoverflow.com/questions/13021723/can-html5-communicate-with-peripherals-like-scanners-and-credit-card-readers có thể hữu ích. –

+1

'Vấn đề bây giờ là chúng ta đang chuyển sang phát triển web '- chính xác. Web "ứng dụng" không phù hợp khi bạn yêu cầu truy cập phần cứng như thế. Giữ ứng dụng dành cho máy tính để bàn của bạn và sử dụng web cho những gì web dự định. –

Trả lời

1

Bạn có thể viết tiện ích mở rộng trình duyệt cho Chrome, Firefox và Edge (sớm). Tôi không chắc bạn sẽ sử dụng lại bao nhiêu mã trên các trình duyệt nếu bạn cần nhắm mục tiêu tất cả và tôi không chắc chắn về mức độ bạn có thể chạy mã tùy ý để kết nối với các thiết bị từ tiện ích mở rộng của mình, nhưng một cái gì đó bạn nên xem xét. Sau đó, bạn có thể mở rộng trình duyệt của mình với các trang web để truyền dữ liệu cần thiết.

Người dùng của bạn cần cài đặt tiện ích mở rộng cho trình duyệt của họ để nhận chức năng.

0

Bạn vẫn có thể phân phối các ứng dụng "trợ giúp" nhỏ dựa trên phiên bản được phân tách của các ứng dụng WPF hiện tại của bạn. Chúng sẽ thực hiện truy cập thiết bị và liên lạc trực tiếp với máy chủ web của bạn. Các trang web sẽ phục vụ như là giao diện.

Điều này sẽ cho phép bạn tận dụng mã giao tiếp thiết bị hiện có của mình. Mặt khác, nó đòi hỏi một cài đặt riêng trên máy khách, điều đó có nghĩa là một điều nữa để người dùng thực hiện và một điều nữa cần được cập nhật.

+0

Tôi không nghĩ đây là giải pháp. Phá vỡ một ứng dụng .Net thành các ứng dụng riêng biệt nhỏ hơn chỉ vì lợi ích của việc sử dụng một trình duyệt web crappy là một quyết định rất nghèo. –

+0

@HighCore nó là một thay thế hoàn toàn khả thi mà tôi đã thấy các công ty sử dụng. Nó không hoàn hảo cho mọi tình huống, nhưng đó là một giải pháp khả thi. – mason

+0

cách tiếp cận này mang lại lợi ích gì so với ứng dụng .Net (WPF) chính thức, vui lòng? –