2008-08-27 43 views
5

Chúng tôi đang trong quá trình thiết kế lại phần khách hàng đang đối mặt trên trang web của chúng tôi trong .NET 3.5. Nó đã được thực hiện tốt cho đến nay, chúng tôi đang sử dụng cùng một quy trình làm việc và lưu trữ, hầu hết các thay đổi lớn nhất là giao diện người dùng, ORM (từ từ điển đến LINQ), và rõ ràng là ngôn ngữ. Hầu hết các trang đến thời điểm này là tầm thường, nhưng bây giờ chúng tôi đang làm việc trên các trang luồng công việc nặng nhất.Di chuyển từ ASP Classic sang .NET và giảm đau

Trang chính của phần chấp nhận phiếu mua hàng của chúng tôi là 1500 dòng, khoảng 90% trong số đó là ASP, có thể thêm 1000 dòng khác trong các lệnh gọi hàm để bao gồm. Tôi nghĩ rằng 1500 dòng là một chút lừa dối quá kể từ khi chúng tôi đang làm việc với đá quý như thế này

function GetDealText(sUSCurASCII, sUSCurName, sTemplateOptionID, sSellerCompany, sOfferAmount, sSellerPremPercent, sTotalOfferToSeller, sSellerPremium, sMode, sSellerCurASCII, sSellerCurName, sTotalOfferToSeller_SellerCurr, sOfferAmount_SellerCurr, sSellerPremium_SellerCurr, sConditions, sListID, sDescription, sSKU, sInv_tag, sFasc_loc, sSerialNoandModel, sQTY, iLoopCount, iBidCount, sHTMLConditions, sBidStatus, sBidID, byRef bAlreadyAccepted, sFasc_Address1, sFasc_City, sFasc_State_id, sFasc_Country_id, sFasc_Company_name, sListingCustID, sAskPrice_SellerCurr, sMinPrice_SellerCurr, sListingCur, sOrigLocation) 

Thực hành tiêu chuẩn tôi đã sử dụng cho đến nay là chi tiêu có thể một giờ hoặc hơn đọc trên ứng dụng cả tự làm quen với nó, nhưng cũng để loại bỏ mã nhận xét/không dùng nữa. Sau đó, để làm việc trong một chiều sâu đầu tiên thời trang. Tôi sẽ bắt đầu ở trên cùng và sao chép một đoạn mã trong tệp aspx.cs và bắt đầu viết lại, tạo các phép tái cấu trúc rõ ràng khi tôi đặc biệt tận dụng lợi thế của ORM của chúng tôi. Nếu tôi nhận được một cuộc gọi chức năng mà chúng tôi không có, tôi sẽ viết ra định nghĩa.

Sau khi tôi có mọi thứ được mã hóa, tôi sẽ thực hiện một vài bước khi tái cấu trúc/thử nghiệm. Tôi chỉ tự hỏi nếu có ai có lời khuyên về cách làm cho quá trình này dễ dàng hơn/hiệu quả hơn một chút.

Trả lời

6

Hãy tin tôi, tôi biết chính xác nơi bạn đang đến từ .. tôi hiện đang di chuyển một ứng dụng lớn từ ASP cổ điển để NET .. Và tôi vẫn đang học ASP .MẠNG LƯỚI! : S (vâng, tôi rất sợ!).

Những điều chính tôi đã giữ trong tâm trí của tôi là thế này:

  • Tôi không đi lạc quá xa thiết kế hiện tại (tức là không lớn "cho phép rip TẤT CẢ này ra và làm cho nó ASP.NET huyền diệu!) do số lượng cực kỳ cao của khớp nối mà ASP cổ điển có xu hướng có, điều này sẽ rất nguy hiểm.Tất nhiên, nếu bạn tự tin, điền vào khởi động của bạn :) Điều này luôn luôn có thể được refactored sau này. với các bài kiểm tra, bài kiểm tra và các bài kiểm tra khác!Tôi thực sự cố gắng để có được TDD, nhưng rất khó để thử nghiệm các ứng dụng hiện có, vì vậy mỗi khi tôi loại bỏ một đoạn cổ điển và thay thế bằng .NET, tôi đảm bảo rằng tôi có nhiều thử nghiệm ánh sáng màu xanh lá cây sao cho tôi nhất có thể.
  • Nghiên cứu rất nhiều, có một số thay đổi chính giữa cổ điển và .NET và đôi khi có thể có nhiều dòng mã và bao gồm trong cổ điển có thể đạt được trong một vài dòng mã, nghĩ trước khi mã hóa. này học được cách cứng, nhiều lần: D

của nó rất giống với chơi Jenga với mã của bạn :)

