Todas las cosas buenas en las que pensar, pero a medida que comiences por este camino, estoy seguro de que tendrás más preguntas que respuestas la mayor parte del tiempo.
Supongo que está utilizando Windows Forms cuando menciona Desktop y Linq-To-SQL, lo que le dará algunos desafíos para implementar algo como un patrón MVP.
Si bien hay frameworks MVP preconfeccionados para WinForms (MVC# viene a la mente), si no está desarrollando aplicaciones a gran escala, entonces puede comenzar con cuidado e implementar algunos de los conceptos usando su propio código.
La excelente serie de artículos de Jeremy Miller Build Your Own CAB es un gran recurso aquí, ya que puede sacar algunas de las primeras ideas de allí y obtener una separación de preocupaciones entre sus formularios (Presentación) y lógica comercial (Presentadoras y clases de servicio))
Jeremy usa principalmente un diseño de Controlador Supervisor en su trabajo (que me encanta), pero vale la pena mirar otros patrones como Passive View y Model-View-ViewModel (que está integrado en la forma de trabajar de WPF, así que vale la pena comprensión), para ver con qué se siente más cómodo.
En cuanto a su pregunta sobre clases de servicio o repositorios, creo que los dos niveles principales de lógica que querría son las entidades Presenter o ViewModel, y luego las entidades de Servicio debajo de las que pueden contener cosas como su Linq-To- Consultas SQL.Por lo tanto, es posible que ya tenga mucha lógica para su capa de Servicio allí, pero se trata más bien de refaccionarla en una forma consistente.
sí, estoy buscando consistencia. Especialmente, para obtener código linq-a-sql en clases de servicio (el código linq se extiende por todas partes) –
Ya he refactorizado un par de formularios al estilo MVP. –