У меня есть проект, над которым я недавно начал серьезно работать, но у меня была небольшая дискуссия о дизайне с другом, и я думаю, что он затронул несколько интересных моментов.
Проект разработан с учетом высокой масштабируемости илегко обслуживать бизнес-объекты совершенно самостоятельно.Простота масштабируемости вынудила некоторые из проектных решений, которые препятствуют начальной эффективности проекта.
Базовый дизайн выглядит следующим образом.
Существует «ядро», которое написано в ASP.NET MVCи управляет всеми взаимодействиями JSON API и HTML в Интернете.Однако он не создает и не управляет «бизнес-объектами», такими как «Посты», «Участники» и т. Д. Все они обрабатываются в своих отдельных веб-службах WCF.
Идея заключается в том, чтобы по-настоящему просто использовать отдельные элементы управления, которыеиспользовать объекты управления для извлечения бизнес-данных / объектов из веб-сервисов.Это, в свою очередь, означает, что ядро может быть многопоточным и одновременно вызывать элементы управления на странице.
Каждый веб-сервис будет управлять соответствующим бизнес-объектом и своими данными в БД.Любая специфическая для бизнеса обработка также будет здесь, например, сопоставление данных в таблицах с полезными структурами данных для использования в элементах управления.Весь объект будет передан ядру, и ядро должно либо извлекать, либо устанавливать бизнес-объект только один раз за транзакцию.Если в будущем понадобятся операции с несколькими факторами, мне потребуется сделать эти функции доступными.
Кроме того, веб-службы могут выполнять свое собственное независимое кэширование и в зависимости от запроса и своих собственных знаний в своей конкретной области (например, пользователи) могут вернуть вновь созданный объект или предварительно созданный.
После разговора с моим другом у меня возникают следующие вопросы.
Я ценю этот WCFне так быстро, как вызовы DLL или что-то подобное.Но сколько будет накладных расходов на то, что вся система основана на них?
Создание потока может быть дорогостоящим.Это будет стоить дороже, чем просто вызывать все элементы управления один за другим?
Существуют ли какие-либо другие врожденные ямы, которые вы можете увидеть с этим дизайном?