Pergunta

Eu estou tentando migrar um aplicativo simples WinForms para um aplicativo web ASP.Net. WinForms aplicativo é basicamente apenas uma camada de apresentação para uma aplicação complexa simples C, e interage com código legado através de interoperabilidade. Tenho experiência modesto em ASP.Net, JavaScript, jQuery, e muita experiência em WinForms e interoperabilidade, então eu sei o básico, eu só preciso tomar uma decisão design.

A forma como o aplicativo parece agora é esta:

  1. Há um monte de legado C (nem mesmo C ++) código que pode ser alterados e recompilados, mas portabilidade não é uma opção. Esta é a camada de dados de negócios +, chamar-lhe o que quiser. Vou referir a ele como código legado .

  2. Quando iniciado, o código legado instancia um servidor COM que é utilizado para apresentação e interação do usuário. Apresentação de dados é serializada e enviada para este objeto COM ( "Eu estou enviando-lhe alguma saída." ), e interação com o usuário é conseguido através de votação cíclico ( "Você tem alguma entrada para mim ? "). Não a solução mais bonito, mas simples como o inferno.

  3. COM objeto é realmente um .NET 2.0 WinForms App expostos como COM. Este aplicativo também expõe algumas funcionalidades para outros aplicativos .NET através de Remoting, mas isso não é tão importante também.

Embora o sistema é bastante complicado, WinForms aplicativo é realmente usado apenas para a interação, por isso é muito fácil mudar para web. O que eu não tenho certeza que é o que é a melhor maneira de fazer o servidor web <---> interação código legado.

A primeira coisa que vem à minha mente (pois já tenho Remoting implementado) é expor a funcionalidade WinForms para a parte Web através de locais .NET Remoting, tornando-se agir como uma espécie de um proxy entre o código legado e aplicativo web. Eu realmente só precisa da parte de comunicação, sem formas. Nesse caso, app web teria que acessar esta funcionalidade através de Remoting (localmente).

É aconselhável ter aplicação web comunicar localmente para outro aplicativo usando Remoting? Além disso, eu poderia mudar o aplicativo para um serviço do Windows, mas eu ainda vou ser capaz de expor sua funcionalidade através de COM para código legado?

Qual seria a melhor maneira de conseguir isso? Note que eu também pode fazer algumas modificações no código legado, se necessário.

Foi útil?

Solução

Eu acho que um aspecto importante para você é o único userness de um aplicativo WinForms eo multi-user-sessionness da web.

10 anos atrás eu estava envolvido em vários projectos web onde correu a lógica de negócios como objetos COM (VB6) em MTS e mais tarde COM +. Deixando esses objetos COM pertencer a sessões foram um não-não, porque se os usuários vêm e deixar muita coisa que você pode acabar com um monte de recursos amarrados em objetos COM não utilizados, mas vivos.

Gostaria de sugerir que você olhar para executar os objetos COM em Serviços de componentes. Pode não ser a solução, mas vale a pena explorar.

Colocar objetos COM em Serviços de Componente é o mais próximo que você pode começar a escrever um serviço do windows que é alcançável através de COM - algo que eu iria tocar para todo o x em y: onde x é o alimento favorito e y é o lugar favorito

.Net Remoting é maravilhoso, mas principalmente interessante como um dispositivo de comunicação. Eu não sei se você estiver indo para dividir isso em muitos servidores, que soa como uma aplicação interna da empresa. Eu não tenho detalhes suficientes para ser mais específico.

Outras dicas

Parece que você deve tentar olhar para longe simplesmente reutilizar seu código WinForms simples sobre infra-estrutura ASP.NET. Isso significa que você provavelmente não precisará re-escrever o código UI, mas apenas usá-lo como está em algumas infra-estruturas emulative de WinForms mais de web.

Por favor, veja a minha sugestão imediata de um quadro que faz exatamente isso: http://www.visualwebgui.com/landing/wow.aspx

Espero que isso ajude ...

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