ASP.net veya ASP.net MVC'ye klasik ASP


17

Klasik ASP'de geliştirilen bir web uygulamamız var ve 100'den fazla sayfası, büyük veritabanı ve 10000'den fazla aktif kullanıcısı olan mevcut formuna günde en az 10 sayfadan geçen 5 yıllık bir evrim geçirdi.

Şimdi, onu .net'in en son sürümüne yükseltmek istedik. Başlangıçta tüm uygulamayı yeniden yazmayı düşündük, ancak senaryoyu analiz ettikten sonra, birçok uzman tarafından önerilmeyen uygun bir seçenek olmadığını gördük. Henüz nasıl yapılacağına henüz karar vermedik, ancak yüzlerde yeniden yazmanın nasıl gerçekleştirileceği hakkında bazı düşünceler aldık.

Seçenek 1: Bu uygulamadaki ana modülleri tanımlamayı ve uygulamayı veritabanı (mevcut), ardından iş mantığı ve görünüm gibi farklı katmanlara ayırarak tek tek yeniden yazmayı düşündük. Bu şekilde yeni geliştirilen modüller mevcut sisteme eklenecek ve yeni sayfalar o modüldeki eski sayfaların yerini alacak. Aynı zamanda yeni katmanları eski sistemle birlikte test edebilir ve emin olduğumuzda serbest bırakabiliriz. Ayrıca iş mantığı için API türünde bir yapı geliştirmeyi düşündük ve buna harici bir uygulama olarak bakılacak.

Seçenek 2: Şu anda basit bir modül yaptık ve klasik ASP sayfasında bir IFrame aracılığıyla kullandık, ancak klasik ASP ile IFrame'deki yeni sayfa arasında veri göndermek oldukça zordu.

Bu sadece planlama aşamasında kullanıcı tabanını rahatsız etmeden tüm uygulamanın yeniden yazılmasını nasıl başaracağımızla ilgilidir.

Bu tür senaryoda yaklaşmamız gereken diğer programcıların görüş, görüş ve önerilerini almak istiyorum eğer birisi bu tür bir senaryo ile karşılaşmışsa lütfen fikrinizi de paylaşın.

Ayrıca ASP.net MVC kullanarak bu konuda bana yardımcı olacağını bilmek ister misiniz?

GÜNCELLEME : Her iki görüşünüzü verdiğiniz cevaplar için teşekkürler. Uygulamayı klasik asp'den asp.net veya asp.net mvc'e geçirirken yukarıda belirttiğim her iki seçenek hakkında daha fazla girdi almak istiyorum. Asp.net veya asp.net mvc'yi seçmek yerine, göç kısmı hakkındaki görüşleriniz, puanlarınız ve düşünceleriniz aracılığıyla yapabiliyorsanız, benim için çok yardımcı olacaktır.


3
+1 Bu çok iyi bir soru JPReddy. Projelerim üzerinde hiç bu kadar uzun bir zaman geçmedi, bu yüzden probleminizi hayal bile edemiyorum.
Robert Koritnik

Bunun bir "gerçeğin hemen ardından" yorum olduğunun farkındayım, ancak WebForms veya MVC'de hepsi bir arada olmak zorunda değilsiniz - bir MVC projesi WebForms sayfalarını barındırabilir ve bunun tersi de geçerlidir.
MVRS

Yanıtlar:


9

