Saya perlu bantuan memutuskan antara silverlight / silverlight out-of-browser / wpf

10

Saya sedang dalam tahap perencanaan awal proyek menulis ulang dan saya memutuskan antara silverlight / silverlight oob / wpf. TL; DR pada akhirnya.

Ini adalah aplikasi LOB yang menangani kalender prospek / pelanggan / janji temu. Tidak terlalu rumit. Saya secara mandiri meneliti opsi-opsi ini di tempat lain, tetapi saya pikir saya akan bertanya-tanya. Beberapa persyaratan awal kasar / masalah yang dapat diperkirakan adalah:

Saya harus dapat memanggil exe pada sistem dengan commandline args (sip phone).

Membuat SL menjadi masalah

Userbase didistribusikan dan saya ingin membatasi lalu lintas yang melewati kawat sebanyak mungkin dan menghindari beberapa masalah konkurensi buruk

Saya bisa melihat ini menjadi masalah menggunakan WPF

Penyebaran / pembaruan perangkat lunak harus sederhana . Beberapa pengguna sangat non-teknis (lihat: 70 tahun, di komputer untuk pertama kalinya)

Ini bukan masalah besar sekarang dengan aplikasi ClickOnce yang kami ganti, dan saya memiliki kontrol atas mesin yang digunakan. Namun, ini lebih mudah bagi pengguna jika mereka bahkan tidak perlu mengklik tombol "Instal" setelah klik. Saya tidak tahu bagaimana ini ditangani dengan Silverlight OOB.

Perusahaan merencanakan ekspansi keras dalam 12 bulan sehingga penyebaran perangkat keras harus cepat / mudah. Idenya adalah untuk mendapatkan koneksi internet di lokasi baru, tancapkan beberapa komputer dan dapat bekerja tanpa perlu orang IT khusus atau pengaturan server.

Membuat SL menarik

Integrasi dengan layanan lain (perangkat lunak keuangan, server asterix) bukan tujuan langsung, tetapi akhirnya menjadi bagian dari sistem. Ini dibuat lebih sederhana / lebih efisien jika satu layanan diatur untuk diintegrasikan dengan layanan sekunder tersebut dan tidak harus mentransfer semua data melalui kabel.

Membuat SL menarik

Membuat banyak 'versi' ada di luar jendela. Saya tidak tahu bagaimana rasanya mempertahankan versi silverlight + silverlight oob (jika ada masalah)

Mungkin menjadikan WPF pilihan yang lebih baik.

TL; DR: Dari sudut pandang saya, aplikasi silverlight paling masuk akal bagi 90% pengguna - 10% lainnya tidak dapat menggunakannya karena mereka perlu menjalankan exe. Silverlight OOB mungkin merupakan jalan tengah yang bahagia, tetapi saya tidak tahu saat ini seperti apa model pelaksanaannya (apakah masih ada konsep kode sisi server? Jika demikian, itu mungkin ideal) dan saya tidak tahu bagaimana penerapan / pemutakhiran bekerja untuknya.

Steven Evers
sumber
Mengapa Anda ingin mengganti aplikasi ClickOnce di tempat pertama? ClickOnce memiliki opsi untuk memeriksa dan mengunduh pembaruan yang tersedia pada saat permulaan Aplikasi secara otomatis. Saya telah melakukannya lihat replayer.codeplex.com
Marcel

Jawaban:

6

Masalah yang menarik. Anda lupa menyebutkan bahwa Anda dapat memiliki aplikasi kepercayaan penuh Silverlight pada SL4, jadi jika Anda memikirkan WPF, Anda mungkin ingin mempertimbangkannya. Mungkin perlu menginstal (ClickOnce), tetapi Anda tampaknya menjauh dari itu.

Saya belum melakukan apa-apa dengan OOB, tapi saya cukup yakin bahwa biner yang sama dapat digunakan baik di broswer dan di luar browser karena ini adalah pengaturan proyek daripada target build yang terpisah.

"Aktifkan menjalankan aplikasi dari browser"

pada tab Silverlight proyek Silverlight.

