CQS заявки - Автоматично генериране на ADO картографиране за преглед на модели?

В момента работя върху MVC 4 приложение. Планирам да внедря шаблон за разделяне на командни заявки, за да подобря производителността и структурата на приложението. Доволен съм от моите команди - които картографират моите модели на изглед към моите обекти, след което използват nhibernate, за да запазят данните ми. Командите и заявките ще се изпълняват от същата база данни.

Малко не съм сигурен кой е най-добрият подход за управление на моите заявки. В последния си проект използвах съхранени процедури за всички мои четения/заявки, след което използвах automapper, за да картографирам моите IDataReaders към моите ViewModels. Това работи добре, но основният проблем беше времето за завъртане на писането на съхранените процедури, а също и когато моделът на домейна се промени, съхранените процедури излязоха от синхрон.

Следователно, в идеалния случай бих искал нещо, което автоматично генерира изгледи или sproc от моите модели на изгледи. Но реалистично погледнато, не виждам начин да направя това. Тъй като Sprocs/Views се нуждаят от известни познания за потенциално повече от една таблица. Така че просто отразяване на свойствата на модела View няма да е достатъчно. Мога автоматично да генерирам таблица за всеки модел на изглед, да прочета това по време на разработката, след това след като домейнът е стабилен и преди да отидем да тестваме, да ги конвертирам в изгледи/sproc?

Така че предполагам, че това, което питам, е:

  1. Някой успял ли е да реши проблема с автоматично генериране на sproc/view, който описах по-горе? (това би бил любимият ми резултат!) Или още по-добре е проектирал много по-грациозно решение!
  2. Или е по-разумно да се прилагат само необработени ADO четения там, където са абсолютно необходими - т.е. търсения, и там да се освободим от необходимостта от много sprocs/views. Но след това все пак отделете моите заявки в отделен канал (но в някои от тях те използват NHibernate, докато други използват моя ADO четец).

(p.s. Разгледах другите въпроси, свързани със stackoverflow CQS, и се надявам, че моят е достатъчно различен, за да оправдае този въпрос)


person jonho    schedule 01.06.2013    source източник


Отговори (1)


Какво решават за вас съхранените процедури? Защо не можете да използвате NHibernate и за четене? Толкова ли са лоши заявките, които NHibernate произвежда?

Ако производителността на четенията е от решаващо значение за вас и формата на вашите модели на изглед е много различна от начина, по който съхранявате модела си - което прави процеса на денормализиране към модел на изглед твърде тежък, за да се извършва в движение, може да се наложи да помислите за пълно разделяне на четене и запис .

Когато пишете нещо, можете да повдигнете събитие - често направено асинхронно - на което абонатите, които слушат, могат да съхраняват данни на readside по такъв начин, че да е оптимален за четене (близо до формата на вашия изгледмодел). Това би направило заявките много бързи.

Тъй като една снимка казва повече от хиляда думи..

въведете описание на изображението тук

Можете да прочетете добро въведение в CQRS тук.

person JefClaes    schedule 03.06.2013
comment
исторически сме имали някои много зле работещи NH заявки, които са се влошили с времето. Така че подходът на Sproc беше да подобри това. Също така съм запален по гъвкавостта, която отделните команди и заявки предлагат. Харесва ми вашето предложение за изравняване на модела на домейна след запазването и писане на тези таблици на заявките. Ще разгледам това. На този етап обаче може просто да е в същия процес. Благодаря. - person jonho; 03.06.2013