ASP Klasik ke ASP.net atau ASP.net MVC

17

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.

JPReddy
sumber
3
+1 Ini adalah pertanyaan yang sangat bagus JPReddy. Saya tidak pernah mengalami selang waktu yang lama pada proyek saya, jadi saya bahkan tidak bisa membayangkan membayangkan masalah Anda.
Robert Koritnik
Saya menyadari ini adalah komentar "setelah fakta", tetapi Anda tidak perlu harus pergi semua pada WebForms atau MVC - proyek MVC dapat meng-host halaman WebForms, dan sebaliknya. Saya melakukan ini di aplikasi MVC untuk mendapatkan dukungan untuk SSR & kontrol ReportViewer ...
Tieson T.

Jawaban:

9

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.

  1. MVC akan memberi Anda akses ke perutean di tingkat global.asax. Dengan manipulasi yang cerdas dari suatu pengontrol, Anda dapat mengembangkan model-model Anda dengan cara yang tepat dan memiliki pengontrol umum yang menangani semua permintaan asp klasik yang diperlukan.
  2. MVC akan membuatnya sangat sederhana untuk menambahkan proyek uji dan memungkinkan Anda untuk mereformasi masing-masing aplikasi berdasarkan struktur model baru sambil memberikan cakupan uji yang memadai untuk memastikan Anda mendapatkan semuanya dengan baik. Nilai ini benar-benar tak terhitung karena dalam setiap cakupan kode refactor adalah masalah besar.
  3. MVC mengikuti pendekatan yang lebih scripted untuk presentasi daripada WebForms. WebForms mencoba untuk menggabungkan semuanya seolah-olah itu semacam aplikasi stateful (yang tidak), dan itu bisa menjadi kejutan budaya bagi orang-orang yang terbiasa dengan asp klasik. Jangan salah paham, pengembang Anda akan mengalami kejutan budaya tidak peduli ke arah mana Anda pergi, tetapi jika Anda dapat menghilangkan kejutan itu dari lapisan presentasi, Anda mungkin akan menemukan kesuksesan yang lebih besar.

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.

Joel Etherton
sumber
1
+1 untuk merekomendasikan MVC. Ini pasti akan menjadi transisi yang jauh lebih mudah.
Robert Koritnik
@ Robert Koritnik: Saya tidak tahu bahwa saya dapat memenuhi syarat sebagai transisi yang jauh lebih mudah. Masih akan ada banyak kurva belajar di seputar rute, penjilidan, dll. Ini adalah jalur yang akan saya ambil, terutama karena solusi WebForms saya sangat mirip dengan MVC tanpa routing dan beberapa mainan keren lainnya.
Joel Etherton
2
Routing lebih alami dan lebih mudah dipahami daripada implementasi state-full-ness dan inner work di WebForms. WebForms abstrak terlalu jauh. WebForms Asp.net dikembangkan untuk membuat transisi yang lancar terutama pengembang desktop untuk mulai menulis aplikasi web. Mereka terpapar pada model yang didorong oleh peristiwa yang sama dan keadaan penuh halaman. Asp.net MVC di sisi lain ditulis dengan pengembang web dalam pikiran (Classic ASP devs adalah web devs penuh). Tidak ada transisi (ok .. ada satu ... testabilitas, tetapi tidak ada hubungannya dengan arsitektur aplikasi).
Robert Koritnik
1

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.

Daniel DiPaolo
sumber
8
Saya akan sangat tidak setuju pada pernyataan MVC. Saya pikir Asp.net MVC akan menjadi jalur transtion yang jauh lebih baik daripada formulir web. Heck Anda dapat menggunakan halaman yang ada untuk mengirim kembali ke tindakan pengontrol MVC Asp.net jika Anda mau. Dan model mengikat tipe yang kuat juga (mendapatkan validasi server secara otomatis). Hal semacam ini akan menjadi tidak mungkin menggunakan WebForms. Hal yang baik adalah jika mereka berpengalaman dalam ASP Klasik akan jauh lebih mudah untuk naik ke MVC daripada WebForms. MVC cocok untuk protokol HTTP seperti halnya ASP lama, sedangkan Webforms tidak. Tidak semuanya.
Robert Koritnik
1

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".

Andrea Raimondi
sumber
Hai, Andrea. Selamat Datang di Programmer! Di sini, di Stack Exchange setiap posting menyertakan nama Anda dan beberapa informasi lainnya secara default, jadi tidak perlu menambahkan tanda tangan. Lihatlah FAQ untuk kiat penggunaan dan informasi lebih lanjut.
Adam Lear
Hai Anna, saya melakukannya secara otomatis, seperti, wah saya selalu mengetikkan nama saya di akhir pesan. Ini akan membutuhkan waktu untuk terbiasa.
Andrea Raimondi
1

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.

Penjaga penjara
sumber