Jadi tidak akan ada masalah perawatan terpisah di sana.

Anda dapat membuat sejumlah kode ke dalam aplikasi web yang menampung aplikasi Silverlight dan berkomunikasi menggunakan Layanan WCF RIA - sekali lagi Anda harus menggunakan .NET 4 dan SL 4 untuk mendapatkan versi 1.0 dari ini. .NET 3.5 dan SL 4 hanya mendukung layanan WCF RIA beta. Ini akan mengurangi a) ukuran unduhan dan b) jumlah kode yang perlu dijalankan pada klien tetapi akan meningkatkan lalu lintas jaringan.

Pada skor itu Anda dapat membagi kode Silverlight Anda menjadi beberapa majelis dan menggunakan sesuatu seperti Prism mengaturnya untuk memuat sesuai permintaan. Ini berarti bahwa pengguna hanya mengunduh bagian-bagian dari aplikasi yang sebenarnya mereka gunakan. Anda selanjutnya dapat mengurangi jumlah yang diunduh dengan memeriksa

"Kurangi ukuran XAP dengan menggunakan caching perpustakaan aplikasi"

pilihan.

Jika Anda memiliki file "extmap" untuk digunakan dengan dll eksternal (pihak ketiga atau .NET) maka ini berarti bahwa mereka dibundel ke dalam file zip dan diunduh secara terpisah untuk dibagikan di semua file xap di proyek Anda. Ini menjaga masing-masing file xap ke ukuran minimum dan memastikan bahwa Anda hanya memiliki satu salinan dll ini di mesin klien.

ChrisF
sumber
1
+1: Terima kasih atas masukan Anda @ChrisF. Saya hanya berharap saya mengenal Anda IRL sehingga saya dapat memilih otak Anda.
Steven Evers
2

Analisis Anda sangat bagus.

Satu-satunya hal lain yang akan saya sebutkan adalah bahwa tidak SEMUA kerangka kerja tersedia untuk Anda dalam aplikasi Silverlight. Pembatasan itu MUNGKIN memiringkan pilihan Anda ke WPF, tetapi Anda harus melihat bagaimana pembatasan itu berlaku atau tidak untuk kebutuhan aplikasi Anda.

Walter
sumber
Aplikasi ini sebagian besar aplikasi kasar, dengan pengecualian dari kebutuhan untuk memanggil telepon SIP melalui exe + args jadi saya tidak berpikir saya akan kehilangan bagian kerangka yang hilang.
Steven Evers
2

Hanya beberapa hal cepat:

Penerapan dan "kode sisi server": Aplikasi Silverlight adalah aplikasi sisi klien, sederhana dan sederhana. Jangan biarkan fakta bahwa itu dikirim melalui browser membingungkan Anda - ketika Anda menjalankan aplikasi SL di-browser, Anda mengunduh rakitan untuk aplikasi itu dalam paket zip, mengekstraknya, dan menjalankannya menggunakan plugin. Silverlight dengan sendirinya tidak memiliki gagasan "kode sisi server" - jika Anda ingin kode dijalankan pada server jarak jauh, tulis layanan WCF.

Memperbarui aplikasi: Ini adalah skenario umum untuk aplikasi OOB dan SL memiliki dukungan bawaan. Google sekitar untuk CheckAndDownloadUpdateAsync.

Sunting: Lupa menyebutkan - menginstal aplikasi dilakukan dari dalam aplikasi. Secara default, aplikasi SL yang dapat diinstal akan memiliki tindakan menu konteks untuk menginstalnya. Namun, penginstalan juga dapat dilakukan secara terprogram sebagai respons terhadap pengguna yang mengklik tombol. Status instal juga dapat dideteksi secara program, jadi yang saya lihat beberapa aplikasi SL yang hanya dimaksudkan untuk menjalankan OOB adalah mendeteksi terlebih dahulu jika mereka diinstal. Jika demikian, jalankan aplikasi. Jika tidak, cukup tampilkan layar splash dengan tombol yang menginstal aplikasi.

nlawalker
sumber