Best of luck với dự án, bất kỳ câu hỏi nữa, thì cũng xin :)

1

Bạn đang đi từ ASP cổ điển sang ASP với 3.5 mà không cần viết lại? Skillz. Tôi đã phải đối phó với một số ASP @work di sản và tôi nghĩ rằng nó chỉ dễ dàng hơn để phân tích nó và viết lại nó.

2

Sau khi tôi có mọi thứ được mã hóa, tôi sẽ thực hiện một vài bước khi tái cấu trúc/thử nghiệm. Tôi chỉ tự hỏi nếu có ai có lời khuyên về cách làm cho quá trình này dễ dàng hơn/hiệu quả hơn một chút.

Doing it wrong

Thông thường tôi không phải là một fan hâm mộ của TDD, nhưng trong trường hợp của refactoring nó thực sự là con đường để đi.

Viết một số bài kiểm tra trước tiên để xác minh xem bạn đang thực sự nhìn cái gì. Sau đó, refactor. Đây là một LOT đáng tin cậy hơn chỉ 'có vẻ như nó vẫn hoạt động.'

Lợi ích to lớn khác của việc này là khi bạn sắp xếp lại thứ gì đó ở phía dưới trang hoặc trong thư viện được chia sẻ hoặc thứ gì đó, bạn chỉ có thể chạy lại các thử nghiệm, trái ngược với việc tìm ra cách cứng rằng một sự thay đổi dường như không liên quan được thực sự liên quan

0

Nghe có vẻ như bạn có một xử lý khá tốt trên mọi thứ . Tôi đã nhìn thấy rất nhiều người cố gắng làm một phiên âm trực tiếp, bao gồm và tất cả, và nó chỉ không hoạt động. Bạn cần phải có một sự hiểu biết tốt về cách ASP.Net muốn làm việc, bởi vì nó là nhiều khác với ASP cổ điển và có vẻ như bạn có điều đó.

Đối với các tệp lớn hơn, trước hết tôi sẽ cố gắng có chế độ xem cấp cao hơn. Ví dụ, một điều tôi đã nhận thấy là ASP cổ điển là khủng khiếp về các cuộc gọi chức năng. Bạn sẽ đọc qua một số mã và tìm một cuộc gọi đến một hàm không có đầu mối về nơi nó có thể được triển khai. Kết quả là, mã ASP cổ điển có xu hướng có các chức năng và tập lệnh dài để tránh những bước nhảy khó chịu đó. Tôi nhớ đã nhìn thấy một chức năng in ra 40 trang! Phân tích cú pháp thẳng qua nhiều mã đó là không vui.

ASP.Net giúp dễ dàng theo dõi các cuộc gọi chức năng xung quanh, vì vậy bạn có thể bắt đầu bằng cách chia nhỏ các khối mã lớn hơn thành nhiều chức năng nhỏ hơn.

1

Trang ASP 1500 dòng? Với nhiều cuộc gọi để bao gồm các tệp? Đừng nói với tôi - các chức năng không có bất kỳ quy ước đặt tên nào cho bạn biết bao gồm tệp nào đã triển khai ... Điều đó mang lại những kỷ niệm (rùng mình) ...

Nghe có vẻ như bạn có phương pháp tiếp cận khá vững chắc - Tôi không chắc liệu có cách nào kỳ diệu để giảm thiểu nỗi đau của bạn. Sau nỗ lực chuyển đổi của bạn, kiến ​​trúc ứng dụng của bạn sẽ vẫn lộn xộn và giao diện người dùng nặng (tức là mã sau luồng công việc đang chạy) và có thể vẫn còn khá đau đớn để duy trì, nhưng việc tái cấu trúc bạn đang thực hiện chắc chắn sẽ hữu ích.

