2008-09-19 29 views
7

Chúng tôi có một ứng dụng Ms Access 12 tuổi mà chúng tôi sử dụng cho kho lưu trữ và lập hóa đơn hàng tồn kho cốt lõi của chúng tôi. Nó đã chạy trên một chương trình phụ trợ SQL Server, nhưng tất cả "logic", biểu mẫu và báo cáo đều có trong Access. Sau khi trải qua một lượng lớn bùn bảo trì cần thiết để biến các giao dịch hàng tồn kho từ phi thời gian sang thời gian, tôi nhận ra rằng một ngày nào đó tôi cần chuyển đổi thứ này thành mã để tôi có thể quản lý tốt hơn logic trong một môi trường có thể bảo trì và kiểm thử tốt hơn nhiều.Một số kỹ thuật tốt để chuyển đổi ứng dụng Ms Access thành ứng dụng .Net là gì?

Một số kỹ thuật nào có thể cho phép tôi chuyển đổi nó thành ứng dụng .Net một cách dễ quản lý và hiệu quả?

Một ý tưởng là chuyển đổi các truy vấn thành thủ tục được lưu trữ, sau đó chuyển đổi ứng dụng thành dự án Adp. Nhưng tôi vẫn không biết cách xử lý biểu mẫu và báo cáo.

Ngoài ra, tôi là nhà phát triển duy nhất cho công ty của tôi, nếu điều đó quan trọng.

Trả lời

5

Khi bạn đã có asp.net với một số logic nghiệp vụ, bạn có thể mở nó để truy cập dưới dạng dịch vụ web (tệp asmx). Google cho Bộ công cụ Dịch vụ Web của Microsoft Office cho phiên bản truy cập của bạn (xp/2003, v.v.) và điều này sẽ viết các lớp proxy vba để bạn gọi dịch vụ web. Bạn có thể liên kết dữ liệu dịch vụ web với các biểu mẫu thông qua mã (vba để đọc và ghi vào điều khiển) hoặc tạo các bảng tạm thời cục bộ với dữ liệu từ dịch vụ web và sử dụng ràng buộc truy cập thông thường.

Tùy thuộc vào những gì bạn cảm thấy thoải mái nhất (mã/tsql) bạn có thể đặt logic trong các thủ tục được lưu trữ hoặc trong một lớp logic nghiệp vụ hoặc lai (cả hai). Tôi thấy việc kiểm tra mã dễ dàng hơn các thủ tục được lưu trữ và không bị ràng buộc với máy chủ sql cho logic nghiệp vụ tức là nếu bạn muốn thay đổi cơ sở dữ liệu hoặc muốn phát triển/kiểm tra thành phần ngoại tuyến mà không có cơ sở dữ liệu. Các tính năng mới .net như LINQ có hiệu suất khá tốt nên bạn không phải dựa vào các thủ tục lưu sẵn cho các hoạt động cơ sở dữ liệu.

Giữ giao diện người dùng giao diện người dùng truy cập cho đến khi bạn đã tái cấu trúc tất cả truy cập dữ liệu/logic doanh nghiệp của mình vào dịch vụ web. Sau đó, bạn có thể tạo một ứng dụng asp.net tiêu thụ các dịch vụ web hoặc ứng dụng winform nếu bạn muốn. (Tránh xa những WPF, như một giao diện người dùng, trong thời gian này vì nó là một đường cong học tập dốc và chưa có một DataGrid có thể so sánh với quan điểm truy cập bảng dữ liệu.)

Báo cáo

