Bagaimana merancang aplikasi desktop perusahaan untuk Windows 8

15

Saya pikir saya memiliki pemahaman tentang harapan pengembangan aplikasi konsumen untuk Windows 8. Buat UI berbasis Metro baru di atas WinRT, sebarkan ke pelanggan Anda melalui Marketplace, dan semua orang menang. Tampak cukup sederhana. Sayangnya, saya tidak dalam bisnis itu.

Saya bekerja pada aplikasi internal, lini bisnis untuk perusahaan besar. Kami saat ini menggunakan teknologi .NET seperti WPF dan Silverlight untuk membuat UI kaya yang dapat dengan mudah digunakan untuk pengguna kami melalui web atau ClickOnce. Aplikasi dapat mendukung WinXP dan Win7 tanpa terlalu banyak sakit kepala, dan pengembang kami dapat menggunakan XAML yang merupakan teknologi UI yang sangat solid.

Sepertinya WPF dan Silverlight memiliki masa depan yang dipertanyakan pada saat ini, jadi agak mengkhawatirkan untuk terus berinvestasi pada mereka. Tetapi Metro UI tampaknya tidak sesuai untuk aplikasi perusahaan, dan API WinRT cukup membatasi sehubungan dengan hal-hal "khas" yang harus dilakukan aplikasi perusahaan.

Bagaimana saya harus merancang aplikasi berbasis XAML saya, yang saat ini sedang digunakan untuk WinXP dan Win7, sehingga aplikasi tersebut dapat didukung dan dikembangkan pada Win8?

Asumsikan untuk keperluan pertanyaan ini bahwa fitur yang disediakan oleh HTML5 di atas ASP.NET tidak memadai untuk aplikasi yang ingin saya buat. Saya mengerti bahwa saya dapat menggunakan HTML5 untuk beberapa aplikasi, tetapi saya mencoba mencari tahu apa yang harus saya lakukan ketika itu tidak cukup.

Sunting # 1: Ini sebagai tanggapan terhadap komentar @Emmad Kareem. Saya setuju bahwa Silverlight / WPF layak dalam jangka pendek (2-5 tahun). Namun, aplikasi yang kami hasilkan memiliki masa hidup yang berpotensi sangat lama (10-20 + tahun). Jadi kemampuan bertahan dalam jangka panjang untuk teknologi tertentu menjadi perhatian kami. Juga, kami memiliki kekhawatiran bahwa akan semakin sulit untuk menemukan pengembang yang tertarik pada pengembangan Silverlight / WPF jika teknologi tersebut dianggap "mati" oleh masyarakat. Saya hanya ingin memahami pilihan saya dan membuat keputusan dengan mata terbuka.

RasionalGeek
sumber
Harus lari ke rapat tapi saya punya jawaban untuk Anda :)
Michael Brown
2
Mengapa Anda mengubah WPF / Silverlight yang sudah Anda kenal? Pernyataan Anda "WPF dan Silverlight memiliki masa depan yang dipertanyakan", yah, Microsoft tidak akan menjatuhkan teknologi ini pada malam hari. Apakah itu akan terus tumbuh bukan masalah nyata jika Anda memiliki cukup fungsionalitas dengannya hari ini. Singkatnya, Anda harus memiliki alasan teknis yang kuat untuk mempertimbangkan arsitektur yang sama sekali baru. Beberapa ketakutan di luar sana adalah dari orang-orang kehilangan pengalaman mereka ke teknologi lain. Saya tidak bisa menyalahkan mereka.
NoChance
3
Anda ingin tumpukan teknologi tunggal bertahan 10+ tahun? Mengapa tidak fokus pada arsitektur dan prinsip desain yang baik untuk membiarkan sistem Anda berkembang seiring waktu untuk menggunakan teknologi yang sesuai? Lihatlah Visual Studio - sudah ada sejak 1995 dan telah berkembang seiring waktu. Sebagai contoh, Visual Studio 2010 menambahkan refresh UI utama yang mencakup penggunaan WPF dan perubahan arsitektur lainnya untuk menambah poin ekstensibilitas. Anda tidak bisa mengendalikan teknologi atau paradigma apa yang akan menjadi besar tahun depan, apalagi dalam jangka waktu yang Anda lihat.
Thomas Owens
5
Apa yang membuat Anda berpikir Anda akan menjalankan Windows dalam 20 tahun?
JonnyBoats
1
@JonnyBoats: Karena kami menjalankannya 20 tahun yang lalu ? Atau karena pesaing utama mereka didasarkan pada sistem yang bahkan lebih tua ? Tidak ada cara untuk memprediksi kejatuhan atau kelangsungan hidup teknologi tertentu.
Matthieu

