2010-12-29 10 views
9

Soy un desarrollador de ASP.NET MVC que acaba de comenzar con mi primer gran proyecto sobre raíles. Sin embargo, estoy confundido acerca de dónde ubicar su lógica comercial. en ASP.NET creo una biblioteca que contiene servicios (diseño impulsado por Dominio) que maneja la lógica de negocios, he escuchado que rails usa un concepto de controlador skinny modelo flaco pero tengo algunos proyectos en ASP.NET que agregan toda la lógica al controlador crearía un gran lío, ¿hay alguna otra manera?¿Dónde entra la lógica comercial en los rieles?

+1

¿qué quieres decir con "lógica de negocios"? – sethvargo

+0

también puedes intentar crear módulos y ponerlos en tu directorio lib – stephenmurdoch

Respuesta

12

Vaya con el concepto de FatModels y SkinnyControllers. Sus modelos deben saber cómo se comportan y qué deben hacer.

Cuando sus modelos estén demasiado gordos, extráigalos en módulos reutilizables e inclúyalos en su módulo.

Usted puede probar fácilmente el comportamiento de los modelos que utilizan RSpec (o test/unit o la debería). Luego puede probar que la aplicación se comporta correctamente con Cucumber.

+3

¡Hola lectores de Future! Lo anterior tiene sentido, pero en lugar de seguir engordando tu modelo, echa un vistazo a http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ –

+0

I encuentra https://github.com/orgsync/active_interaction muy prometedor. –

1

Puede poner la lógica de negocios en cualquier lugar que desee (incluso en las vistas, aunque esa es una mala idea).

Yo diría que si la lógica está vinculada a un objeto del mundo real, entonces póngalo en el modelo. De lo contrario, use el controlador. Pero depende de usted determinar cómo hacerlo para su aplicación. Los modelos son para modelar cosas, y los Controladores son para controlar cosas.

5

"Business Logic" o algunos podrían llamarlo "Domain Logic" no pertenece a ningún lugar cerca de Rails y/o su proyecto .NET MVC. Rails y MVC deberían depender de su Dominio, no al revés. Recomendaría leer sobre la arquitectura de cebolla de Jeffery Palermo o ver "Arquitectura de los años perdidos" de Robert Martin. (Creo que esa es la charla de todos modos). Probablemente haya más recursos que eso, pero te agradecerás más adelante por tratar tanto a Rails como a .NET MVC como los frameworks de terceros que son, y no como la casa principal de tu aplicación.

+5

he visto la charla y he escuchado esta idea expresada muchas veces, pero nunca he visto un ejemplo concreto o una demostración de cómo lograr esto. como principiante, tiene sentido en principio, pero realmente no puedo conceptualizar cómo llevar esto a la práctica. ¿Tiene un ejemplo de una aplicación de rieles que sigue esta práctica que yo podría mirar, o un artículo con un ejemplo más concreto? –

2

creo que este artículo de blog proporciona una buena visión general de una estrategia de incorporar el diseño de dominio impulsada con en el marco rieles: http://www.smashingboxes.com/domain-logic-in-rails/

TL; DR

Refactor sus modelos carriles clásicos en los repositorios, y utilizar una capa de fachada en los controladores para interactuar con su modelo de dominio.

Estoy luchando con esto un poco yo mismo, y por mucho que el patrón de controlador de grasa parece prevalecer, cualquier cosa "grasa" en el software parece ser un olor, violando la responsabilidad individual.

Cuestiones relacionadas