2009-07-23 19 views
8

Soy nuevo en la configuración de WCF, lo tengo funcionando en mi proyecto, pero tengo como 5 diferentes 'servicios' en mi proyecto WCF y me pregunto si estoy haciendo lo correcto . Mis servicios por ahora son 1-1 para mis tablas de base de datos. Me acaban de tener algo como:WCF un servicio o servicios múltiples

public class Projects : IProjects 
{ 
    public List<Project> GetAll() 
    { 
     return (from p in Connection.Data.Projects 
       select new Project {ID = p.id, Name = p.name}).ToList(); 
    } 

    public Project GetByID(int id) 
    { 
     return (from p in Connection.Data.Projects 
       where p.id == id 
       select new Project {ID = p.id, Name = p.name}).First(); 
    } 

    public Project AddProject(string name) 
    { 
     var project = new Data.Projects {name = name}; 
     Connection.Data.AddToProjects(project); 
     Connection.Data.SaveChanges(); 

     return new Project {ID = project.id, Name = project.name}; 
    } 

    public void DeleteProject(int id) 
    { 
     var project = (from p in Connection.Data.Projects 
         where p.id == id 
         select new Project {ID = p.id, Name = p.name}).First(); 

     Connection.Data.DeleteObject(project); 
     Connection.Data.SaveChanges(); 
    } 
} 

tengo una clase similar para cada una de las mesas en mi proyecto. ¿Debo encontrar una manera de usar 1 conexión de servicio con sub clases o mantenerlo como 1 clase de servicio por tabla?

Respuesta

8

"¡Depende!" :-) La respuesta estándar para todas las preguntas sobre informática y programación :-)

No veo nada de malo en tener esos 5 servicios separados; en realidad, no se gana nada al combinarlos en un solo servicio, Yo diría que. Preferiría mantenerlos separados y "lean'n'mean".

Si tiene cinco servicios separados, también puede administrar cosas como permisos de acceso para cada uno por separado, p. Ej. deje que ciertos grupos de usuarios usen un servicio, mientras que no otro.

De nuevo: creo que lo estás haciendo bien - No veo ninguna razón convincente o beneficio de tener un gran servicio frente a cinco más pequeños, más ágiles.

Ahora que lo pienso, el único cambio real que podría sugerir es tratar de diseñar sus servicios para que se ajusten mejor a lo que su aplicación quiere hacer (es decir, las operaciones que espera de su aplicación y sus servicios a manejar), en lugar de modelarlos demasiado cerca de la base de datos. Intente pensar "orientado a tareas" o en términos de operaciones, en lugar de la tienda subyacente donde almacenarán sus datos.

Marc

+1

impresionante, gracias hombre! –

+0

De acuerdo en el enfoque basado en tareas. Mejor no pensar en un Servicio como un repositorio sino más como un IMO de controlador de caso de uso. Sin embargo, señalaría que aunque tener 5 servicios separados es probablemente una mejor encapsulación, a veces aumenta la sobrecarga de configuración/mantenimiento/implementación. No siempre, pero vale la pena tenerlo en cuenta. – Stimul8d

Cuestiones relacionadas