Jawaban:

15

Bagaimana Saya Belajar untuk Berhenti Khawatir dan Menyukai MS-Stack

Anda masih dapat menjalankan aplikasi VB6 di windows 8 . Kompatibilitas retro baik atau buruk selalu menjadi tren dalam ekosistem MS. Anda tidak perlu khawatir tentang kelangsungan hidup teknologi seperti WPF / Silveright, dan bahkan winforms dalam hal ini.

Di sisi lain, Anda harus menerima bahwa untuk proyek jangka panjang, Anda tidak akan pernah memiliki teknologi terbaru yang paling keren.

Sebenarnya pertanyaan yang harus Anda tanyakan pada diri sendiri tentang pilihan teknologi adalah:

  • Apakah tim saya cukup nyaman dengan teknologi itu untuk menjadi produktif?
  • Apakah tim saya senang menggunakan teknologi itu?
  • Bisakah saya merekrut orang untuk teknologi itu?

Itulah kombinasi dari jawaban untuk pertanyaan ini yang seharusnya mengarahkan pilihan Anda, dan bukan tren yang dipalsukan terutama karena alasan pemasaran.

Untuk informasi lebih lanjut tentang tematik teknologi yang terus berubah ini, Anda harus membaca "Fire And Motion" Oleh Joel Spolsky :

Perusahaan yang tersandung adalah orang-orang yang menghabiskan terlalu banyak waktu membaca daun teh untuk mengetahui arah masa depan Microsoft. Orang-orang khawatir tentang .NET dan memutuskan untuk menulis ulang seluruh arsitektur mereka untuk .NET karena mereka pikir mereka harus melakukannya. Microsoft menembaki Anda, dan itu hanya menutupi sehingga mereka dapat bergerak maju dan Anda tidak bisa, karena ini adalah cara permainan dimainkan, Bubby. Apakah Anda akan mendukung Hailstorm? SABUN MANDI? RDF? Apakah Anda mendukungnya karena pelanggan Anda membutuhkannya, atau karena seseorang menembaki Anda dan Anda merasa harus merespons? Tim penjualan dari perusahaan besar memahami api unggun.

Dan itu ditulis hampir sepuluh tahun yang lalu.

Arsitektur dan Teknologi

Arsitektur dan Teknologi adalah dua hal dan pilihan yang terpisah untuk dilakukan:

Anda dapat menggunakan layanan, sumber daya, kontrol pihak ketiga, ORM, dll. Dengan semua teknologi ini, dan mungkin, atau mungkin tidak, dengan yang berikutnya.

Anda dapat memutar dan menekuk MVC dalam banyak cara dengan semua teknologi itu: Mengikat atau tidak? kode di belakang tampilan atau tidak? Kontroler atau tidak? ViewModel setiap saat atau hanya saat dibutuhkan? Ada begitu banyak cara untuk menerapkan pola desain, bahkan dalam lingkup satu teknologi tertentu.

Itu tidak realistis untuk memaksa Anda menjadi salah satu dari mereka tanpa pengetahuan lanjutan tentang proyek dan tim Anda. Itu hanya akan didasarkan pada preferensi pribadi, dan akan berakhir pada pertikaian "teknologi saya lebih baik dari Anda".

Satu-satunya hal yang dapat disarankan secara jujur ​​dan obyektif adalah menggunakan praktik terbaik yang dapat Anda terapkan untuk membuat arsitektur yang akan bertahan dalam ujian waktu, dan mungkin, benar-benar mungkin akan portabel atau digunakan kembali setidaknya di bagian-bagian dengan teknologi yang tidak diketahui di masa depan. . Dan upgrade / portabilitas seharusnya tidak menjadi tujuan utama arsitektur Anda.

Tujuan utama arsitektur Anda dan teknologi yang dipilih adalah untuk memberikan produk kepada atasan / pelanggan Anda yang memenuhi persyaratan realistisnya.

