Pergunta

Estamos em processo de reformulação do cliente voltado para a seção do nosso site .NET 3.5.Tudo indo bem até agora, estamos usando o mesmo fluxo de trabalho e procedimentos armazenados, para a maior parte, as maiores alterações são a INTERFACE do usuário, a ORM (a partir de dicionários para LINQ), e obviamente o idioma.A maioria das páginas para este ponto ter sido trivial, mas agora estamos trabalhando o mais pesado fluxo de páginas.

A página principal de nossa oferta de aceitação seção é de 1500 linhas, cerca de 90% do que é ASP, com provavelmente mais 1000 linhas em chamadas de função a inclui.Eu acho que a 1500 linhas é um pouco enganador muito desde então estamos trabalhando com pedras preciosas como esta

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)

A prática padrão estou usando até agora é para gastar, talvez uma hora ou assim a leitura sobre a aplicação tanto de me familiarizar com ele, mas também para extrair comentou-out/descontinuado código.Em seguida, trabalhar em uma profundidade de moda.Eu vou começar pelo topo e copiar um segmento de código na aspx.cs arquivo e começar a reescrever, tornando óbvio refatorações como eu ir especialmente para tirar proveito do nosso ORM.Se eu receber uma chamada de função que não temos, eu vou escrever a definição.

Depois de eu ter tudo codificado eu vou fazer um pouco passa a refatoração/teste.Eu só estou querendo saber se alguém tem alguma dica sobre como tornar este processo um pouco mais simples e mais eficiente.

Foi útil?

Solução

Acredite em mim, eu sei exatamente de onde você está vindo..Atualmente, estou migrando um grande app do ASP clássico .NET..E eu ainda estou aprendendo ASP.NET!:S (sim, estou com medo!).

As principais coisas que eu tenho guardado em minha mente é:

  • Eu não vadios muito muito longe do atual projeto (i.e.sem grandes "permite ripar TUDO isso e fazer ASP.NET mágico!) devido à enorme quantidade de acoplamento que o ASP clássico tende a ter, isso seria muito perigoso.Claro, se você estiver confiante, preencher suas botas :) Este pode ser sempre decomposto novamente mais tarde.
  • De volta tudo o que com os testes, testes e mais testes!Eu estou tentando realmente difícil de obter em TDD, mas é muito difícil para testar aplicativos existentes, de modo que cada vez que eu remover um trecho do clássico e substituir .NET, eu assegurar tenho tanta luz verde os testes fazendo-me possível.
  • Pesquisas e muito, há algumas GRANDES alterações entre o clássico e o .NET e, às vezes, o que pode ser de muitas linhas de código e inclui no clássico pode ser alcançado em poucas linhas de código, acho que antes de codificação..Eu aprendi isso da maneira mais difícil, várias vezes :D

Bem como jogar Jenga com o seu código :)

Boa sorte com o projeto, mais perguntas, por favor, pergunte :)

Outras dicas

Depois de eu ter tudo codificado eu vou fazer um pouco passa a refatoração/teste.Eu só estou querendo saber se alguém tem alguma dica sobre como tornar este processo um pouco mais simples e mais eficiente.

Doing it wrong

Normalmente eu não sou um fã de TDD, mas no caso de refatoração é realmente o caminho a percorrer.

Escreva alguns testes, a primeira que verificar que o pouco que você está olhando está realmente fazendo.Em seguida, refatorar.Isto é MUITO mais confiável do que apenas " parece que ele ainda funciona.'

Outra grande vantagem disso é que quando você está refatoração algo que está mais abaixo na página, ou em uma biblioteca compartilhada ou algo, você pode simplesmente re-execução dos testes, como oposição ao descobrir da maneira mais difícil que uma alteração aparentemente não relacionada foi na verdade, relacionado

Você está indo de ASP clássico para o ASP com 3.5 sem re-escrever?Skillz.Eu tive que lidar com alguns legado ASP @trabalho e acho que é mais fácil analisar e re-escrevê-lo.

1500-linha de uma página ASP?Com muitas chamadas para incluir arquivos?Não me diga -- as funções não têm qualquer convenção de nomenclatura que você diz que incluem o ficheiro tenha sua implementação...Que traz de volta memórias (arrepio)...

Parece-me que você tem um bastante sólida abordagem -- eu não tenho certeza se há alguma maneira mágica, para mitigar sua dor.Depois de sua conversão esforço, a arquitetura da sua aplicação, ainda vai ser confuso e INTERFACE do usuário-pesado (i.e.código-atrás de execução de fluxos de trabalho), e ele provavelmente irá ainda ser bastante doloroso para manter, mas a refatoração você está fazendo deve definitivamente ajuda.

