2008-10-16 25 views
6

Bất kỳ lời khuyên nào về cách di chuyển một ứng dụng kinh doanh Delphi 7 hiện có sang .NET 2.0 trong Visual Studio 2005?Di chuyển ứng dụng Delphi 7 sang .NET

Visual Studio 2005 đã được mua, công ty muốn di chuyển ra khỏi công cụ Borland/Codegear.

Ứng dụng là một máy chủ ứng dụng khách thực thi, sử dụng một số điều khiển giao diện người dùng của bên thứ 3 và báo cáo Crystal 10 để báo cáo.

Có nhiều logic nghiệp vụ trải rộng trên các loại Delphi trong giao diện người dùng cũng như nhiều thủ tục lưu trữ SQL Server 2000. Di chuyển nhiều logic proc được lưu trữ vào các lớp .NET là một mục tiêu khác.

Để giảm tác động đến khách hàng, cách tiếp cận từng phần thay vì viết lại/chuyển đổi hoàn chỉnh sẽ được ưu tiên, nếu có thể. Cảm ơn trước.

[Cập nhật] Có ai có kinh nghiệm, tốt, xấu hoặc xấu xí, sử dụng Managed VCL cho loại kịch bản này không?

+0

Cách tiếp cận RAD, tức là giao diện người dùng và logic trộn và việc sử dụng procs được lưu trữ khiến việc di chuyển trở nên khó khăn. Bạn cần phải "đánh lừa" các đường nối ", tức là một phần của mã có thể được di chuyển và thử nghiệm, và làm từng chút một. Hãy xem [Làm việc hiệu quả với Mã kế thừa] (http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052). Đáng đọc cuốn sách tuyệt vời này. Và chuyển sang phương pháp tiếp cận SOA để di chuyển Logic nghiệp vụ của bạn từ giao diện người dùng và các procs được lưu trữ tới các máy chủ. –

Trả lời

7

Tôi đã làm việc tại một công ty chuyển từ Delphi sang WPF/.Net vào khoảng năm 2007. Chúng tôi đã thử một cách tiếp cận từng phần. Thật đau đớn. Chúng tôi đã luôn luôn chạy vào các lỗi tinh tế trong interop. Gọi từ Delphi đến WPF hoặc Winforms và ngược lại là đau đớn. Nếu các điều khiển giao diện người dùng và cửa sổ khác nhau của ứng dụng của bạn gọi nhau rất nhiều, tôi nghĩ bạn sẽ gặp phải những cơn đau ngày càng tăng đáng kể.

Nếu bạn có thể đủ khả năng để thực hiện toàn bộ chuyển đổi cùng một lúc, tôi sẽ thực hiện. Nếu không, hãy tách các phần của ứng dụng độc lập hoặc có tối thiểu các tương tác với phần còn lại của ứng dụng.

Tôi cũng khuyên bạn nên nhảy vào .Net 2008. Tại sao bạn chọn công nghệ gần 4 năm (VS 2005)? Tôi nghĩ rằng đó là một quyết định kinh doanh rất, rất xấu để lựa chọn để nhảy vào .Net 2.0 khi .Net 3.5 là rất ổn định. Lý do hợp lệ duy nhất mà tôi từng có để quản lý cho .Net 2.0 sẽ hỗ trợ Windows 2000. Bạn vẫn có khách hàng trên Win2k?Bạn vẫn có khách hàng trên Win2k vào thời điểm chuyển đổi của bạn đã hoàn tất chưa? Bạn có khách hàng không thể chuyển sang XP hay Vista? .Net 3.0 và 3.5 không được hỗ trợ trong Win2k. Đó là nhược điểm duy nhất tôi có thể nghĩ đến.

.Net 3.5 và C# 2008 cung cấp các lợi thế đáng kể cho công ty của bạn. Bạn có một số tính năng ngôn ngữ sẽ tăng tốc thời gian phát triển so với C# 2.0. Bạn có WPF, mà là bao la vượt trội so với Winforms. Tôi cho rằng bạn có thể phát triển cùng một chiếc batteleship-gray Windows mà bạn sẽ nhận được trong Winforms với WPF, phát triển chúng nhanh hơn, và khi bạn muốn một số kẹo mắt bạn sẽ sử dụng một công nghệ có thể dễ dàng cung cấp nó. Nếu bạn đang học một nền tảng cửa sổ mới cho chuyển đổi này, tại sao không đầu tư vào việc học những thứ mới?