MVC (dan itu adalah adiknya MVVM) terbukti semakin menjadi dasar untuk arsitektur yang kuat sejak 1979 di arena bahasa OOP dan seterusnya. Tetapi memilih teknologi spesifik apa yang harus digunakan dalam proyek 10 tahun harus tetap menjadi keputusan Anda.

Matthieu
sumber
Saya setuju sepenuhnya dengan jawaban ini. Anda tidak akan pernah tahu pasti. Tetapi ada beberapa teknologi yang bisa memuaskan pertanyaan yang Anda paparkan, dan saya masih harus memilih di antara mereka.
RationalGeek
@jkohlhepp: menambahkan paragraf tentang arsitektur dan teknologi. Saya berpendapat bahwa mustahil untuk secara objektif merekomendasikan satu teknologi di atas yang lain atau satu arsitektur di atas yang lain.
Matthieu
Pendirian Anda adalah tidak ada dasar objektif untuk membandingkan arsitektur / teknologi? Bukankah itu seluruh tujuan disiplin arsitektur? Saya setuju bahwa ini semua tentang persyaratan bos saya. Salah satu persyaratan tersebut adalah umur panjang maksimum untuk biaya termurah, maka pertanyaan ini.
RationalGeek
@ jkohlhepp: disiplin arsitektur perangkat lunak IMHO seperti obat. Anda mendapatkan pengalaman dalam menemukan perawatan yang tepat untuk penyakit tertentu. Ada beberapa cara untuk melakukannya kadang-kadang, dan mungkin berbahaya untuk mencoba menyembuhkan semua orang dengan cara yang sama dengan perlakuan yang sama. Jika Anda memiliki tim pemrogram berpengalaman yang efektif di WPF dan Silverlight, tetaplah menggunakannya, dan pertahankan arsitektur yang ada. Jika Anda harus mengubahnya, jangan mengubahnya hanya karena ada cara baru untuk melakukan sesuatu, yang sudah Anda lakukan secara efisien, dipasarkan oleh Microsoft.
Matthieu
Saya bisa bergabung dengan Matthieu itu. Terima kasih atas tanggapan yang bijaksana.
RationalGeek
1

Satu hal yang akan saya bahas dalam buku saya tentang MVVM adalah bagaimana memanfaatkan pola untuk membuat aplikasi inti yang dapat digunakan kembali. Anda harus membuat UI asli untuk berbagai platform yang Anda targetkan (baik itu web, silverlight, telepon, WPF, atau WinRT). Tetapi untuk sebagian besar, Anda dapat merangkum logika mengemudi UI di belakang ViewModel.

Setiap layanan yang Anda akses harus dibungkus dengan antarmuka (pola Fasad) yang lebih atau kurang portabel antar platform. Antarmuka harus memetakan ke API klien Anda di bagian depan dan menerjemahkan ke API layanan yang dibungkus di bagian belakang.

Strategi ini membantu Anda membuat kerangka inti yang solid yang hanya membutuhkan UI baru untuk dilapis di atasnya. Anggap saja sebagai Model Tampilan Anda sebagai otot, layanan Anda membuat kerangka (dan organ). WPF / Silverlight / WinRT membentuk kulit.

Bahkan, satu hal yang saya tunjukkan sangat awal dalam buku saya adalah bahwa MVVM tidak seperti yang baru. Dolphin Smalltalk memiliki pola yang sama yang mereka sebut MMVC (dua M adalah Model Aplikasi dan Model Domain). ViewModel yang kami gunakan saat ini hanyalah kombinasi dari Model Aplikasi dan Pengontrol dari MMVC. Bahkan banyak pengembang menemukan bahwa kadang-kadang memisahkan ViewModel menjadi dua komponen itu masuk akal (controller digunakan untuk navigasi dan mengatur beberapa VM sehingga VM dapat tetap tidak menyadari komponen lainnya).

Michael Brown
sumber
Saya sepenuhnya setuju tentang meletakkan berbagai aplikasi. Dan saya juga sepenuhnya setuju bahwa Anda harus membuat UI Anda sebodoh mungkin karena teknologi UI cenderung sedikit berubah. Tapi, bahkan setelah membuat lapisan-lapisan itu, Anda masih memiliki tebakan untuk membuat teknologi mana yang lebih baik / lebih murah dalam jangka panjang.
RationalGeek
Jika saya harus menebak ... sementara HTML5 adalah kemarahan baru hari ini, Microsoft akan terus mendukung XAML karena mereka mengendalikannya. Mereka belajar pelajaran dari Jawa (mereka awalnya berencana menggunakan Java sebagai bahasa .NET utama ketika Sun pergi ke pengadilan tentang mereka) dukungan HTML untuk mencapai. Membangun aplikasi Anda pada prinsip-prinsip yang kuat (UI Deklaratif yang didukung oleh model objek portabel yang kaya) akan membantu Anda mengatasi badai. Saya bahkan punya contoh melakukan MVVM dalam Javascript (lihat knockout js).
Michael Brown
0