Eu espero que você tenha pesado a atualização que você está fazendo contra apenas reescrever do zero -- enquanto você está pretendendo estender o aplicativo demais e você não são primariamente responsável por manter o app, a atualização de um fluxo de trabalho complexo, baseado no aplicativo, como você está fazendo pode ser mais barato e uma escolha melhor do que reescrevê-lo a partir do zero.ASP.NET deve dar-lhe melhores oportunidades para melhorar o desempenho e a escalabilidade, pelo menos, que o ASP Clássico.A partir de sua pergunta eu imagino que é muito tarde no processo para que a discussão de qualquer maneira.

Boa sorte!

Parece que você tem uma boa lidar com as coisas.Eu vi um monte de gente tentar fazer uma linha reta de transliteração, inclui e de todos, e ele simplesmente não funciona.Você precisa ter um bom entendimento de como ASP.Net quer trabalhar, porque é muito diferente do ASP Clássico, e parece que talvez você tenha que.

Para arquivos maiores, que eu ia tentar obter um maior nível de visão em primeiro lugar.Por exemplo, uma coisa que eu notei é que o ASP Clássico foi horrível sobre chamadas de função.Você seria a leitura através de algum código e localizar uma chamada para uma função com nenhuma pista de onde ele poderia ser implementado.Como resultado, o código ASP Clássico, tiveram longa funções e scripts para evitar os desagradáveis saltos.Eu lembro de ter visto uma função que impressos para 40 páginas!Análise e direto de que a quantidade de código não é divertido.

ASP.Net torna mais fácil seguir a função de chamadas de volta, assim você pode começar por quebrar seus maiores de blocos de código em várias pequenas funções.

Não me diga -- as funções não tem alguma convenção de nomenclatura que diz você que incluir o arquivo tem o seu implementação de...Que traz de volta memórias (arrepio)...

Como você conseguiu adivinhar?;)

Eu espero que você tenha pesado a atualização você está fazendo contra apenas reescrever a partir do zero, desde que não a intenção de estender o aplicativo muito e você não é responsável, principalmente, para manter o aplicativo, a atualização de um fluxo de trabalho complexo, baseado no aplicativo, como você estão fazendo pode ser mais barato e melhor escolha de reescrevê-lo a partir do zero.ASP.NET deve dar-lhe a melhor oportunidades para melhorar o desempenho e escalabilidade, pelo menos, que O ASP clássico.A partir de sua pergunta eu imagine que é muito tarde no processo para que a discussão de qualquer maneira.

Isso foi algo que nós falamos sobre.Com base no tempo (tentando vencer um concorrente local de lançamento) e de recursos (basicamente dois desenvolvedores), faz todo o sentido não nuke o site da órbita.As coisas realmente ter ido muito melhor do que eu esperava.Estávamos conscientes, mesmo a partir da fase de planejamento que este código foi vai nos dar mais problemas.Você deve ver a revisão da história da ASP clássico páginas envolvidos, é um banho de sangue.

Para arquivos maiores, eu gostaria de tentar obter uma de nível superior, vista em primeiro lugar.Por exemplo, uma coisa que eu notei é que o Clássico O ASP foi horrível sobre chamadas de função.Você seria a leitura através de algum código e encontrar uma chamada para uma função com nenhuma pista onde podem ser implementadas.Como resultado, o código ASP Clássico tendiam para ter longa funções e scripts para evitar os desagradáveis saltos.Eu me lembro vendo uma função que impressos para 40 páginas!Análise em linha reta através de que a quantidade de código não é divertido.

Eu realmente tive este desprazer de trabalhar com código legado um pouco, então eu tenho uma decente alto nível de compreensão do sistema.Você está certo sobre a função do comprimento, existem algumas rotinas (mais eu refatorado para baixo em muito menores), que são de 3-4x enquanto qualquer uma das páginas aspx/auxiliar de classes/Realiza no novo site.

Uma vez eu encontrei um .Net app que foi portado a partir de ASP.A .páginas aspx foram totalmente em branco.Para renderizar a INTERFACE do usuário, os desenvolvedores usaram StringBuilders o código e, em seguida, fez uma resposta.escrever.Esta seria a maneira errada de fazer isso!

Uma vez eu encontrei um .Net app que foi portado a partir de ASP.A .páginas aspx foram totalmente em branco.Para renderizar a INTERFACE do usuário, os desenvolvedores usaram StringBuilders o código e, em seguida, fez uma resposta.escrever.Esta seria a maneira errada de fazer isso!

Vi-o feito de outro jeito, o código de página estava em branco, exceto a de declaração de variáveis globais, em seguida, o VBScript foi deixado em ASPX.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top