Kami memiliki aplikasi web yang dikembangkan dalam ASP klasik dan berevolusi lebih dari 5 tahun ke bentuk saat ini yang memiliki 100-an halaman, basis data besar, dan lebih dari 10.000 pengguna aktif melalui setidaknya lebih dari 10 halaman setiap hari.
Sekarang, kami ingin memutakhirkannya ke versi terbaru .net. Awalnya kami berpikir untuk menulis ulang seluruh aplikasi, tetapi setelah menganalisis skenario kami menemukan bahwa itu bukan pilihan yang layak juga tidak disarankan oleh banyak ahli. Kami belum memutuskan bagaimana melakukannya di luar, tetapi ada beberapa pemikiran tentang bagaimana mencapai penulisan ulang di wajah.
Opsi 1: Kami berpikir untuk mengidentifikasi modul utama dalam aplikasi ini dan menulis ulang satu per satu dengan memisahkan aplikasi menjadi beberapa lapisan seperti basis data (ada), kemudian logika bisnis dan tampilan. Dengan cara ini, modul yang baru dikembangkan akan ditambahkan ke sistem yang ada dan halaman baru akan menggantikan halaman lama dalam modul tertentu. Pada saat yang sama kita dapat menguji layer baru di samping sistem lama dan melepaskannya begitu kita merasa percaya diri. Kami juga berpikir untuk mengembangkan semacam struktur API untuk logika bisnis dan ini akan diakses oleh tampilan sebagai aplikasi eksternal.
Opsi 2: Saat ini kami telah melakukan modul sederhana dan menggunakannya di halaman ASP klasik melalui IFrame, meskipun itu cukup merepotkan pengiriman data antara ASP klasik dan halaman baru di IFrame.
Ini hanya dalam tahap perencanaan tentang bagaimana kita harus mencapai penulisan ulang seluruh aplikasi tanpa mengganggu basis pengguna.
Saya ingin mendapatkan pandangan, pendapat, dan saran programmer lain tentang haruskah kita melakukan pendekatan dalam skenario seperti itu? jika ada yang menghadapi skenario seperti ini, silakan sampaikan pendapat Anda juga.
Juga ingin tahu penggunaan ASP.net MVC akan membantu saya dalam hal ini?
UPDATE : Terima kasih atas kedua jawaban untuk memasang pandangan Anda. Ingin mendapatkan lebih banyak input pada kedua opsi yang saya tentukan di atas dalam memigrasi aplikasi dari asp klasik ke asp.net atau asp.net mvc. Akan sangat membantu bagi saya, jika Anda semua bisa melalui pandangan, poin dan pemikiran Anda pada bagian migrasi daripada titik memilih asp.net atau asp.net mvc.
sumber
Jawaban:
Biarkan saya memulai dengan mengatakan, "Saya merasakan sakit Anda, brutha." Saya telah melalui ini 3 tahun yang lalu, dan saya berharap MVC telah matang pada saat itu karena solusi WebForms yang saya rancang cukup mirip dengan model MVC tanpa benar-benar memiliki perpustakaan Microsoft yang dibangun untuk saya (tentu saja, ada beberapa yang mencolok "Kenapa sih apakah saya melakukan itu "perbedaan).
Saya juga akhirnya menggunakan iFrames untuk mengelola perbedaan konten menggunakan .Net sebagai aplikasi induk dan asp klasik sebagai slave. Saya mengembangkan kerangka arsitektur di. Net dan mengimplementasikannya. Halaman asp klasik kemudian "diambil" dari bagian presentasi yang tidak perlu (termasuk dan yang lainnya) dan dimuat ke iFrames. Data kemudian diteruskan melalui url menggunakan enkripsi khusus. Untuk memastikan bahwa otentikasi tidak dapat dipalsukan dengan mudah dan halaman diakses dengan memecahkan string kueri kami juga menggunakan penangan Wildcard di IIS yang memaksa .Net untuk mengotentikasi sebelum mem-parsing halaman asp klasik.
Mengingat itu, rekomendasi saya akan langsung menuju ke MVC.
Saya suka WebForms dan MVC (meskipun saya akui dengan diperkenalkannya Razor, saya menjadi sedikit bias terhadap MVC). Mereka berdua memiliki tempat masing-masing, dan saya pikir aplikasi seperti yang Anda gambarkan mungkin cocok untuk implementasi MVC terutama mengingat sifat "terhuyung-huyung" yang harus Anda adopsi dalam meluncurkan potongan aplikasi yang telah di-refactored.
Ke mana pun Anda pergi, saya pikir Anda perlu memastikan bahwa aplikasi .Net selalu menjadi aplikasi induk ketika datang ke otentikasi / otorisasi / perutean / dll. Seorang kolega saya menerapkan migrasi pada aplikasi serupa dengan asp klasik sebagai orangtua, dan ia memiliki banyak masalah ketika akhirnya mengintegrasikan semuanya kembali bersama.
sumber
Memilih ASP.NET MVC tidak akan membuat transisi lebih mudah, dan mungkin malah membuatnya lebih sulit. Namun, ketika Anda sudah memilih untuk menjalani usaha besar ini, mengapa tidak meluangkan waktu untuk maju dan pindah ke platform yang paling sesuai dengan rencana Anda?
Bermigrasi ke ASP.NET (sans MVC) akan menjadi "lebih mudah" dalam arti bahwa Anda umumnya dapat melakukan port langsung dari logika Anda yang ada tanpa harus melakukan banyak grand refactoring, asalkan Anda tidak melakukan banyak hal eksotis dengan ASP klasik. Hasilnya akan memuaskan dan relatif akrab bagi orang-orang yang sudah terbiasa dengan aplikasi tersebut. Anda akan mencapai manfaat dalam arti bahwa setiap aplikasi porting dari ASP klasik ke ASP.NET menerima manfaat .
Bermigrasi ke ASP.NET MVC akan menjadi lebih banyak pekerjaan. Kemungkinan akan membutuhkan pengerjaan ulang model aplikasi Anda agar sesuai dengan pola MVC . Ini umumnya Good Thing (tm) karena mendorong perilaku yang baik seperti pemisahan kekhawatiran. Aplikasi yang dihasilkan kemungkinan tidak akan menyerupai apa pun yang Anda miliki kecuali untuk potongan-potongan logika inti. Anda akan mendapatkan keuntungan lain juga . Ini akan menjadi perubahan budaya yang besar dan akan membutuhkan (kembali) pendidikan dari tim pengembangan untuk memahami "bagaimana menulis MVC" dengan benar.
Dari catatan, Microsoft tidak meninggalkan WebForms menurut ScottGu (per tahun yang lalu), tetapi saya tidak berpikir itu sulit untuk membuat panggilan bahwa jika / ketika mereka memutuskan untuk fase satu dari dua teknologi ini keluar, itu akan menjadi WebForms.
sumber
Saya sepenuhnya setuju bahwa ASP.NET MVC adalah cara untuk pergi. Ini tidak akan mudah, itu tidak akan lebih mudah, tetapi tentu saja itu jauh lebih banyak bukti di masa depan daripada WebForms. Sementara WebForms tentu saja tidak ditinggalkan, aplikasi yang menggunakan mereka menjadi semakin rumit untuk dipertahankan saat aplikasi tumbuh lebih besar dan lebih besar.
Saya sangat tidak menyarankan penggunaan WebForms pada aplikasi "besar".
sumber
Saya suka Opsi 1) (dengan MVC) jauh lebih baik daripada Opsi 2) karena memungkinkan Anda untuk mengembangkan aplikasi secara bertahap, sementara tidak harus menyandingkan dua aplikasi terlalu banyak seperti yang Anda lakukan dengan pendekatan iFrames.
Saya memiliki pengalaman dengan memigrasikan aplikasi lama ke ASP.Net dan salah satu tantangannya adalah berbagi beberapa sumber daya seperti status sesi di antara kedua aplikasi. Itu dapat diselesaikan dengan meminta satu aplikasi memanggil yang lain di sisi server melalui informasi cookie dari browser pengguna. Berbagi informasi lainnya antar aplikasi tentu saja juga dapat dilakukan melalui perutean URL dan string kueri yang merupakan pendekatan alami dengan MVC.
Juga, mengidentifikasi modul yang tepat untuk dimigrasi terlebih dahulu bisa menjadi tantangan, tetapi Anda bisa mulai dengan semua fungsionalitas baru yang dikembangkan di MVC untuk mencegah lebih banyak hal berakhir di garasi untuk dimigrasi. Kemudian mungkin pilih bagian yang memiliki tumpukan pekerjaan ulang atau perbaikan bug yang signifikan untuk dilakukan selanjutnya karena aplikasi MVC kemudian akan menjadi bentuk refactoring, menggunakan sistem lama Anda untuk menetapkan hasil yang diharapkan seperti yang Anda sarankan. Jangan lupa juga untuk memanfaatkan testabilitas MVC dengan menambahkan tes unit dan tes penerimaan otomatis (misalnya SpecFlow / Watin) selama refactoring ini. Satu keuntungan dari jenis tes yang terakhir adalah bahwa Anda dapat memverifikasi bahwa tes-tes tersebut lulus pada sistem lama dan kemudian menerapkan tes yang sama ke kode baru Anda untuk ini dan refactoring di masa mendatang.
sumber