Anda mengatakan XAML solid tetapi kemudian mengatakan WPF memiliki masa depan yang dipertanyakan. Kecuali saya kehilangan sesuatu, WPF menggunakan XAML dan saya tidak melihat keduanya terpisah. Apakah ada beberapa berita yang saya lewatkan tentang WPF mungkin menggunakan beberapa teknologi basis lain, atau tentang Microsoft bahkan mungkin mempertimbangkan membangun cara baru lain untuk membangun UI? Di luar itu, saya ragu WPF akan kemana-mana, tetapi itu bukan pertama kalinya MS telah mengirimkan banyak sekali kode kapal kami ...

Jika Anda memerlukan aplikasi UI yang kaya dan HTML5 tidak akan memotongnya, dan Anda org berkomitmen untuk windows OS, saya pikir WPF adalah pilihan terbaik karena ini adalah yang terbaru / terhebat saat ini, tentu di atas winforms ...

ikan kecil
sumber
Arah yang saya dengar dari MS mengisyaratkan bahwa WPF tidak memiliki banyak masa depan jangka panjang. Tetapi mereka belum mengumumkan apa pun. Saya berharap mereka akan memasukkannya ke "mode pemeliharaan" seperti yang mereka lakukan dengan LINQ To SQL.
RationalGeek
WPF didepresiasi di Windows 8 (karena Anda tiba-tiba dibuang kembali ke "mode desktop" dan keluar dari pengalaman Metro yang mendalam). Namun, Anda dapat membangun aplikasi Metro dengan XAML. Mereka adalah teknologi yang sepenuhnya terpisah.
Domenic
Eh, tidak ada yang tidak usang karena desktop masih merupakan bagian penting dari pengalaman. Adapun "teknologi yang benar-benar terpisah" - benarkah? Tentunya jauh lebih dekat dengan variasi pada tema seperti yang sudah terjadi dengan WPF vs Silverlight (sebagai lawan dari, katakanlah, penggunaan XAML untuk alur kerja ...)
Murph
0

Menurut saya ini adalah Anda tidak boleh terlalu fokus pada detail implementasi aplikasi Anda. Jika Anda melihat gambar yang lebih besar, Anda dapat mengisolasi ketergantungan teknologi Anda. Dengan mengisolasi ketergantungan pada misalnya xaml / wpf / silverlight Anda memastikan bahwa Anda dapat mengganti komponen ui / teknologi dengan teknologi generasi berikutnya dan karenanya menjamin kelangsungan bahkan dalam waktu 20 tahun. Ini juga akan membantu memisahkan komponen sistem Anda dan mengalahkan dampak harus melakukan penggantian seperti itu. (Dalam hal ini saya membuat asumsi bahwa untuk memberikan kontinuitas tidak apa-apa untuk mengotak-atik solusi agar dapat berjalan pada platform generasi berikutnya)

Cara lain untuk menyediakan isolasi dari ketergantungan teknologi ini adalah memungkinkan virtualisasi. Jika Anda membuat aplikasi Anda sedemikian rupa sehingga Anda dapat menjalankannya dalam vm, Anda akan dapat melakukannya dalam waktu 20 tahun!

Carlo Kuip
sumber
Dari pengertian tertentu saya bisa memahami perspektif ini. Namun, saya tidak perlu memilih teknologi UI di beberapa titik, dan tergantung pada pilihan yang akan memerlukan penggantian / memperbarui cepat atau lambat. Saya ingin membuat pilihan yang menghasilkan umur panjang maksimum.
RationalGeek
Menurut situs siklus hidup Silverlight5 akan didukung hingga Oktober 2021 support.microsoft.com/lifecycle/?p1=16278 Jadi apa pun yang terjadi pada peta jalan, itu masih merupakan pilihan yang solid.
Carlo Kuip