Nano Hash - криптовалюты, майнинг, программирование

Добавьте Blazor на стороне клиента в существующее приложение ASP.NET MVC5.

Имея существующее приложение ASP.NET MVC5, которое невозможно переписать за один раз, как мы можем начать внедрение (на стороне клиента) Blazor для замены частей этого приложения?

РЕДАКТИРОВАТЬ: Нам потребуются страницы, части которых являются MVC5, а другие части - Blazor, где это будет работать без проблем для конечного пользователя.

Из того, что я нашел до сих пор, лучшим (и единственным?) вариантом было бы разместить Blazor на другом сайте и включить его в качестве iframe на исходный сайт, используя взаимодействие JavaScript для передачи данных между двумя сайтами.

Я не нашел никаких примеров для этого, пожалуйста, дайте мне знать, если вы знаете о них или у вас есть другая идея, которая может сработать!


Ответы:


1

Просто хотел обновить этот вопрос тем, что мы нашли в качестве удовлетворительного решения. Мы разработали рабочее доказательство концепции этого способа объединения Blazor и любой другой клиентской технологии. Он использует отдельный IFrame для приложения Blazor и API JavaScript PostMessage, чтобы избежать проблем с безопасностью (тот же источник). Это на самом деле работает довольно хорошо, и это хороший способ заменить части старого приложения MVC5 частями, написанными в Blazor. Надеюсь, скоро я сделаю краткий обзор этого в блоге.

15.06.2020
  • Так где тот пост в блоге? 19.02.2021
  • @IanKemp, нет времени :( Но, надеюсь, подсказки, данные в ответе, помогут людям начать работу. Самая важная часть — это javascript API PostMessage с небольшим количеством JS как в главном окне, так и в приложении Blazor в iframe. Мы теперь это работает в производстве, и пока единственная проблема связана с (очень) старыми браузерами и длительным начальным временем загрузки приложения Blazor для людей с медленным соединением.Чтобы облегчить проблему, можно начать загрузку битов Blazor в скрытом iframe на первой странице, ЕСЛИ страница, на которой Blazor iframe не является первой страницей, к которой будут обращаться пользователи 16.06.2021

  • 2

    iFrame кажется неуклюжим, но, насколько мне известно, приложение MVC 5 не может ссылаться и использовать приложение Blazor WASM.

    Не могли бы вы просто настроить третье прокси-приложение MVC для управления маршрутизацией и состоянием между двумя приложениями? Вы можете абстрагировать свою бизнес-логику из текущего приложения MVC в библиотеку .Net Standard, которую могут использовать оба проекта.

    И если бы они оба использовали один и тот же внутренний API, вам не нужно было бы много делать, чтобы начать перенос. Как только все было перенесено в новое клиентское приложение Blazor, вы могли убить приложение MVC и прокси.

    Это было бы похоже на реализацию шаблона Strangler для перехода от монолитного веб-API к микросервисам.

    13.11.2019
  • Зачем MVC5 вообще ссылаться на приложение Blazor? Приложение Blazor будет работать на стороне клиента, как и любое приложение Angular/React/Vue/VanillaJS. Серверная часть значения не имеет. 13.11.2019
  • Я не тот, кто задал исходный вопрос. 13.11.2019
  • Да, Мейсон, вы правы в том, что серверная сторона не имеет значения, но моя точка зрения заключалась в том, что возможность ссылаться на WebAssembly была бы неплохой функцией - немного похоже на возможность ссылаться на класс Razor, но это невозможно. . 13.11.2019
  • Третье прокси-приложение MVC звучит интересно. Есть ли у вас какие-либо примеры или статьи, которые помогут мне начать его реализацию? Я отредактировал свой вопрос, указав, что мне понадобится страница, состоящая из частей как исходного приложения MVC5, так и Blazor. 14.11.2019
  • С вашим редактированием, я не думаю, что у вас будет большой выбор, кроме как использовать iFrames. Прокси действительно работает, только если вы можете создать приложение MVC, которое передает маршрутизацию двум приложениям, размещенным на разных серверах. У вас будет устаревшее приложение, а затем приложение blazor, но прокси-сервер будет управлять маршрутизацией. Но поскольку вам нужно смешивать компоненты страницы, вероятно, вам подойдет iFrame. 15.11.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..