2010-04-27 17 views
7

Formları, daha sonra COM-birlikte çalışma yoluyla VB6 uygulamasından çağırabileceğiniz bir zamanda .NET'e dönüştürmeye başlamak iyi bir fikir olabilir mi?VB6 uygulamasının .NET'e dönüştürülmesi için strateji

Bu sayede, işlemin sonunda VB6 uygulamasının "kabuğu" nı yeni bir .NET uygulamasına dönüştürebilirsiniz ve tüm formlarınız .NET'e girmeye hazırdır.

Daha iyi bir strateji var mı?

+0

VB6'da, herhangi bir karmaşık türü COM üzerinden mi görüntülüyorsunuz? Çünkü bunlar VB6 ve .Net arasında uyumsuz olabilir. Örneğin, VB6'da MSXML kullanırsanız, onu System.Xml ile değiştirmek isteyeceksiniz. Net; Bu yalnızca, COM katmanda MSXML türlerini kullanmazsanız çalışır. ADO için aynı. – Polyfun

+0

Hala koddan geçiyorum, ama tahmin ediyorum ki hayır diyebilirim. VB6'yı VS2005 sihirbazından geçirdim ve .NET'te derlemeyen birkaç bin satır buldu, bu muhtemelen bir seçenek değil. –

cevap

3

.NET'e taşınan bir VB6 uygulamasına sahibiz ve COM-Interop stratejisini kullanıyoruz. Tüm yeni özellikler .NET'te uygulanabilir, sadece GUI-maddeleri VB olarak kalır; Aynı zamanda, bağımsız olarak yeni bir GUI geliştirebiliriz.

+0

Bazı kişiler önce GUI'yi yerleştirmenizi önerir. Neden GUI'yi sonlandırdınız? –

+0

Aslında, buradaki fikir, ilk adımda çok karmaşık uygulamanın yalnızca bazı kısımlarını taşımak ve port programlı mantığıyla bir gümüş ışığı uygulaması oluşturmaktı. VB6 uygulaması bir süre daha kalacaktır, ancak yeni geliştirilen tüm parçalar SL-app tarafından kullanılabilir. – gammelgul

+0

Okunduğum db6 içinde .NET bileşeninin reg-free interop ile kullanılmasında sorunlar olduğunu okudum. Vb6 ve .NET arasındaki Reg-Free Com Interop ile ilgili herhangi bir sorun mu yaşıyorsunuz? –

3

Ben olsaydım, Band-Aid'i koparırdım. Uygulamanız için bir arada durum [.NET Formları ve COM-birlikte çalışma] elde etmede herhangi bir yarar görmüyorum, çünkü bu yalnızca gereksiz karmaşıklığı ekliyor.

+0

Ancak, kullanıcılara taşıma işlemi sırasında mükemmel şekilde çalışması için uygulamaya ihtiyacım var. –

+0

Ne, canlı sistemleri mi geçiriyorsunuz? Koparmak, kazıyıcılar ve hepsi için –

+0

+1. – kenny

1

bir üzerinde sorunlarla doludur VB6 ve .Net kodu için eş zamanlı olarak var, almaya çalışırken girecekleri için ekstra çalışma yaratacak açıklayan parçalı yaklaşım ything ama en basit uygulamalar. Yolun aşağısındaki bir yerde, bir showtopper olabilecek bir gotcha'ya gitme olasılığınız yüksektir.

I (başarıyla .NET için bir 600.000 hat VB6 app göç göre) aşağıdaki yaklaşımı öneriyoruz:

mevcut VB6 kod tabanı kontrollü ve etiketli düzgün sürüm olduğundan emin olun. VB6 kod tabanınız için, tercihen otomatikleştirilmiş, regresyon testleri yazın. Bilinen bir VB6 kod etiket taban çizgisi alın ve tek bir varlık olarak .Net'e taşıyın. Müşterileriniz VB6 sürümünü kullanmaya devam ediyor. Regresyon testlerinizi geçirilen kod üzerinde çalıştırın. Tüm sınamalar geçtiğinde, orijinal VB6 taban çizgisini aldığınızdan beri .Net koduna uygulanan VB6 değişikliklerini uygulayın. UAT'ye sunun ve sonra yaşayın.

+0

+1 deneyimden yazmak için. Her ne kadar ".Net koduna uygulanan herhangi bir VB6 değişikliğine başvuru" nın bazı projelerde zaman alıcı olabileceğini hayal edebiliyorum. – MarkJ

2

Dönüştürme stratejileri konusunda birçok tavsiye var.

  • Burada diğer sorulara göz atın vb6-migration.
  • Farklı dönüştürme stratejileri hakkında Microsoft's page'u kesinlikle öneririm.
  • Ticari geçiş araçlarını özellikle geliştirici süresinin kısaysa göz önünde bulundurun.
0

, uzun süre concurently tane, diğeri ya da her iki veri modellerini kullanarak? Açıkçası bu sorun ve karmaşıklık istiyor. Büyük veri dönüşümleri için en iyi uygulama, tüm veri modelini mümkün olan en kısa süre içinde istenen son duruma getirecek şekilde yapmaktır. Aynı mantık, büyük ölçekli kod dönüşümleri için de geçerlidir. Onları parçalara ayırıp uzun bir süre yapmak, iş gücü maliyetlerini ve teknik riski arttırmak açısından sorun yaratmaktadır.

IMO, daha iyi bir yaklaşım, .NET kodunuz için son durum geliştirme ve mimari standartlarını formüle etmek ve daha sonra sisteminizi bu standartlara uygun bir şekilde yeniden yazmanıza ve doğru bir şekilde mirası koruyabilmenize yardımcı olan bir işleme yatırım yapmaktır. iş kuralları ve işlevsel davranış. Uzun geçişler ve karmaşık hibrit/ara çözümler sadece en iyi iş problemleri ve en kötü ihtimalle proje başarısızlığı için bir dur-boşluktur - kaçınılmalıdır. Daha iyi bir yaklaşım, eski yazılımı dahili olarak tutarlı, bağımsız ve iyi oluşturulmuş parçalarda yeni platforma teslim etmenizi sağlar. Dahası, göçün daha az, daha büyük parçalar halinde teslim edilmesi, çok küçük parçalardan daha verimli ve daha az yıkıcı olacaktır.

bu yaklaşım uygulanabilir hale getirmek için tuşu iteratif, kalibre özelleştirmek olanak tanıyan araçlar .NET için yeni nesil VB6/COM/ASP kullanmak ve manuel çalışma ile dönüşüm otomatik dengeleyen otomatik bir yeniden yazma işlemini doğrulamak etmektir. Great Migrations'dan gelen araçlar, bu metodolojiyi etkinleştirmek için özel olarak tasarlanmıştır. Biz buna "araç destekli yeniden yazma" diyoruz. Bu yaklaşımı, yeniden yapılandırılmış C#/NET için 1.2M LOC of VB6/COM uygulama portföyünü yükseltmek de dahil olmak üzere birçok büyük göç projesinde kullandık.

Yasal Uyarı: Büyük Göçler için çalışıyorum.