2011-01-07 34 views
5

Hệ thống dựa trên Delphi 5 cũ của khách hàng, hàng nghìn dòng mã, đang bắt đầu bị hỏng. Vấn đề với trình điều khiển mới và hệ điều hành là những vấn đề chính.Môi trường lập trình giao diện web để thay thế hệ thống dựa trên Delphi cũ

Chúng tôi giả định viết lại hoàn toàn, một mô-đun tại một thời điểm và muốn xem giao diện dựa trên trình duyệt. Cơ sở dữ liệu là Oracle 10 mà chúng ta có thể thay thế nếu nó có ý nghĩa.

yêu cầu tiểu học là:

  • Có nguồn gốc của một công ty hoặc cộng đồng người dùng đó là đủ mạnh mẽ để được khoảng cho 5-7 năm tới (chúng tôi hiện thực về vấn đề này).

  • Có thể nhanh chóng giao diện để sử dụng các thủ tục được lưu trữ từ Oracle và các dịch vụ web được tạo trong ASP.NET và ColdFusion làm nguồn dữ liệu.

  • Có thể triển khai trên máy khách ảo cũng như máy khách Windows và Apple dày.

  • Điểm bổ sung nếu có cách nào đó để sử dụng lại mã Delphi cũ (nhưng một lần nữa, chúng tôi là hiện thực vì vậy chúng tôi không mong đợi điều này sẽ xảy ra).

Chúng tôi đang xem xét các môi trường phát triển Silverlight, Flex và Ruby. Có ai có bất kỳ đề xuất hoặc nhận xét nào khác ở trên không?

Cảm ơn sự hỗ trợ của bạn.

Trả lời

2

Nếu bạn đang tìm kiếm một nền tảng được hỗ trợ rộng rãi, bạn có thể giao tiếp với Web Services một cách dễ dàng, có lẽ tôi sẽ dừng lại ở ASP.NET với C#.

.NET có cộng đồng nhà phát triển lớn, có thể dễ dàng tương tác với cơ sở dữ liệu Oracle và có hỗ trợ dịch vụ web tuyệt vời.

Tôi có thể sẽ dính vào giao diện HTML (thay vì dựa vào Flash hoặc Silverlight vì không được đảm bảo phổ biến rộng rãi sau khi HTML5 được hoàn thành). Bạn thực sự có thể bắt đầu tích hợp các tính năng HTML5 ngay bây giờ vì hầu hết các nền tảng đều hỗ trợ một số tính năng của chúng.

Để tích hợp với mã Delphi cũ, bạn có thể thử biến các mô-đun khác thành thành phần COM. Sau đó, bạn có thể sử dụng các thành phần COM đó trong mã .NET qua COM Interop.

... có vẻ như tôi đã đề cập đến tất cả các căn cứ.

+0

Ý tưởng trên HTML5. Trình duyệt hiện không thực hiện các cấu trúc HTML hiện tại như nhau. Một trong những lợi ích của Flash/Silverlight là tính thống nhất trên các trình duyệt. Không có gì khiến tôi nghĩ rằng chiếc mũ HTML5 sẽ mang lại tính nhất quán của trình duyệt chéo. Nếu áp phích gốc có thể tiêu chuẩn hóa trên một trình duyệt, thì HTML (và JavaScript) sẽ là một lựa chọn tuyệt vời. Vì anh ta muốn hỗ trợ các máy Windows và Apple, anh ta có lẽ không thể tiêu chuẩn hóa trên một trình duyệt. Tôi nghi ngờ chuyển từ Delphi sang một ứng dụng HTML "old school" sẽ là một cơn ác mộng khả năng sử dụng. – JeffryHouser

+0

Cảm ơn rất nhiều vì phản hồi của bạn Justin. Cửa hàng của chúng tôi chủ yếu là C# nhưng tôi muốn có một cách tiếp cận thuyết phục cho việc lựa chọn môi trường mới. Tất nhiên, nếu tất cả các câu trả lời đều ủng hộ những gì bạn đã nói, tôi sẽ không thất vọng! – ProgramsUnlimited

6

Có rất nhiều yếu tố liên quan đến việc lựa chọn của bạn. Điều đầu tiên tôi hỏi là bạn biết gì? Nếu câu trả lời chỉ là "duy trì hệ thống kế thừa" thì bạn đang trong bản chất bắt đầu từ đầu về mặt kiến ​​thức về các công nghệ mới.

Trước tiên, tôi muốn làm sáng tỏ những gì tôi cảm nhận như một quan niệm sai lầm trong câu hỏi ban đầu của bạn:

Chúng tôi đang xem xét Silverlight, Flex và của Ruby

  • Silverlight là một công nghệ máy khách, về cơ bản là thời gian chạy.
  • Flex là tên của SDK được sử dụng để xây dựng ứng dụng cho Adobe's Flash Nền tảng.
  • Ruby là ngôn ngữ lập trình .

Dường như bạn đang kiểm tra nhiều công nghệ cực kỳ khác nhau được thiết kế cho các mục đích khác nhau. Họ sẽ không so sánh rất tốt.

So sánh trực tiếp hơn là so sánh Silverlight với Trình phát Flash với HTML/JavaScript. Hoặc để so sánh MXML của Flex với XAML của .NET. Ruby, theo như tôi biết được sử dụng chủ yếu ở phía máy chủ, thường với HTML và JavaScript làm giao diện người dùng. Nếu giải pháp giao diện người dùng của bạn là bắt buộc để tương tác với các dịch vụ web .NET và ColdFusion, tôi không chắc chắn tại sao bạn lại ném công nghệ bên thứ ba vào hỗn hợp.

Điều đó nói rằng, tôi sẽ khuyên bạn nên sử dụng Flex/The Flash Payer làm công nghệ giao diện người dùng của bạn và ColdFusion làm công nghệ phía máy chủ của bạn. Có một lý do tôi khuyên bạn nên điều này và đó là bởi vì đó là những gì tôi biết. Hy vọng rằng một người hiểu biết hơn về .NET/Silverlight/Ruby có thể kêu vang về những lợi ích của mỗi người.

tôi sẽ kiểm tra nhiều hơn tại các điểm của bạn, từng người một:

Sourced by a company or user community that is robust enough to be 

xung quanh cho 5-7 năm tới (chúng tôi hiện thực về vấn đề này).

Tôi hy vọng Silverlight, Nền tảng Flash và Ruby sẽ còn sống và đá trong thập kỷ tới.

Nền tảng Flash và Flex đặc biệt, có cộng đồng sống động. Tôi tin rằng một trong những điều tốt nhất mà Adobe làm là thúc đẩy cộng đồng phát triển xung quanh nền tảng và công cụ của họ.

Flex vẫn còn mới và đang phát triển, nhưng nó đã chứng kiến ​​sự tăng trưởng rất lớn trong vài năm qua. Mặc dù Adobe đã chặt chẽ về số lượng nhà phát triển, nhưng hầu hết các ước tính tôi thấy đều đặt ở mức 250K-350K, cao hơn gấp đôi so với 3 năm trước. Có podcasts, rất nhiều blogs, nhiều khung hơn bạn có thể lắc một thanh tại (RobotLEgs là Yêu thích hiện tại), tấn hội nghị (Ưa thích của tôi là 360|Flex) và lots of open source projects.

ColdFusion là hơn 10 tuổi, hiện đang ở trong đó là phiên bản thứ 9, và có một cộng đồng lớn với thịnh vượng mailing list (như House of Fusion và các diễn đàn Adobe), nhiều Podcast (như CFHourcfconvesations), blogs, sách, khung (chẳng hạn như Fusebox, Model Glue và Mach-II), open source projectsconferences.

Một số người nói thật khó để tìm các nhà phát triển ColdFusion, và điều đó đôi khi đúng bởi vì cộng đồng tương đối nhỏ so với .NET. Thời gian qua tôi đã thấy ước tính, họ ước tính 750 nghìn nhà phát triển trên toàn thế giới. Bạn có thể có vấn đề tương tự với các nhà phát triển Flex. Nhưng có vẻ như bạn đã có một đội mà bạn muốn đào tạo, vì vậy có lẽ bạn không tìm kiếm người mới thuê và điều đó sẽ không là vấn đề.

Cũng có nhiều Nhóm người dùng Adobe trên toàn thế giới. Vui lòng dừng lại một và/hoặc hỏi người quản lý nhóm về công nghệ mà anh chọn. Hầu hết các nhóm mà tôi biết là Flex hoặc ColdFusion.

Tôi sẽ thêm rằng ColdFusion và Nền tảng Flex/Flash đều đến từ Adobe và Adobe đã nỗ lực rất lớn để đảm bảo chúng hoạt động tốt. Tôi nghĩ rằng sự tích hợp của họ là vô song.

Tất cả điều này nói, .NET cũng có công ty lớn ủng hộ nó và cơ sở phát triển lớn hơn Coldfusion và/hoặc Flex. Tôi nhận thấy bạn có nhiều khả năng tìm thấy các giải pháp thương mại được hỗ trợ trong thế giới .NET hơn là trong không gian Flex hoặc ColdFusion; nhưng không thể nói từ kinh nghiệm cá nhân.