Ngoài ra, vui lòng cho tôi biết bạn đã không thực sự mua VS 2005. Bạn có thể mua giấy phép MSDN Universal với cùng mức chi phí và nhận mọi sản phẩm liên quan đến phát triển mà Microsoft đưa ra. Mua nó từ một bên thứ 3 và bạn sẽ được giảm giá tốt.

Xin lỗi nếu tôi phát âm. Trân trọng, chúc may mắn khi di chuyển. Tôi chỉ có những hồi tưởng khi nghĩ đến việc phải từ bỏ tất cả các tính năng trong .Net 3.5.

+0

Cảm ơn bạn đã trải nghiệm. Các doanh nghiệp đã quyết định đưa ra quyết định giữ cho đến năm mới. Nó bây giờ có khả năng họ sẽ chuyển sang .NET3.5. Quyết định ban đầu của .NET 2.0 là yêu cầu cài đặt khung công tác trên 90+ MB. – Ash

+1

@Ash ... để ở lại với Delphi và di chuyển nó bằng các mẫu hiện đại. Bạn có rất nhiều khung công tác tốt và các thành phần xung quanh, trong Delphi thuần túy, để chuyển sang n-Tier, ORM, SOA hoặc DDD. –

3

Chuyển đổi từng phần có nghĩa là thay đổi mã Delphi nguồn gốc sử dụng COM để phía NET có thể cùng tồn tại với Delphi (hoặc có thể sử dụng một số công nghệ khác - khó để nói)

Nếu bạn có thể, nó có thể dễ dàng chuyển đổi ứng dụng sang Delphi.NET trước, sau đó ít nhất các bit .NET sẽ có thể giao tiếp dễ dàng hơn một chút.

Chỉ là một ý nghĩ.

+0

Cảm ơn, họ rất muốn di chuyển khỏi Delphi/Borland hoàn toàn. Có vẻ như từng phần sẽ là cách tiếp cận được sử dụng. – Ash

0

Chỉ có bạn mới thực sự có thể quyết định xem có thể tiếp cận từng mảnh một không. Ví dụ, ứng dụng có thể được chia dễ dàng hoặc là tất cả các hình thức quá mạnh cùng với tất cả logic nghiệp vụ. Về mặt kỹ thuật nó có thể nhưng tất cả phụ thuộc vào cách cơ sở mã được cấu trúc thực sự.

9

Điều đó nghe có vẻ như là really bad idea đối với tôi.

Có lợi thế công nghệ nào cho sản phẩm của bạn ở trong .NET hay chủ yếu là quyết định chính trị làm cửa hàng Microsoft? Đối với khách hàng-máy chủ, Delphi là khá khó khăn để đánh bại. Tôi đã sử dụng VS2005/8 và nó thực sự và thực sự thực sự và chân thành không tốt như Delphi cho phát triển Win32. Nhưng nếu bạn đang di chuyển đến web xuống đường, sau đó VS có lợi thế nhất định.

Nếu những người kinh doanh bướng bỉnh đơn giản từ chối sử dụng Delphi nữa, thì KiwiBastard là chính xác, IMO. Chuyển đổi đầu tiên sang Delphi.NET, sau đó di chuyển từ đó sang VS2005. Hoặc năm 2010, vì đó là dòng thời gian thực tế hơn :)

+0

Kinh doanh thấy thiếu phát triển web ở Delphi là một rủi ro lớn. Họ muốn có một nền tảng cho phép họ linh hoạt trong việc lựa chọn các lớp giao diện người dùng khác nhau (Web, Desktop, Dịch vụ, vv). – Ash

1

Đối với tôi câu hỏi sẽ là: bạn sẽ sử dụng ngôn ngữ nào? Tôi hy vọng C# và không VB.Net. (Với tất cả các chính trị lúng túng trong hệ thống này, điều này không rõ ràng bằng bất kỳ phương tiện nào.)

