Не знаком с vuejs, но, думаю, так, на входе кодируете html и сохраняете в базу. На выходе декодируете html и отображаете. То есть на входе все и должно просиходить.
Я думаю, вы слишком заморачиваетесь. Просто дробите функционал пока не упретесь. А потом уже смотрите, что плучилось и что можно улучшить. А граничные условия можно и в самом лифте обрабатывать.
WhiteNinja: А зачем вам IFooRepository в IUnitOfWork? Но, вообще, вы можете инжектить FooRepository, используя любой DI (ninject, autofac). По второму вопросу, вы можете обойтись без необязательного параметра. Просто сделайте новый метод, к примеру, SaveChanges в сервисе BarService и вызывайте _uof.Commit() там, а в CreateFoo уберите вызов Commit(). Если же надо и там сохранять, то может также создать метод SaveChanges и в этом сервисе.
Сергей: Спасибо за ответ. 3. На сервер отправляется id того чекбокса у которого выставили или убрали галочку. Я вот не понимаю, даже если очередность команд не гарантирована, то RemoveItem все равно не удалит ничего лишнего. Там простая логикая. По пришедшему id ищется сущность в том мэнеджере (который работает с коллекцией в сессии), далее эта сущность подставляется в во внутрениий метод Romove листа. Ну то есть в сессии хранится List. То есть, если я верно понял, то неважно какой поток и выполняет remove, если удаляются, скажем, только один определенный id, то другие сущности в коллекции не должны удалятся. То есть если в коллекции было 5 элементов, и пришел запрос на удаление элемента с id=1, и первый поток выполнил remove(1). В коллекции осталось 4 элемента. Потом опять пришел запрос на удаление id=1 и его выполняет второй поток, то неважно же сколько элементов в коллекции, он либо удалит еще раз по id=1, если в коллекции было 5, либо просто ничего не удалит так как в коллекции уже нет элемента с id=1, если в коллекции было 4 элемента. Поясните этот момент, пожалуйста.
Сергей: Сергей, спасибо за разъяснения про потоки и запросы. То есть, как я понял есть набор потоков и есть очередь запросов. Если текущий запрос занят, а сейчас нужно обработать очередной запрос, то берется другой поток из набора потоков и он обрабатывает этот запрос, так? Есть небольшие уточнения. Метод AddItem добавляет item в коллекцию только в том случае, если такого item нет в коллекции. А метод RemoveItem удаляет только по пришедший item. То есть ничего лишнего эти методы не добавляют и не удаляют. К примеру, если на клиенте я много раз подряд нажму галочку и сниму галочку у одного и того же элемента, то есть, аякс команды будут add/remove/add/remove/add/remove и.т.д (только данные этого элемента отправляются на сервер), то в итоге у меня будет только один элемент в коллекции. Хотя, как я уже сказал, методы AddItem/RemoveItem ничего лишнего не удаляют и не добавляют. Это же не влияет выполняются эти методы в разных потоках или в одном? Или же влияет?
Сергей: На таких статических "менеджерах" написано ядро системы ну и вся бизнес логика. И, походу, начальство не собирается перерабатывать ядро в ближайшее время. По второму вопросу, там просто в классе менеджере реализованы методы AddItem и RemoveItem которые работают с коллекцией, которая хранится в сессии. Больше никакой логики там нет. Объясните, пожалуйста, что вы подразумеваете под параллельной обработкой? По третьему вопросу: Есть доработанная гридвьюха, которая вот таким вот образом глючит). Но в ближайшее время, похожу, ее тоже никто не будет переписывать. Поэтом сейчас задача залатать баги. Я с вами согласен, что лучше это все сделать на клиенте, а потом результирующий набор отправлять на сервер, но тут, как я уже сказал, не все от одного меня зависит).
Владислав Хорошев: Сначала поступите еще проще. Создайте дефолтовый проект MVC. Далее идете в папку Controllers и находите контроллер HomeController.cs. В нем находите экшн метод public ActionResult Index() и вот в нем пишите свою логику. Так как это проект дефолтовый, то он у вас по умолчанию спокойно соберется и запустится. Вам ничего не надо там писать. Как только убедились, что проект запускается, приступайте к написанию логики парсера. Тут надо почитать про регулярки и потренироваться вытаскивать значения между тегами. Искать нужные теги и все такое. Классы сразу не нужно писать. Просто кодом в методе public ActionResult Index() все пишите ставьте брейкпоинт и смотрите какие значения у вас в переменных и как работает ваш код. Читайте stackoverflow на предмет parser/web scrapping/ parse html/webclient parse html
Когда уже логика будет работать, то можете все аккуратно разбросать по классам или еще куда вам там надо).