Tôi không nghĩ Ruby có một công ty đằng sau nó, nhưng tôi hiểu nó có một cộng đồng rất sôi động. Bạn có thể dễ dàng sử dụng Ruby để xây dựng một phụ trợ cho một ứng dụng Nền tảng Flash hoặc một ứng dụng Silverlight.

Able to quickly interface to use stored procedures from Oracle and web 

dịch vụ sản xuất trong ASP.NET và ColdFusion như các nguồn dữ liệu.

Bạn đã đề cập đến khả năng thay thế Oracle. Tôi sẽ khuyên bạn nên chống lại điều này. Có vẻ như bạn sẽ có rất nhiều việc phải làm. Nếu bạn chỉ có thể thay đổi một "lớp" của ứng dụng cùng một lúc, hãy làm điều đó.

ColdFusion có thể nhanh chóng và dễ dàng truy cập dữ liệu trong Oracle bằng cách sử dụng Thủ tục được lưu trữ hoặc truy vấn trực tiếp. Tôi không có nghi ngờ rằng NET có thể làm như vậy. [và tôi cho rằng Ruby cũng không có vấn đề gì với điều đó].

Silverlight và Flash Player (Flex) được thiết kế như công nghệ giao diện người dùng và tôi không khuyên bạn nên truy cập cơ sở dữ liệu trực tiếp từ chúng. Hầu hết các ứng dụng tôi đã nhìn thấy sử dụng một lớp trung gian (chẳng hạn như ColdFusion hoặc .NET) để truy cập cơ sở dữ liệu, và sau đó Flash sẽ chỉ truy cập lớp trung gian đó. Trong kiến ​​trúc Service View Controller Service, bạn thường có thể triển khai Model làm lưu trữ cơ sở dữ liệu (Oracle), các dịch vụ trong phần mềm trung gian (ColdFusion/.NET), và khung nhìn trong công nghệ đầu cuối (Flash Player/Flex hoặc Silverlight hoặc HTML)/AJAX). Bộ điều khiển trong ứng dụng Flex/Flash có nhiều khả năng sẽ được tạo trong Flash/Flex. Tôi giả sử Silverlight là tương tự.

Sử dụng ColdFusion bạn sẽ sử dụng cfstoredproc để truy cập các thủ tục được lưu trữ hoặc truy vấn cfquery để chạy trực tiếp truy vấn đối với cơ sở dữ liệu. Bạn đã đặt các truy vấn đó vào một dịch vụ và sau đó từ Flex/Flash Player, bạn sẽ truy cập dữ liệu đó bằng RemoteObjects (giao thức AMF mà tôi khuyên dùng) hoặc WebService (cho các cuộc gọi SOAP) hoặc HTTPService (Đối với các cuộc gọi REST)). AMF là một định dạng nhị phân, có thể dẫn đến thời gian truyền dữ liệu nhanh hơn nhiều giữa máy khách và máy chủ. CNTT cũng sẽ tự động dịch các đối tượng phía máy chủ sang các đối tượng phía máy khách và ngược lại. Đó là một liên lạc rất tốt đẹp và ngăn cản bạn phải viết thói quen chuyển đổi của riêng bạn.

Deployable on virtualized clients as well as thick client 

Máy Windows và Apple.

Tôi đoán tôi không chắc chắn ý bạn là khách hàng ảo hóa so với khách hàng dày.

Trình phát Flash và AIR dễ dàng được triển khai cho cả Windows và Mac. Adobe đang làm rất nhiều công việc để chuẩn bị cho làn sóng thiết bị di động nếu điều đó quan trọng đối với bạn. Mặc dù các đối số của Adobe/Apple năm ngoái, Adobe có một trình đóng gói để triển khai cho các thiết bị iOS. Đó là trong giai đoạn đầu của nó, nhưng tôi hy vọng sẽ thấy một số cập nhật lớn trong nửa đầu năm nay.

Adobe đã bị chỉ trích vì hoạt động trên máy Mac và có nhiều lý do cho việc này. Nhưng, mọi thứ liên tục cải thiện.

Tôi biết rằng Silverlight có hỗ trợ Mac, nhưng tôi không biết phạm vi của nó. Tôi không mong đợi để xem Silverlight trên thiết bị di động ngoài hệ điều hành Windows Phone.

