Eu tenho uma aplicação X feita em .NET que roda no servidor e uma aplicação Y feito em .NET que roda no cliente (ambos rodam no IIS), porém temos uma necessidade onde a rede possui somente S.O. Linux e precisamos utilizar a aplicação cliente (escrita em .NET).
A aplicação que fica no servidor, fica no nosso data center e pode permanecer em .NET, então pensei em apenas reescrever a aplicação cliente em Java (rodaria no Apache), porém colocando todas as minhas regras de negócio em classes C++ para que eu possa utilizar em ambos os softwares .NET e Java.
Achei na internet o JNI porém estou procurando por uma solução mais simples pois em C++ ficariam apenas as regras de negócio, o que for específico da linguagem (por exemplo, acessar um WS, gravar dados em banco, etc) eu farei na própria aplicação (.NET e Java)
Antes que tudo isso vire uma ENORME dor de cabeça para você e seus colegas de trabalho, reescreva a aplicação do lado do servidor para disponibilizar serviços que podem ser consumidos por qualquer tipo cliente.
D
danilocardia
Então David,
A aplicação do lado do servidor é composta por WebServices SOAP, o problema é que essa nova oportunidade deve utilizar o nosso aplicativo cliente que é feito em .NET…
É possível compartilhar as regras de negócio entre Java e .NET?
Obrigado.
ViniGodoy
Você pensou numa maneira extremamente complicada de resolver um problema simples.
Como o David falou, crie uma camada de serviços. Com um protocolo de rede, fica indiferente o que você usa no cliente. Use um padrão aberto como RMI, Soap ou REST.
JNI deve ser usado no último dos últimos casos. E ainda assim, da maneira mais restrita e encapsulada possível.
Não seria mais fácil adaptar seu cliente para rodar diretamente em Linux sobre ele?
D
danilocardia
Obrigado pela ajuda,
Vamos fazer uma camada de serviço mesmo.
Abraços.
sergiotaborda
danilocardia:
Olá pessoal,
Eu tenho uma aplicação X feita em .NET que roda no servidor e uma aplicação Y feito em .NET que roda no cliente (ambos rodam no IIS), porém temos uma necessidade onde a rede possui somente S.O. Linux e precisamos utilizar a aplicação cliente (escrita em .NET).
Vc precisa rodar .net no linux ? Qual é o problema ? O Mono não serve?
A aplicação “cliente rodaria no apache” ? tem algo errado aqui. O apache é um servidor. Não é um cliente. Colocar as regras em C++ é andar para trás.
Vc pode escrever as regras em java e compilar para .net com IKVM quando usar no .net e manter em java quando usar em java ( se bem que as regras de negocio são apenas do servidor e não precisaria ser duplicado.
Outra opção é usar uma linguagem que roda em ambas as plataformas como Scala, Kotlin ou Fantom. Desta forma o codigo “comum” fica em uma linguagem comum.
Mas me parece que ha uma confusão entre o que é cliente e servidor.
Eu esqueceria esse negocio de C++ e JNI e simplesmente deixaria a logica de negocio no servior e não no cliente. Se for muito necessário, então usaria java para a logica comum e o ikvm para usar essa logica no .net.