Utilizando classes C++ através do Java

5 respostas
D

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).

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)

Alguma dica?

Obrigado.

5 Respostas

davidbuzatto

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

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.

Outra coisa. Já deu uma olhada no projeto Mono?
http://www.mono-project.com/Main_Page

Não seria mais fácil adaptar seu cliente para rodar diretamente em Linux sobre ele?

D

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.

Criado 24 de agosto de 2012
Ultima resposta 24 de ago. de 2012
Respostas 5
Participantes 4