Tôi cần trợ giúp để quyết định giữa Silverlight / silverlight ngoài trình duyệt / wpf


10

Tôi đang trong giai đoạn lập kế hoạch ban đầu của một dự án viết lại và tôi đang quyết định giữa silverlight / silverlight oob / wpf. TL; DR ở cuối.

Đây là một ứng dụng LOB xử lý khách hàng tiềm năng / khách hàng / lịch hẹn. Không quá phức tạp. Tôi đang độc lập nghiên cứu các tùy chọn này ở nơi khác, nhưng tôi nghĩ tôi sẽ hỏi xung quanh. Một số yêu cầu ban đầu / vấn đề có thể thấy trước là:

Tôi phải có thể gọi một exe trên hệ thống với dòng lệnh args (sip phone).

Làm cho SL có vấn đề

Cơ sở người dùng được phân phối và tôi muốn hạn chế lưu lượng đi qua dây càng nhiều càng tốt và tránh một số vấn đề tương tranh khó chịu

Tôi có thể thấy đây là một vấn đề khi sử dụng WPF

Phần mềm triển khai / cập nhật phải đơn giản . Một số người dùng rất phi kỹ thuật (xem: 70 tuổi, lần đầu tiên trên máy tính)

Bây giờ đây không phải là vấn đề lớn với ứng dụng ClickOnce mà chúng tôi đang thay thế và tôi có quyền kiểm soát các máy mà nó được sử dụng. Tuy nhiên, nó đơn giản hơn cho người dùng nếu họ thậm chí không phải nhấp vào nút "Cài đặt" nhấp chuột. Tôi không biết làm thế nào điều này được xử lý với Silverlight OOB.

Công ty đang lên kế hoạch mở rộng cứng trong 12 tháng để triển khai phần cứng nên nhanh chóng / dễ dàng. Ý tưởng là để có được kết nối internet tại một địa điểm mới, cắm vào một số máy tính và có thể làm việc mà không cần người CNTT chuyên dụng hoặc thiết lập máy chủ.

Làm cho SL hấp dẫn

Tích hợp với các dịch vụ khác (phần mềm tài chính, máy chủ asterix) không phải là mục tiêu trước mắt, nhưng đó là mục tiêu cuối cùng là một phần của hệ thống. Điều này được thực hiện đơn giản / hiệu quả hơn nhiều nếu một dịch vụ được thiết lập để tích hợp với các dịch vụ thứ cấp đó và không phải chuyển tất cả dữ liệu đó qua mạng

Làm cho SL hấp dẫn

Tạo nhiều 'phiên bản' nằm ngoài cửa sổ. Tôi không biết những gì nó giống như duy trì một phiên bản oob bạc + bạc (nếu thậm chí có bất kỳ vấn đề)

Có thể làm cho WPF một lựa chọn tốt hơn.

TL; DR: Từ quan điểm thuận lợi của tôi, một ứng dụng Silverlight có ý nghĩa tốt nhất đối với 90% người dùng - 10% còn lại không thể sử dụng nó vì họ cần chạy exe. Silverlight OOB có thể là một trung gian hạnh phúc nhưng hiện tại tôi không biết mô hình thực thi cho nó như thế nào (vẫn còn một khái niệm về mã phía máy chủ? Nếu vậy, đó có thể là lý tưởng) và tôi không biết cách triển khai / cập nhật hoạt động cho nó.


Tại sao bạn muốn thay thế ứng dụng ClickOnce ở nơi đầu tiên? ClickOnce có một tùy chọn để kiểm tra và tải xuống bản cập nhật có sẵn khi khởi động Ứng dụng. Tôi đã thực hiện điều đó, xem replayer.codeplex.com
Marcel

Câu trả lời:


6

Vâng - vấn đề thú vị. Bạn đã quên đề cập rằng bạn có thể có ứng dụng tin cậy hoàn toàn Silverlight kể từ SL4, vì vậy nếu bạn đang nghĩ đến WPF, bạn có thể muốn xem xét điều đó thay vào đó. Nó sẽ cần cài đặt (ClickOnce), nhưng bạn dường như đang di chuyển khỏi đó.

Tôi chưa làm gì với OOB, nhưng tôi khá chắc chắn rằng cùng một nhị phân có thể được sử dụng cả trong broswer và ngoài trình duyệt vì đây là cài đặt dự án thay vì mục tiêu xây dựng riêng biệt.

