Duda programación c# cliente-servidor

R

Hola,
estoy desarrollando un programa que realiza consultas a una base de datos.
La idea es tener 2 programas un cliente y otro servidor. El servidor sera el encargado de consultar la base de datos y darle al cliente los datos que necesita pero este no tendrá acceso a la base de datos de forma "nativa".
Estuve indagando por la red de cual seria la mejor forma, y encontré el siguiente articulo: https://msdn.microsoft.com/es-es/library/bew39x2a(v=vs.110).aspx

Pero entonces me surgió la siguiente duda: Si yo quiero realizar una consulta bien, pero si quisiera realizar diferentes consultas, como podría llamar a diferentes funciones desde el cliente? Para poder realizar diferentes acciones.
La manera "fácil" es mandar las consultas directamente desde el cliente, pero no quiero realizar dicha acción ya que supondría un posible fallo de seguridad y permitiría consultar datos que no me interesan.

No se si me he explicado con claridad, lo que busco es poder llamar a diferentes funciones de un programa servidor desde un programa cliente.

Simplemente busco un poco de orientación sobre el tema. Gracias.

Soltrac

Yo no usaría sockets, quieres hacerlo demasiado a bajo nivel y estás reinventando la rueda en algo que ya existe y funciona bien.

Usa RESTuf webservices (podrías usar .NET remoting pero ha quedado en desuso con la aparición de webservices).

Puedes montar el servidor en IIS por ejemplo
http://www.topwcftutorials.net/2014/01/crud-wcf-restful-service.html

y los clientes se conecten a él. Si vas a usar exclusivamente c#, puedes poner el webservice en binario para que sea más rápido, pero si quieres usar otros lenguajes para acceder al servidor lo montas en json, xml, o lo q quieras.

Sobre lo que enviar, deberías crear funciones para insert, update, delete, etc. como bien dices, enviar la sentencia select puede parecer cómodo pero bueno, para eso que conecten con la base de datos, ya depende del nivel de seguridad q quieras meter en tu aplicación.

Toda la información que necesites la vas a encontrar en google con "wcf rest c#".

2 2 respuestas
eXtreM3

#2 hace poco he estado trabajando en un actualizador cliente/servidor de una aplicación con su correspondiente base de datos, y me pasó por la cabeza enviar las queries directamente desde la API para que fuesen ejecutadas en cliente. Como bien comentas es más cómodo, pero muy arriesgado de cara a seguridad; así que lo descarté inmediatamente.

1
R

#2 Muchas gracias, había pensado en usar webservices, lo uso en mi trabajo. Pero no he usado los de C, pruebo haber y te digo.
De cara a seguridad, hasta donde puede ver una persona "publica" de la parte de los procesos?
Me explico, en los webservices que he usado, alguien experimentado podría ver el nombre de las funciones, variables que se le pasen al webservices consultando este directamente.
Y quiero asegurarme de que ya que me molesto en hacerlo quiero hacerlo bien.
He estado mirando y no se si usar un servicio SOAP, que da algo mas de trabajo pero es difícil de saltar. Ya digo que tampoco es que entienda de mucho de webserces de c.

Gracias :3

1 respuesta
Soltrac

#4 Por supuesto que es público, pero usar SOAP en vez de REST no va a añadir seguridad. Yo prefiero REST porque envía mucha menos información que SOAP y al final es más rápido, pero por supuesto que puedes usar webservices en SOAP si te sientes más cómodos con ellos.

Para la seguridad tendrás que crear un sistema de seguridad. Existen muchas implementaciones por ahí, por ejemplo Oauth. Al fin y al cabo el cliente debe identificarse en el sistema.

Para que la comunicación vaya encriptada por supuesto tendrás que añadir al servidor IIS un certificado SSL por ejemplo.

1
eXtreM3

También puedes enviar y recibir los datos mediante algún cifrado tipo RSA.

1
R

Gracias a los 2 he estado pensado y usar el método Rest que lo veo bastante "sencillo".

Lo meteré por SSL y le meteré claves publicas/privadas + encriptación fija en hexadecimal + etiquetas de inicio fin de sentencias.

Muchas gracias a los 2 por ayudarme a resolver el problema de comunicación que tenia :D, ya postearé por qui los avances :P

1 respuesta
MTX_Anubis

#7 SSL ya va encriptado

Si lo haces HTTP Rest (que en la actualidad cuando se refiere a Rest suele ser http rest) no hacen falta etiquetas ni leches, ya te lo da HTTP

Usuarios habituales