"Acını hissediyorum, brutha" diyerek başlayayım. Bunu 3 yıl önce geçirdim ve keşke MVC bu noktada olgunlaşmış olsaydı, çünkü tasarladığım WebForms çözümü aslında benim için Microsoft kütüphaneleri inşa etmeden MVC modeline çok benziyor (elbette birkaç göze çarpan "Neden cehennem vardı) Bunu "farklılıklar" olarak mı yaptım?

Ayrıca ana uygulama olarak .Net ve köle olarak klasik asp kullanarak içerik farklılıklarını yönetmek için iFrames kullanarak sona erdi. Çerçeve mimarisini .Net'te geliştirdim ve uyguladım. Daha sonra klasik asp sayfaları, gereksiz sunum parçalarından (dahil eder ve içermez) "kaldırıldı" ve iFrames'e yüklendi. Veriler daha sonra özel bir şifreleme kullanılarak URL'den aktarıldı. Kimlik doğrulamasının kolayca taklit edilemediğinden ve sorgu dizesini kırarak sayfaya erişildiğinden emin olmak için, IIS'de klasik asp sayfalarını ayrıştırmadan önce .Net'i kimlik doğrulaması yapmaya zorlayan Wildcard işleyicileri de kullandık.

Bu göz önüne alındığında, tavsiyem hemen MVC'ye gitmek olacaktır.

  1. MVC, global.asax düzeyinde yönlendirmeye erişmenizi sağlar. Bir denetleyicinin akıllıca manipülasyonu ile, modellerinizi uygun bir şekilde geliştirebilir ve tüm klasik asp isteklerini gerektiği gibi işleyen ortak bir denetleyiciye sahip olabilirsiniz.
  2. MVC, bir test projesi eklemeyi çok kolay hale getirecek ve yeni model yapısına dayalı bireysel uygulama parçalarını yeniden düzenlemenize izin verirken, iyi bir şekilde yaptığınızdan emin olmak için yeterli test kapsamı sağlar. Bunun değeri kesinlikle hesaplanamaz çünkü herhangi bir refactor kodu kapsamı büyük bir endişe kaynağıdır.
  3. MVC, sunuma WebForms'tan daha betik bir yaklaşımı izler. WebForms, bir tür durumsal uygulama (ki bu değil) gibi hepsini karıştırmaya çalışır ve bu, klasik asp'ye alışkın insanlar için oldukça büyük bir kültür şoku olabilir. Beni yanlış anlamayın, geliştiricileriniz hangi yöne giderseniz gidin kültür şoku yaşayacaklar, ancak bu şokun bir kısmını sunum katmanından çıkarabilirseniz daha büyük başarılar elde edebilirsiniz.

Hem WebForms'u hem de MVC'yi seviyorum (ancak Razor'un tanıtımıyla birlikte MVC'ye karşı biraz önyargılı olduğumu itiraf edeceğim). Her ikisinin de yerleri var ve açıkladığınız gibi bir uygulamanın, özellikle yeniden düzenlenmiş uygulama parçalarını açarken benimsemeniz gereken "aşamalı" doğa göz önüne alındığında bir MVC uygulaması için ideal olabileceğini düşünüyorum.

Hangi yoldan giderseniz gidin, kimlik doğrulama / yetkilendirme / yönlendirme / vb. Söz konusu olduğunda .Net uygulamasının her zaman ana uygulama olduğundan emin olmanız gerektiğini düşünüyorum. Bir meslektaşım, göçünü ebeveyn olarak klasik asp ile benzer bir uygulamada uyguladı ve sonunda her şeyi tekrar birleştirmeye geldiğinde çok sayıda sorunu vardı.


1
Önerilen MVC için +1. Kesinlikle çok daha kolay bir geçiş olurdu.
Robert Koritnik

@Robert Koritnik: Çok daha kolay bir geçiş olarak nitelendirebileceğimi bilmiyorum. Yönlendirme, bağlama, vb. Etrafında hala birçok öğrenme eğrisi olacak. Özellikle WebForms çözümüm yönlendirme olmadan MVC'ye ve diğer birkaç havalı oyuncaklara çok benzediğinden, alacağım yol bu.
Joel Etherton

2
Yönlendirme, WebForms'daki durumun tam olarak uygulanması ve iç çalışmalarından daha doğal ve anlaşılması daha kolaydır. WebForms çok fazla soyut. Asp.net WebForms, öncelikle masaüstü geliştiricilerinin web uygulamaları yazmaya başlaması için düzgün bir geçiş yapmak üzere geliştirilmiştir. Aynı olay odaklı modele ve sayfanın tam durumuna maruz kaldılar. Öte yandan Asp.net MVC web geliştirici düşünülerek yazılmıştır (Klasik ASP geliştiricileri tam web geliştiricileri). Geçiş yok (tamam .. bir ... test edilebilirlik vardı, ancak uygulama mimarisiyle çok fazla ilgisi yok).
Robert Koritnik

1

ASP.NET MVC'ye geçmek geçişi daha kolay hale getirmeyecek ve aslında zorlaştırabilir. Ancak, zaten bu büyük girişimi geçmeyi seçtiğinizde, neden devam etmek ve planlarınıza en uygun platforma geçmek için zaman ayırmıyorsunuz?

ASP.NET'e (sans MVC) geçiş yapmak, çok fazla egzotik şey yapmamanız şartıyla, çok fazla büyük yeniden düzenleme yapmak zorunda kalmadan genellikle mevcut mantığınızın düz bağlantı noktalarını yapabileceğiniz açısından "daha kolay" olacaktır. klasik ASP. Sonuçlar tatminkar ve uygulamaya zaten aşina olan kişilere nispeten aşina olacaktır. Klasik ASP'den ASP.NET'e taşınan her uygulamanın fayda sağladığı anlamında faydalar elde edersiniz .

ASP.NET MVC'ye geçiş daha fazla iş olacak. Büyük olasılıkla, MVC modeline sığması için uygulama modelinizin yeniden araştırılmasını gerektirecektir . Bu genellikle iyi bir şeydir (tm) çünkü endişelerin ayrılması gibi iyi davranışları teşvik eder. Ortaya çıkan uygulama, büyük olasılıkla çekirdek mantık parçaları dışında mevcut olan hiçbir şeye benzemez. Siz de başka avantajlar elde edersiniz . Bu büyük bir kültür değişimi olacak ve "MVC'nin nasıl yazılacağını" doğru bir şekilde anlamak için geliştirme ekibinin yeniden eğitilmesi gerekecektir.

Unutmayın, Microsoft, ScottGu'ya göre WebForms'u terk etmiyor (bir yıl önce), ancak bu iki teknolojiden birini aşamalı olarak kaldırmaya karar verirlerse / WebForms.


8
MVC bildirisine kesinlikle katılmıyorum. Asp.net MVC web formlarından çok daha iyi bir geçiş yolu olacağını düşünüyorum. İsterseniz Asp.net MVC denetleyici eylemlerine geri göndermek için mevcut sayfaları kullanabilirsiniz. Ve model güçlü türlere de bağlanır (otomatik olarak sunucu doğrulaması kazanır). Bu tür şeyler WebForms kullanarak imkansız olandan ikinci olur. İyi bir şey, eğer klasik ASP'de ustalaşmışlarsa, MVC'ye WebForms'tan daha fazla adım atmak çok daha kolay olacaktır. MVC, HTTP protokolüne eski ASP'nin olduğu gibi uygundur, diğer yandan Web formları değildir. Bir şey değil.
Robert Koritnik

1

ASP.NET MVC'nin gitmenin yolu olduğuna tamamen katılıyorum. Kolay olmayacak, kolay olmayacak, ancak kesinlikle WebForms'tan çok daha fazla kanıt. WebForms kesinlikle terk edilmemiş olsa da, bunları kullanan uygulamalar, uygulamalar büyüdükçe büyürler.

"Büyük" uygulamalarda WebForms'un kullanılmasını kesinlikle önermiyorum.


Hey Andrea. Programcılara Hoşgeldiniz! Stack Exchange'de her yazı varsayılan olarak adınızı ve diğer bazı bilgileri içerir, bu nedenle imza eklemenize gerek yoktur. Daha fazla kullanım ipucu ve bilgi için SSS bölümünü inceleyin.
Adam Lear

Merhaba Anna, otomatik olarak yapıyorum, sanki mesajın sonuna her zaman ismimi yazıyorum. Alışmak biraz zaman alacak.
Andrea Raimondi

1

IFrames yaklaşımında olduğu gibi iki uygulamayı da çok fazla eşleştirmek zorunda kalmadan uygulamayı kademeli olarak geliştirmenize izin verdiği için Seçenek 1'i (MVC ile) Seçenek 2'den çok daha iyi) seviyorum.

