Я не вижу здесь никаких явных проблем с дизайном.Чтобы обратиться к одному конкретному пункту в вопросе:
я должен вместо этого сделать это в модели и вернуть эту строку непосредственно из модели
Вы имеете в виду, если модель предоставляетJSON-сериализованная строка?Я бы сказал нет.Модель является просто представлением бизнес-концепции и содержит логику, которая действует на эту концепцию.JavaScriptSerializer
в основном создает представление об этой модели.Это логика пользовательского интерфейса и принадлежит именно там, где она есть, в коде представления.Модель не должна заботиться о том, как ее рассматривают, она просто беспокоится о состоянии того, что она представляет.
если я переписываю свой BLL в мою модель
I 'Я не уверен, что вы спрашиваете здесь.Модели должны содержать бизнес-логику, это точно.Если ваш BLL - это просто набор утилитарных методов, которые используют модели в качестве чистых DTO, то вы, возможно, захотите перейти к переносу этой бизнес-логики в сами модели.Но трудно сказать с помощью представленного здесь кода.
Когда я вижу MyObject.GetById(id)
, я представляю, что GetById
- это просто статический фабричный метод в модели MyObject
, который вызывает любые необходимые зависимости, такие какхранилище DAL (может быть предоставлено не только параметрами метода, но иными способами, но, надеюсь, не внутренне созданным), и возвращает экземпляр MyObject
, что выглядит нормально.Я сам часто использую этот же шаблон, иногда экспериментируя с тем, как я называю методы, чтобы сделать все это более плавным.