Về mặt Ruby, có thể bạn sẽ không muốn triển khai Ruby tới máy tính để bàn dưới mọi hình thức. Tuy nhiên, bạn có thể tạo AJAX/HTML hoạt động với trình duyệt bạn chọn (và/hoặc sử dụng một khung công tác AJAX liên quan đến các vấn đề tương thích với trình duyệt). Như mọi thứ đứng ngay bây giờ, HTML/AJAX có lẽ sẽ là lựa chọn tốt nhất cho việc triển khai thiết bị di động, vì hầu hết các trình duyệt di động đều dựa trên Webkit, vì vậy thường có mức độ nhất quán cao về cách ứng dụng HTML chạy trên các thiết bị. Và cách tiếp cận này rất có thể sẽ mang lại hiệu suất tốt hơn so với sử dụng Flash [hoặc Silverlight] trên thiết bị đã nói.

Extra points if there is some way to reuse the old Delphi code (but 

một lần nữa, chúng tôi hiện thực vì vậy chúng tôi không mong đợi điều này sẽ xảy ra).

Tôi không thể giúp bạn ở đây. Đặt cược tốt nhất của bạn là tạo lại từ đầu hoặc cố gắng viết một số dạng công cụ tạo mã/chuyển đổi. Tôi không chắc chắn nếu sau này là thực tế. Nếu bạn chuyển mã Delphi thành các đối tượng COM, như được gợi ý ở nơi khác, chúng có thể được sử dụng từ ColdFusion tương tự như cách chúng có thể được sử dụng từ .NET.

Điều này có hữu ích không? Bạn muốn biết điều gì khác?

+0

Một phản ứng sâu sắc tuyệt vời. Cảm ơn bạn rất nhiều vì sự giáo dục. Chúng tôi đã làm việc trong cả ASP.NET và ColdFusion. Hầu hết các ứng dụng máy tính để bàn của chúng tôi (trừ hệ thống Delphi) được viết bằng C# hoặc Java. Tôi nghĩ rằng chúng tôi sẽ cố gắng xây dựng một chương trình thử nghiệm với cả Flex và Silverlight làm giao diện người dùng để xem các đường cong học tập sẽ khó khăn như thế nào. Cảm ơn bạn một lần nữa ... Tôi không nghĩ về sự tích hợp chặt chẽ mà Adobe sở hữu cả CF và Flex có thể mang lại cho quá trình này. – ProgramsUnlimited

+0

@ProgramsUnlimited Rất vui được trợ giúp. Nếu bạn cân nhắc sử dụng .NET và Flex cùng nhau, tôi khuyên bạn nên xem xét một .NET AMF Gateway. WebORB là một lựa chọn. FlourineFX là một loại khác. Cổng AMF được xây dựng trực tiếp vào CF, vì vậy bạn không cần giải pháp của bên thứ ba cho điều đó. Tôi rất muốn nghe về kết quả của các bài kiểm tra Flex và Silverlight của bạn, vì vậy nếu có bất kỳ điều gì bạn có thể chia sẻ công khai, hãy nhớ quay lại và cho chúng tôi biết một số bài học của bạn. – JeffryHouser

3

tôi hoặc là sẽ gắn bó với Delphi (nhưng hiện đại hóa mã lên phiên bản mới + khung) nếu tôi thực sự muốn tái sử dụng mã này, hoặc tôi sẽ đi Big Bang tất cả các cách với C#/ASP.NET

Nếu ứng dụng cũng sẽ cần khách hàng một lần nữa, tôi sẽ nghiêng về phía Delphi. Nếu web chỉ tôi nghiêng về phía C#.

Có thể Java thay vì C#, nhưng chỉ khi bạn làm việc tại một tập đoàn lớn và họ đã sử dụng nó.

2

Thêm điểm nếu có một số cách để tái sử dụng Delphi mã cũ

Luôn có Intraweb (aka VCL for the Web). Bạn có thể sử dụng trực tiếp mã cũ của mình.

Có nguồn gốc của một công ty hoặc cộng đồng người dùng đó là đủ mạnh mẽ để được xung quanh cho vòng 5-7 năm tới (chúng tôi hiện thực trên này).

Không phải là vấn đề.

Có khả năng để nhanh chóng giao diện sử dụng stored procedures từ Oracle và dịch vụ web được sản xuất trong ASP.NET và ColdFusion như các nguồn dữ liệu.

Delphi Enterprise and Architect cung cấp hỗ trợ cho Oracle từ hộp và tất cả phiên bản đều có thể sử dụng dịch vụ web. Các giải pháp của bên thứ ba cũng có sẵn.

Deployable trên khách hàng ảo hóa như cũng như khách hàng dày Windows và Apple máy.

Khách hàng dày cho Apple hiện nằm ngoài phạm vi. "Project Pulsar" trên số roadmap hứa hẹn hỗ trợ cho Mac OS X.

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