"Cho phép chạy ứng dụng ra khỏi trình duyệt"

trên tab Silverlight của dự án Silverlight.

Vì vậy, không có vấn đề bảo trì riêng biệt ở đó.

Bạn có thể xây dựng một số lượng mã hợp lý vào ứng dụng web lưu trữ ứng dụng Silverlight và liên lạc bằng Dịch vụ WCF RIA - một lần nữa bạn phải sử dụng .NET 4 và SL 4 để có phiên bản 1.0 này. .NET 3.5 và SL 4 chỉ hỗ trợ bản beta dịch vụ WCF RIA. Điều này sẽ làm giảm a) kích thước tải xuống và b) số lượng mã cần thực thi trên máy khách nhưng sẽ tăng lưu lượng mạng.

Trên điểm số đó, bạn có thể chia mã Silverlight của mình thành nhiều cụm và sử dụng một cái gì đó như Prism đặt chúng để tải theo yêu cầu. Điều này có nghĩa là người dùng chỉ tải xuống những phần của ứng dụng mà họ thực sự đang sử dụng. Bạn có thể giảm thêm số lượng tải xuống bằng cách kiểm tra

"Giảm kích thước XAP bằng cách sử dụng bộ đệm ẩn thư viện ứng dụng"

Lựa chọn.

Nếu bạn có tệp "extmap" đi cùng với bất kỳ dll bên ngoài nào (bên thứ ba hoặc .NET) thì điều này có nghĩa là chúng được gói vào một tệp zip và được tải xuống riêng để chia sẻ trên tất cả các tệp xap trong dự án của bạn. Điều này giữ cho các tệp xap riêng lẻ ở kích thước tối thiểu của chúng và đảm bảo rằng bạn chỉ có một bản sao của các dll khác này trên máy khách.


1
+1: Cảm ơn bạn đã nhập @ChrisF. Tôi chỉ ước tôi biết bạn IRL để tôi có thể chọn bộ não của bạn.
Steven Evers

2

Phân tích của bạn là rất tốt.

Điều khác duy nhất mà tôi muốn đề cập là không phải TẤT CẢ khuôn khổ nào có sẵn cho bạn trong ứng dụng Silverlight. Hạn chế đó CÓ THỂ nghiêng sự lựa chọn của bạn đối với WPF, nhưng bạn sẽ cần xem cách hạn chế đó áp dụng hay không cho nhu cầu ứng dụng của bạn.


Ứng dụng này chủ yếu là một ứng dụng thô sơ, ngoại trừ nhu cầu gọi điện thoại SIP qua exe + args vì vậy tôi không nghĩ rằng mình sẽ bỏ lỡ bất kỳ phần khung bị thiếu nào.
Steven Evers

2

Chỉ cần một vài điều nhanh chóng:

Triển khai và "mã phía máy chủ": Ứng dụng Silverlight là ứng dụng phía máy khách, đơn giản và đơn giản. Đừng để thực tế là nó được phân phối qua trình duyệt làm bạn bối rối - khi bạn chạy một ứng dụng SL trong trình duyệt, bạn đang tải xuống các hội đồng cho ứng dụng đó trong một gói nén, giải nén chúng và chạy chúng bằng cách sử dụng plugin. Silverlight tự nó không có khái niệm "mã phía máy chủ" - nếu bạn muốn mã chạy trên máy chủ từ xa, hãy viết dịch vụ WCF.

Cập nhật ứng dụng: Đây là một tình huống phổ biến cho các ứng dụng OOB và SL có hỗ trợ tích hợp. Google tìm kiếm CheckAndDoadUpdateAsync.

Chỉnh sửa: Quên đề cập - cài đặt ứng dụng được thực hiện từ bên trong ứng dụng. Theo mặc định, một ứng dụng SL có thể cài đặt sẽ có hành động menu ngữ cảnh để cài đặt nó. Tuy nhiên, việc cài đặt cũng có thể được thực hiện theo chương trình để đáp ứng với người dùng nhấp vào nút. Trạng thái cài đặt cũng có thể được phát hiện theo chương trình, vì vậy những gì tôi đã thấy một số ứng dụng SL chỉ nhằm chạy OOB làm là phát hiện đầu tiên nếu chúng được cài đặt. Nếu vậy, hãy chạy ứng dụng. Nếu không, chỉ hiển thị màn hình giật gân với nút cài đặt ứng dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.