Tôi hy vọng bạn đã cân nhắc nâng cấp mà bạn đang thực hiện để chỉ viết lại từ đầu - miễn là bạn không có ý định mở rộng ứng dụng quá nhiều và bạn không chịu trách nhiệm chính về duy trì ứng dụng, nâng cấp quy trình làm việc phức tạp- ứng dụng dựa trên như bạn đang làm có thể rẻ hơn và lựa chọn tốt hơn so với viết lại từ đầu. ASP.NET sẽ cung cấp cho bạn cơ hội tốt hơn để cải thiện hiệu suất và khả năng mở rộng, ít nhất, so với ASP cổ điển. Từ câu hỏi của bạn tôi tưởng tượng rằng nó là quá muộn trong quá trình cho cuộc thảo luận đó anyway.

Chúc may mắn!

0

Đừng nói với tôi - các chức năng không có bất kỳ quy ước đặt tên mà nói bạn trong đó bao gồm tập tin có thực hiện của họ ... Đó mang lại ký ức (rùng mình) ...

Bạn đoán sao?;)

Tôi hy vọng bạn đã cân nhắc việc nâng cấp bạn đang làm chống lại chỉ viết lại từ đầu - miễn là bạn không có ý định mở rộng ứng dụng quá nhiều và bạn không phải chịu trách nhiệm chính cho duy trì ứng dụng, nâng cấp ứng dụng dựa trên quy trình làm việc phức tạp như bạn đang hoạt động có thể rẻ hơn và lựa chọn tốt hơn so với viết lại từ đầu. ASP.NET sẽ cung cấp cho bạn cơ hội tốt hơn để cải thiện hiệu suất và khả năng mở rộng, ít nhất, hơn ASP cổ điển. Từ câu hỏi của bạn, tôi hãy tưởng tượng rằng quá muộn trong quy trình cho cuộc thảo luận đó.

Đây là điều chúng tôi đã nói đến. Dựa trên thời gian (cố gắng để đánh bại một trang web của đối thủ cạnh tranh để khởi động) và các tài nguyên (về cơ bản là hai nhà phát triển) nó có ý nghĩa để không nuke trang web từ quỹ đạo. Mọi thứ đã thực sự tốt hơn nhiều so với tôi mong đợi. Chúng tôi đã nhận thức được ngay cả từ các giai đoạn lập kế hoạch rằng mã này sẽ cung cấp cho chúng tôi nhiều vấn đề nhất. Bạn sẽ thấy lịch sử sửa đổi của các trang ASP cổ điển liên quan, đó là một cuộc tắm máu.

Đối với các tệp lớn hơn, trước tiên, tôi sẽ cố gắng để có được một chế độ xem cấp cao hơn trước tiên là . Ví dụ, một điều tôi đã nhận thấy là Classic ASP là khủng khiếp về các cuộc gọi chức năng. Bạn sẽ đọc qua một số mã và tìm một cuộc gọi đến một hàm không có đầu mối về vị trí mà nó có thể được triển khai. Do đó, mã ASP cổ điển có xu hướng để có các chức năng và tập lệnh dài để tránh những bước nhảy khó chịu đó. Tôi nhớ số thấy chức năng được in ra 40 trang! Phân tích cú pháp thẳng qua mà nhiều mã không vui.

Tôi thực sự đã không hài lòng khi làm việc với mã kế thừa khá một chút để tôi có hiểu biết mức độ cao về hệ thống. Bạn đúng về độ dài chức năng, có một số thói quen (hầu hết tôi đã tái cấu trúc thành những cái nhỏ hơn nhiều) 3-4x miễn là bất kỳ trang aspx/lớp trợ giúp/ORM nào trên trang web mới.

0

Tôi đã từng gặp một ứng dụng .Net được chuyển từ ASP. Các trang .aspx hoàn toàn trống. Để hiển thị giao diện người dùng, các nhà phát triển đã sử dụng StringBuilder trong mã phía sau và sau đó đã thực hiện một response.write. Đây sẽ là cách sai lầm để làm điều đó!

0

Tôi đã từng gặp một ứng dụng .Net được chuyển từ ASP. Các trang .aspx hoàn toàn trống. Để hiển thị giao diện người dùng, các nhà phát triển đã sử dụng StringBuilder trong mã phía sau và sau đó đã thực hiện một response.write. Đây sẽ là cách sai lầm để làm điều đó!

Tôi đã nhìn thấy nó được thực hiện theo cách khác, mã phía sau trang trống, ngoại trừ tuyên bố hình cầu, sau đó VBScript đã được để lại trong ASPX.

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