Các báo cáo truy cập có thể được upsized cho các dịch vụ báo cáo máy chủ sql (vba trong các báo cáo không upsize và nó là tốt hơn để viết một số tsql trong thủ tục được lưu trữ). Nếu bạn không có sản phẩm máy chủ sql đầy đủ, bạn vẫn có thể sử dụng kiểm soát reportviewer để viết báo cáo cho bạn (xem http://www.gotreportviewer.com/) trong asp.net (hoặc winform với phiên bản tiêu chuẩn hoặc lên Visual Studio) liên kết với bộ dữ liệu ado.net.

Các tùy chọn khác: Bạn có thể ghi .net dll và sử dụng liên kết. Cách tiếp cận này cho phép bạn bắt đầu viết chức năng dần dần. Không sử dụng .net ui e.g. một winform vì nó sẽ không chơi độc đáo với truy cập ui. Bạn có thể viết logic nghiệp vụ hoặc logic truy cập dữ liệu và sau đó gọi các lớp này từ vba. Sau đó, bạn có thể chuyển mã này sang asp.net hoặc các dịch vụ web nếu cần.

Những điều cần loại trừ:

tôi không thích cách tiếp cận của việc viết một ứng dụng mới có cạnh phiên bản phụ. Là một nhà phát triển duy nhất bạn có đủ để lo lắng về. Có thể bạn sẽ kết thúc việc thêm các tính năng trong cả hai phiên bản và gỡ lỗi hai phiên bản thay vì một phiên bản.

Hình thức vb6 interop không hoạt động để truy cập.

ADP như đã nêu là khá chết. (Tôi không bao giờ thích chúng vì tôi thường sử dụng các bảng cục bộ để tối ưu hóa hiệu suất và chúng chỉ có thể được gọi qua mã và không được liên kết)

Bạn có thể chuyển đổi mô đun vba và mô-đun lớp thành vb.net bằng Visual Basic Nâng cấp Wizard (trong studio trực quan) nhưng nó không upsize tất cả mọi thứ (ví dụ như dao/mã ado để ado.net mã) và không tạo mã được tối ưu hóa cho. Net và có thể không dễ dàng để viết các bài kiểm tra đơn vị tùy thuộc vào thiết kế mã vba. Tôi khuyên bạn nên viết lại mã (thử Test Driven Development nếu bạn nghiêm túc về việc kiểm tra xem bạn có thích nó không).

+0

YE, tôi chỉ sử dụng Phát triển theo hướng thử nghiệm (từ từ đưa trang web spaghetti của chúng tôi được kiểm soát). Tôi vui mừng khi biết về báo cáo chuyển đổi và tôi thích ý tưởng interop com để ít nhất có được bit phức tạp dưới sự kiểm soát. – Gilligan

6

Câu trả lời ngắn gọn: quá trình di chuyển dường như không dễ dàng được tự động hóa. Tôi đoán là đặt cược tốt nhất của bạn là viết lại (và cài đặt) từng phần một hệ thống, ngay cả khi (có lẽ) nó buộc người dùng của bạn phải chạy phiên bản cũ và phiên bản mới song song trong một thời gian sử dụng các bit chức năng khác nhau. Bạn có thể giảm thiểu rắc rối đó bằng cách xem xét cẩn thận các tính năng cần di chuyển và thứ tự nào.

Ví dụ: bạn có thể có một người dùng có vai trò công việc yêu cầu họ chỉ sử dụng một màn hình cả ngày. Nếu bạn di chuyển màn hình đó trước tiên bằng chức năng đi kèm, người dùng đó có thể sử dụng hệ thống mới ngay lập tức và để lại màn hình cũ phía sau, giảm tải bảo trì của bạn.

Vì vậy, đó chỉ là một số ý tưởng dựa trên không quá nhiều thông tin. Tôi hy vọng điều này sẽ giúp anyway.

2

Tôi sẽ cân nhắc xem số Interop Forms Toolkit. Khi tôi hiểu nó, công cụ này làm cho nó khá dễ dàng để sử dụng các hình thức NET từ bên trong VB6, vì vậy có lẽ nó cũng có thể được sử dụng từ bên trong Microsoft Access? Nếu có, nó có thể giúp bạn di chuyển ứng dụng sang .NET theo cách gia tăng. Thực hiện tìm kiếm nhanh, tôi không thể tìm thấy bất kỳ hướng dẫn nào về việc sử dụng nó với Microsoft Access, vì vậy tôi xin lỗi nếu điều này hóa ra là một con hẻm mù.

1

Chuyển đổi thành adp sẽ không phải là một giải pháp tốt trong dài hạn - công nghệ này bị Microsoft từ chối.

Nếu bạn muốn chuyển sang .net (tại sao? Bạn có lý do để ưu tiên .net?) Tôi khuyên bạn nên bắt đầu đọc, thử tạo một số ứng dụng đơn giản và sau đó bắt đầu chuyển đổi cơ sở dữ liệu này sang ứng dụng.

Nhưng ...

Tôi nghĩ bạn và công ty cần phải suy nghĩ về những rủi ro liên quan đến dự án này. Điều gì sẽ xảy ra nếu bạn bị bệnh, chỉ trong tuần mà quản lý cần một số báo cáo không tồn tại? Tôi xin đề nghị bạn tìm kiếm một công ty phát triển phần mềm nhỏ tại địa phương, họ sẽ vui lòng giúp bạn. Có thể bạn có thể sắp xếp rằng bạn tiếp tục là 'nhà phát triển hàng đầu' và chỉ sử dụng chúng để sao lưu.

+0

Ý tưởng thú vị. Tôi sẽ chọn. Net bởi vì tôi đã duy trì trang web của chúng tôi, đó là trong Asp.Net. Vì vậy, tôi sẽ tích hợp bản chất logic kinh doanh từ hệ thống kiểm kê vào cơ sở hạ tầng hiện tại của chúng tôi. SOme của logic nghiệp vụ đã được nhân đôi ở cả hai nơi. – Gilligan

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