Насколько я понимаю из небольших приложений MVC, у вас есть внешний интерфейс, который имеет дело с HTML, JS, jQuery и т. Д., И у вас есть внутренний интерфейс, который состоит из ваших контроллеров и моделей.
Однако, когда я общаюсь с разработчиками из крупных компаний, они часто упоминают наличие уровня внешнего интерфейса и уровня внутреннего интерфейса. Поэтому иногда я слышал, что у них есть внешний интерфейс с C # и внутренний с Java. Зачем какой-либо компании нужен бэкэнд и фронтенд на разных языках? Помогает ли это масштабированию больших сайтов лучше?
Когда люди говорят, что их внешний интерфейс построен на C #, означает ли это, что они используют инфраструктуру для внешнего интерфейса (например, .NET) и дополнительную структуру на внутреннем сервере (например, Spring)? Или это означает что-то совершенно другое?
источник
Ответы:
«Front-end» и «Back-end» могут быть туманными терминами, особенно в корпоративных приложениях. «Front-end» может означать пользовательский интерфейс или приложение целиком. «Back-end» может использоваться для обозначения внутренних устройств, или это может быть база данных или внешние службы, которые используются. То, что означают термины, часто полностью зависит от того, с кем вы говорите. Так вы, возможно, спросили: "Эй, что ты имеешь в виду под этим?"
Когда вы приступите к разработке крупных предприятий, у вас будет много и много команд, пишущих много-много кода. Эти команды будут разрабатывать на разных языках, используя разные парадигмы, из разных мест. Часть этого кода должна работать вместе, а большая часть - нет.
Я работаю в большом банке. Моя команда разрабатывает наше приложение на C #. Все это. Но мы используем веб-службы, которые в основном написаны на Java, и эти службы общаются с другими службами, которые общаются с другими службами, которые получают данные учетной записи в соответствующие хранилища данных и из них, и кто знает, какие языки используются с ними.
Короткая версия: люди используют инструменты, которые делают работу.
источник
Я думаю, вам нужно немного расширить вопрос: почему крупные программные проекты используют более одного языка программирования?
Есть много возможных ответов, наиболее заметными из которых являются:
Факторы производительности практически никогда не являются причиной, за исключением крайне критически важных приложений, таких как высокочастотная торговля - в этих областях может быть полезно написать критически важный механизм ядра на языке с лучшей производительностью во время выполнения (скажем, C ++), но поддерживающие системы (пользовательский интерфейс, отчеты и т. д.) на более высоком уровне, например Java или C #.
источник
Это относительно в крупном предприятии.
В моей компании стек примерно
Поэтому для команды веб-разработчиков интерфейс - это HTML / JS, а бэкэнд - это Java. Для предприятия внешний интерфейс - Java, а внутренний - .Net.
Фактически уровень .Net должен работать с приложением COBOL / UNIX для выставления счетов и утверждений, поэтому в этом аспекте .Net является внешним интерфейсом, а COBOL - внутренним.
И да, как уже упоминали другие, у нас есть команды разработчиков UX, разработчиков HTML / JS, разработчиков Java, Web Middleware, разработчиков .Net, разработчиков SQL, разработчиков COBOL, работающих с каждой частью стека.
На самом деле на любом достаточно крупном предприятии это черепахи на всем пути вниз.
источник
Запутанная семантика
Это проблема семантики. Когда кто-то говорит о клиентском интерфейсе .NET или Java-разработчике, он обычно говорит о человеке, который много знает о языках шаблонов и, возможно, фреймворках, которые никогда не следует использовать больше, например, о веб-формах, которые использовались для того, чтобы попытаться скрыть разбрасывание вещей через стену http (т.е. «веб-разработка») от разработчиков приложений, которые не хотели или, по крайней мере, предполагали, что не хотят узнавать обо всем этом дерьме. В случае смешанных .NET и Java, я не уверен, но я мог только догадываться, что в смысле MVC у них есть Java, действующая для всех вещей бизнес-модели, и .NET, обрабатывающая все остальное, что будет лучше описано как "средний уровень", но все равно все это на стороне сервера.
Реальное разделение - это то, что происходит на сервере и то, что происходит на клиенте или в браузере. Вы можете легко связать создание HTML-кода для отправки или представление внешнего интерфейса с «разработкой внешнего интерфейса», поэтому я предпочитаю избегать путаницы, используя термины «клиент» и «серверная сторона» вместо внешнего и внутреннего, когда обсуждаю то, что я обычно делаю, (обычно работа на стороне клиента).
Языки на стороне клиента
Причина, по которой мы используем тот же набор языков в браузере, заключается в том, что браузер находится на приемной стороне, и по большей части (в настоящее время это было в основном мертвым сопротивлением со стороны Microsoft и Adobe), никто не хочет отсылать три различные версии одной и той же клиентской стороны, чтобы удовлетворить каждого потенциального клиента или требовать установки собственного плагина для работы в Интернете. Кроме того, эти три языка фактически инкапсулируют проблемы на стороне клиента, что позволяет нам быстро создавать и изменять внешние интерфейсы веб-приложений, поддерживая слабую связь между структурой документа, тем, как все выглядит и как все ведет себя. Вы можете изменить один без изменения двух других довольно легко.
Языки на стороне сервера
Причина, по которой у вас есть несколько миллиардов вариантов в сети на стороне сервера, заключается в том, что вы можете. Это твой сервер. Все, что нужно сделать, это общаться через http / ssl, а остальное зависит от вас. Кстати, JavaScript теперь является опцией, но это поднимает интересный вопрос. Если вы по-прежнему относитесь к веб-приложению так, как будто это действительно два приложения по обе стороны этой стены HTTP. Я придерживаюсь мнения, что да, да, ты должен, и я люблю Node.js.
источник
Короче говоря, когда у вас есть большие проекты, у вас также есть несколько команд разработчиков, работающих над проектом, и эти команды, как правило, специализируются на разных уровнях приложения.
Если вы сосредоточены на веб-интерфейсе и у вас есть гибкость в выборе реализации, у вас гораздо больше шансов использовать целевой язык веб-интерфейса, такой как JScript или Flex, а не C #.
Точно так же, если вы находитесь в конце приложения для хранения транзакционных данных и имеете дело со многими одновременными действиями одновременно, обычно используются специализированные языки, такие как erlang. (Или сторонние продукты, которые частично реализованы на этих языках)
источник
Причиной является бизнес-балансирование рисков.
Допустим, вы гигантский работодатель в одном городе. Вы должны нанять много разработчиков, чтобы создать множество различных сервисов. Допустим, ваша первоначальная оценка такова, что Lanuage A наилучшим образом соответствует вашим интересам, и вы хотите начать с него.
Если вы посвятите себя одной технологии, вы можете высушить кадровый резерв. Вы уверены, что хотите нанять достойного парня из Langauge A, когда рядом со звездой «Language B»? Что если завтра фреймворки Langauge A получат поддержку от основного разработчика? Что если завтра появится удивительный язык C, стоит ли его игнорировать, потому что вы посвятили себя языку A пять лет назад?
В идеале вам нужна гетерогенная система с разными языками, которая отражает текущие кадровые резервы и технологические тенденции. Вы хотите, чтобы этот баланс медленно изменялся, поскольку кадровый резерв и тенденции меняются, так что в любой момент все ваши системы работоспособны, и вы можете нанять людей для их обслуживания.
... и это то, что делают компании.
источник
Полезно думать о своем внешнем и внутреннем интерфейсах как об отдельных приложениях, которые используют один и тот же источник данных.
Даже для небольших сайтов вы можете думать о внешнем интерфейсе как о том, с чем взаимодействует клиент, а о конце - как о CMS. Это могут быть отдельные приложения MVC. Для внешнего интерфейса по-прежнему нужны модели и контроллеры - в конце концов, контроллер - это точка входа для посетителей вашего сайта, а модели будут способом, которым вы будете передавать данные из своей базы данных пользователю.
Я предпочитаю использовать Django / Python в качестве CMS на серверной части и использовать Rails, CodeIgniter или Spring MVC на серверной части. Часто нет выбора; у клиента уже есть какой-то устаревший сайт, настроенный на каком-то языке в клиентской части, и ему просто нужно решение CMS. Большинство клиентов даже не знали бы, что CMS использует другой язык или структуру, если им не сказали.
На самом деле нужно найти то, что лучше всего подходит для сайта, который вы хотите создать. Входным и задним частям действительно нужно только совместно использовать базу данных, поэтому, пока они оба могут работать с этим, не стесняйтесь выбирать лучшие варианты для поставленной задачи.
источник
Примером внутреннего языка является PHP, который является языком сценариев. Когда запрашивается страница PHP, сервер читает код PHP и отображает разметку. Результатом является HTML, который отправляется вам. Вы, просмотрщик веб-страниц, никогда не видите ни одной строки кода PHP. Если предположить, что администратор веб-сервера выполнил свою работу правильно, сервер не сможет и не сможет показать вам реальный код PHP. Он анализируется, когда страница обслуживается, и результатом этого перевода кода является HTML.
источник