Tiếp theo bạn có thể nghe là có những người chuyển đổi ở đó sẽ giúp bạn làm điều này. Chúng tôi đã đi qua một đánh giá của các chuyển đổi như vậy (Delphi 7 đến C#) và đã rất! thất vọng.

Tôi có thể đề xuất thỏa hiệp không? Làm thế nào về Delphi Prism? Đó là Delphi trong VS2008. Chắc chắn, bạn vẫn có Delphi và do đó Codegear, nhưng bạn cũng có VS (như công ty của bạn hy vọng bạn).

+0

Các doanh nghiệp muốn di chuyển ra khỏi Borland/Codegear hoàn toàn. Họ cũng muốn có các tùy chọn giao diện người dùng linh hoạt hơn, Web, Máy tính để bàn, thiết bị di động, dịch vụ (theo thứ tự đó). – Ash

8

Trước đây tôi đã làm việc tại một công ty muốn chuyển đổi từ Delphi sang C# .NET vì .NET là tất cả mát mẻ và sáng bóng. Họ đã mang lại một số nhà phát triển có nhiều kinh nghiệm về C# và kết thúc gấp 3 lần các nhà phát triển gấp đôi để chuyển ứng dụng sang C#, sau đó nó đã viết nó lần đầu tiên ở Delphi cho rất ít ROI bổ sung (một vài các tính năng mới đã được thêm vào trong quá trình này). Ngoài ra, khách hàng không hài lòng với hiệu suất ứng dụng hoặc giao diện người dùng.

Nghiên cứu điển hình sau khi nghiên cứu điển hình cho thấy rewriting is a bad idea. (Hat tip để kogus)

Nếu bạn phải di chuyển để NET (yeah, tôi biết, bạn đã không đưa ra quyết định, ai đó với ít thông tin đã) sau đó tôi sẽ đề nghị sử dụng Delphi for .NET hoặc RemObjects Oxygene. Sau này là một plug-in Visual Studio. Nhưng thậm chí marc hofman, the Chief Software Architect of RemObjects Oxygene đã nói rằng nó là một ý tưởng tồi để di chuyển một ứng dụng hoàn hảo làm việc để .NET "chỉ vì."

Nếu bạn có thể chờ đợi cho Delphi Prism, cũng là một bổ trợ Visual Studio và dự kiến ​​sẽ được ra vào cuối năm nay.

+0

Điểm tốt và cảm ơn các liên kết. Hoàn thành viết lại chắc chắn là tùy chọn cuối cùng. Với rất nhiều logic trong cơ sở dữ liệu mặc dù phần lớn nó sẽ không cần phải thay đổi, ít nhất là ban đầu. – Ash

2

Di chuyển ra khỏi các công cụ CodeGear/Borland về cơ bản sẽ loại bỏ bất kỳ giải pháp dựa trên Delphi .NET nào và tổng số viết lại ứng dụng của bạn.

Tôi hy vọng câu trả lời của tôi dưới đây sẽ giúp bạn quyết định.

Từ kinh nghiệm (đã viết lại một ứng dụng Delphi với một nhóm người), nó sẽ tập trung vào một trong hai lựa chọn bên dưới.

Nhưng trước tiên là cảnh báo: bạn sẽ mất ít nhất tổng nỗ lực phát triển để ghi ứng dụng Delphi hiện tại của bạn.

Trong trường hợp của chúng tôi, nỗ lực này đã được bảo đảm vì ứng dụng Delphi cũ (mà thực tế là Kylix) đã hết hạn vì nhiều lý do khác nhau. Viết lại của chúng tôi bao gồm hai phần: viết lại với chức năng bổ sung hạn chế theo sau bởi rất nhiều chức năng bổ sung (thiết kế của phần đầu tiên đã đưa phần thứ hai vào tài khoản).

Trở về lựa chọn của bạn:

1- tổng viết lại bằng C# hoặc VB.NET trong Visual Studio

2- một tái sử dụng một phần của mã lớp kinh doanh Delphi hiện tại của bạn bằng cách sử dụng ôxy từ RemObjecs (một Visual Studio plugin với cú pháp rất giống với cú pháp Delphi). CodeGear sẽ sớm cung cấp Prism (có khả năng trước cuối năm 2008), cũng sẽ tích hợp vào Visual Studio.

Bởi vì truy cập dữ liệu .NET và giao diện người dùng hoàn toàn khác với Delphi, bạn sẽ phải thực hiện việc này từ đầu (cả cho kịch bản 1 và 2). Visual Studio 2008 cung cấp rất nhiều lợi ích ở đây trên Visual Studio 2005.

Không có những điều như thực hiện di chuyển này dần dần, vì bạn thực hiện một thay đổi nền tảng hoàn chỉnh ở đây, đó là một cách tiếp cận tất cả hoặc không có gì.

Cả hai trường hợp sẽ mất một khoảng thời gian đáng kể (mặc dù bạn có kinh nghiệm Delphi, làm quen với bạn trong thế giới .NET sẽ mất thời gian).

Visual Studio có thể tương tác với Crystal Reports và hoạt động tốt với SQL Server.

Vì Visual Studio 2008 cung cấp rất nhiều lợi ích (không chỉ .NET 3.5, mà còn năng suất khôn ngoan), bạn nên làm tốt hơn. Về phía giao diện người dùng, bạn cần thực hiện lựa chọn cân bằng giữa WinForms (còn gọi là Windows Forms) và Windows Presentation Foundation (còn gọi là WPF).

Nếu đó là ghi đè 1 đến 1, bạn có thể muốn gắn bó với WinForms vì nó quen thuộc với những gì bạn có. Bạn có thể cần phải sử dụng một số thành phần của bên thứ 3 để có được giao diện người dùng của bạn; DevExpress là một lựa chọn tốt ở đây vì chúng có các thành phần tương tự trong Delphi và Visual Studio.

Nhưng nếu bạn muốn dùng kẹo mắt tương lai, thì bạn có thể xem xét WPF. Hãy chuẩn bị cho một đường cong học tập dốc hơn ở đây so với WinForms vì nó rất khác với những gì bạn đang sử dụng.

Nếu bạn quyết định ở lại với Delphi, bạn có thể muốn xem VCL cho Web (aka IntraWeb) và vào Delphi 2009 (rất nhiều thay đổi trong thế giới Delphi kể từ khi Delphi 7 được công bố cách đây 6 năm).

Chúc bạn may mắn!

--jeroen

2

Tôi khuyên bạn nên xem Hydra từ RemObjects. Về cơ bản nó xoay quanh giao diện com cho bạn và cung cấp một mẫu quan sát để giao tiếp giữa ứng dụng Delphi và .Net của bạn. Bạn có thể có các biểu mẫu .Net xuất hiện trên các bảng bên trong ứng dụng Delphi của bạn. Điều này cung cấp một đường dẫn di chuyển tốt đẹp, nơi bạn thay thế bit mã Delphi của bạn một chút khi bạn di chuyển chức năng sang .Net.

1

Đã có một báo cáo khoa học về sự chuyển đổi thành công của Dự án Delphi dòng 1,5 triệu thành C# của John Brant, Don Roberts et al.Ông đã viết một trình phân tích cú pháp Delphi, một trình tạo C# và rất nhiều quy tắc chuyển đổi trên AST. Dần dần mở rộng bộ quy tắc, thực hiện xây dựng hàng ngày, rất nhiều bài kiểm tra đơn vị và một số phần viết lại Delphi khó khăn cho phép anh ta với một nhóm 4 người, trong đó một số nhà phát triển gốc, với kiến ​​thức sâu Delphi & C#, để di chuyển phần mềm trong 18 tháng. John Brant & Don Roberts là nhà phát triển ban đầu của trình duyệt tái cấu trúc và bộ công cụ xây dựng trình biên dịch SmaCC, bạn không chắc sẽ có thể đi nhanh như vậy.

Mặc dù đây là một khoản đầu tư đáng kể, nó không có 'kích thước tương tự như sự phát triển ban đầu'. Các tác giả lưu ý rằng việc viết lại đơn giản, không có công cụ hoặc với một công cụ một lần, như được ghi chú bởi Jeroen, rất có khả năng dẫn đến điều đó, đặc biệt nếu các yêu cầu mới được tính đến.

Các tác giả đã thực hiện quy trình tái cấu trúc quy mô lớn trong khi vẫn ở trên cùng một nền tảng cho một dự án khác, thay thế hoàn toàn cơ sở hạ tầng kiên trì. Điều này có thể liên quan đến các dự án dựa trên cũ hơn (BDE?).

+0

+1 Để biết thông tin. Trang web là http://www.refactory.com/ Công việc lớn - và nó sẽ phụ thuộc vào cách Delphi được viết: ví dụ: nếu RAD đã được sử dụng và giao diện người dùng, DB và logic được trộn lẫn, nó sẽ khá đau đớn/không thể được tự động, vì bạn sẽ cần phải chuyển đổi toàn bộ hệ thống phân cấp lớp VCL. Và lợi ích của bản dịch từ 1 đến 1 là gì? Việc thay đổi các thuật toán và mẫu (ví dụ: giới thiệu Thiết kế theo hướng miền) có thể đáng giá. Không "dịch" mã hiện có từ môi trường này sang môi trường khác. –

+0

Các phần của hệ thống phân cấp VCL đã được sử dụng để dịch, vâng. Họ dành rất nhiều thời gian lập bản đồ từ vcl tới .net frameworks –

Các vấn đề liên quan