Если бы вы занимались всерьёз и долго ентерпрайз-девелопментом, то знали, что что с точки зрения проекта, что с точки зрения продукта так не бывает.
1. Клиент и сервер девелопается параллельно. Заказчик хочет видеть результаты походу. Как результат - итерации клиента и сервера совпадают.
2. На основе итеративного процесса, с постоянно меняющимися требованиями постоянно меняются интерфейсы коммуникации клиента и сервера. Мало-мальски серьёзный рекваремент проходит через все лейера.
Да. В результате в итоге могут получиться компоненты, которые теоретически заменяемы, как блоки. Но..... на 100% сразу так не бывает. Мы как-то писали .NET-клиента к веб-сервисам на Java, которые изначально были написаны для Java-frontend'а: модифицировать сервер всё же пришлось из-за массы несовместимостей.
Всё же озвучу следствия из пунктов 1,2 (они были за кадром в вопросе из предыдущего поста): В случае гетерогенного решения (скажем, клиент на .NET, сервер на Java), в команде должны быть разные люди, меньше взаимозаменяемости, дольше (во много раз!) цикл разработки-отладки-тестирования.
А реалии таковы, что клиента под Win кроме как на .NET сейчас писать не на чем.
По поводу платформ для бизнес-логики и СУБД. Это нефункциональные требования. Нормальному заказчику должно быть всё равно, на какой именно аппаратуре у него работает решение, он должен стремиться минимизировать в итоге свои суммарные затраты (TCO). Да, для мелких систем бывают случаи, когда заказчик говорит "хочу MSSQL и всё тут", потому что у него, скажем, уже куплен MSSQL и он не хочет тратиться на Oracle, в таких случаях, конечно же, хорошо если мы не завязались на базу (а завязываться на неё для крупных систем, конечно же, приходится)
Bookmarks