Eski bir uygulamayı ASP.Net'e geçirme konusunda bazı deneyimler yaşadım ve zorluklardan biri, iki uygulama arasında oturum durumu gibi bazı kaynakları paylaşmaktı. Bu, bir uygulamanın, kullanıcının tarayıcısından çerez bilgileri aracılığıyla sunucu tarafında diğerini aramasını sağlayarak çözülebilir. Uygulamalar arasında diğer bilgi paylaşımı da elbette MVC ile doğal bir yaklaşım olan URL yönlendirme ve sorgu dizeleri aracılığıyla yapılabilir.

Ayrıca, önce taşınacak uygun modülleri tanımlamak zor olabilir, ancak garajda daha fazla şeyin taşınmasını önlemek için MVC üzerinde geliştirilen tüm yeni işlevlerle başlayabilirsiniz. Daha sonra, MVC uygulaması daha sonra önereceğiniz gibi beklenen sonuçları oluşturmak için eski sisteminizi kullanarak yeniden düzenleme veya hata düzeltmelerinin önemli bir birikimine sahip bölümleri seçin. Bu yeniden düzenleme sırasında birim testleri ve otomatik kabul testleri (örn. SpecFlow / Watin) ekleyerek MVC'nin test edilebilirliğinden de yararlanmayı unutmayın. İkinci tür testlerin bir avantajı, eski sistemden geçtiklerini doğrulayabilmeniz ve daha sonra bu ve gelecekteki yeniden düzenlemeler için yeni kodunuza aynı testleri uygulayabilmenizdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.