Hibrid VB6 / .Net uygulamaları Gerçek Dünyada nasıl çalışıyor?


11

Bir VB6 uygulaması sürdürüyorum ve .Net'e nasıl geçileceğini araştırıyoruz. COM görünür. Net sınıflarında yeni özellikler uygulayarak ve mevcut işlevleri yavaşça geçirerek bunu yavaş yavaş yapmayı düşünüyoruz. Bunu nasıl yapacağınız hakkında bazı öğretici 'Merhaba Dünya' örnekleri buldum ve bizim App ile iyi çalışıyor. Peki bu hibrit uygulamaların gerçek dünyadaki davranışları nasıldır? İstikrarlı, bakımı yapılabilir mi? Programımızın özellikle aynı bilgisayarda daha fazla kullanıcının kullanıcı hesaplarını değiştirerek kullanmasıdır.

DÜZENLEME: VB6 uygulaması bir USB bağlantısından veri okur ve bunu Access veritabanında depolar. Kullanıcı veriler üzerinde çeşitli görünümler çağırabilir. Veriler bir donanım aygıtında önbelleğe alınır, bu nedenle okumadaki kesintiler ölümcül değildir.

4 Ekim 2015 DÜZENLE: Takip zamanı: Halen mevcut VB6 kodunu adım adım .Net olarak değiştirme sürecindeyiz. Önce veri erişim rutinlerini aldık, sonra iş mantığı ve şu anda bir form birbiri ardına WPF'ye dönüştürüldü. Gerçekten de dönüştürdüğümüz her kod parçasını (VB.Net'te) yeniden yazdık, ancak bunu yavaşça ve aynı zamanda işlevselliği geliştirebiliriz. Hibrit uygulama Windows 8, 8.1 ve 10'a geçişten sağ çıktı.

9 Mart 2018 DÜZENLEME: Tamamen dönüştürülmüş kodu önümüzdeki ay yayınlayacağız. Hibrit uygulama en az bir yıl daha desteklenecektir. Yüksek çözünürlüklü ekranlarda temel olarak sorunlar gösteriyor, ancak aksi halde iyi çalışıyor. Dürüst olmak gerekirse, VB6 kod tabanı ile uyumluluk sorunlarından daha fazla .Net Framework yüklemeleri ve bağımlılıkların bozuk yüklemeleri (aralarında SQL Server LocalDb) nedeniyle daha fazla destek baş ağrımız var ...


1
'Eski' uygulama ne işe yarar? bazı ayrıntılar sorunuzun yanıtlanmasında yardımcı olacaktır.
Darknight

"PCI bağlantıları" nızdan daha fazla "USB bağlantısı" yoktur. Büyük olasılıkla bir USB veriyoluna bağlı bazı cihazlarınız var ve cihaz türü önemli nokta.
Bob77

Yanıtlar:


5

COM arabirimleri üzerinden .NET VB6 maruz inanılmaz bir başarı oldu. Bunu yaparak başlangıçta büyük miktarda VB6 kodunu yeniden düzenleyebildik ve .NET'e bir yükseltme yolu ayarladık. İdiyomatik VB6'nın C # veya hatta VB.NET'e iyi tercüme etmediğini unutmayın, bu nedenle dikkatli bir şekilde basmak isteyeceksiniz.

Oldukça can sıkıcı olan bir sorun, ortak COM arabirimindeki değişiklikler nedeniyle yapmak zorunda olduğumuzu yeniden inşa aşırı miktarda oldu. Bu, Visual Make tarafından hafifletildi .


Teşekkür ederim. Visual Make'ın çözdüğü sorun hakkında daha fazla bilgi verir misiniz? Anladığımdan emin değilim.
Dabblernl

@Dabblernl - Visual Make, VB6 projelerinin bir koleksiyonu olan bir proje oluşturmanıza izin verir ve bunları uygun sırayla inşa edecektir.
ChaosPandion

6

FWIW, tecrübelerime göre bir VB6 uygulamasını .Net'e yükseltme ihtiyacı yeniden yazma için ideal bir bahane sunuyor. Orijinal kodlayıcılar parlak vizyonerler olmadıkça, VB6'da yaygın olan teknikler nadiren .Net'e temiz bir şekilde bağlanır.

Karşılaşacağınız bazı lezzetler:

  1. Gerçekten istemediğiniz Microsoft.VisualBasic'e başvurularla sonuçlanacaksınız.
  2. Bulunması zor hatalar olacaktır, örneğin VB6 alt dizesinin (a, b, c) sessizce a.SubString (b, c) olarak işlediği ve VB6 ve 1 tabanlı olduğu için yüzünüzde patladığı yerlerde 0 tabanlı .Net.
  3. Tüm bu kodlanması kolay örtülü dönüşümler, genellikle liste sınırlayıcı ve / veya "olarak", "olmayan" ilk bilgisayarda PC'den çıkacaktır. ondalık ayırıcı olarak.
  4. Dönüştürülmüş sınıflarınız, yeniden tasarımın getirmesi gereken veri gizlemesine sahip olmayacaktır.

HTH


1
Bazı çok iyi noktalar getiriyorsun. Bunlar, kötü uygulamaları yeniden düzenlemek için kodun ilk geçişinin bir zorunluluk olmasının nedenlerinden bazılarıdır. İdeal olarak Option Explicit, açık olduğundan ve sihirli örtülü dönüşümlere tüm bağımlılığın kaldırıldığından emin olursunuz .
ChaosPandion

Beni neşelendirdiğin için teşekkürler ;-) Ama şu anda bilmek istediğim şey bu değil. Gerçek dönüşüm kabusu hâlâ gelecek.
Dabblernl

1
@chaos Doğru. Aslında Açık ile başlıyorum ve hiçbir hata kalmadığında, çok, birçok sorunu kullanışlı bir şekilde vurgulayan
Sıkı'ya

1
Alev makineleri ile VB6 kodundan sonra giden ekipleri duydum. Bunun VB6 kodu için çok daha fazla olmasının sebebinin, birçok VB "geliştiricisinin" başladığında programlama deneyimi olmamasıdır. Bu da, bu nesil profesyonellerin uğraşması için vahşi doğada sayısız kötü tasarlanmış ve kodlanmış uygulama yarattı.
O Grunt

1

Sizin için iyi çalışmalıdır, özellikle hızlı kullanıcı değiştirme / birden fazla oturum hakkında herhangi bir soruna neden olacak hiçbir şey yoktur.

Sürdürülebilirlik açısından, hibrit VB6 / VB.NET'in yalnızca geçici bir çözüm olması gerektiğini unutmayın: planınız zaman içinde VB.NET'e tam olarak geçiş yapmak olmalıdır.

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.