Лучший способ интегрировать PHP с asp.net / asp.net-mvc

По некоторым совпадениям эта проблема возникла дважды на прошлой неделе.

У клиента есть существующий веб-сайт PHP, который они хотят сохранить. Они также имеют или скоро будут иметь некоторые веб-страницы ASP.net, которые они хотят интегрировать в существующий сайт, таким образом, чтобы он отображался как один сайт.

У нас есть следующие возможности:

  • Использовать IFrame
  • Скопируйте все html / меню на новый сайт и ссылку между сайтами, пользователь перемещается между сайтами, но не замечает, если он не смотрит на URL-адрес
  • Используйте веб-службы для чтения информации с веб-сайта asp.net и напишите html на сайте PHP.
  • Используйте WSRP (удаленные портлеты веб-служб). Попробовали это, чтобы отображать веб-сайты Sharepoint на сайте Java, не протестировали с PHP.

Кто-нибудь пробовал что-нибудь из этого? Есть лучшее предложение? Есть ли что-то, чего мы обязательно должны избегать?

благодаря

Шираз

Это действительно зависит от приемлемого уровня интеграции. В ваших первоначальных предложениях есть ряд проблем с ремонтопригодностью, и я бы не предложил, чтобы они использовались для публичного интернет-сайта.

Если бы у меня был полный контроль, я мог бы рассмотреть возможность переноса сайта PHP в IIS и развертывание страниц ASP.NET на сайт вместе с файлами PHP. Это может быть довольно сложно в зависимости от того, как был создан сайт PHP. Проблемы, с которыми вы могли столкнуться, включая:

  • Использование mod_rewrite в приложении PHP и есть ли у вас подходящая замена в Windows. На момент написания этой статьи ситуация намного лучше, но вам может потребоваться отладить существующую конфигурацию.
  • Расширения. Все ли библиотеки PHP и расширения, которые вам нужны в Windows?
  • Представление. Некоторые люди сообщали о неприемлемой производительности PHP под Windows. Я уверен, что при правильной настройке производительности вы можете доставить что-то эквивалентное вашему старому сайту, если это даже проблема.

По предлагаемым вариантам

  • Используйте IFrame . Это работает, но немного неуклюже. Это может оказаться проблематичным, если вам нужны такие вещи, как взаимодействие с SSL или JavaScript между базами кода.
  • Связь между сайтами . Это работает, но могут быть проблемы, если SEO важен для вас. Иногда есть больше ссылок, чем просто меню, которые вам нужно учитывать.
  • Используйте веб-службы для чтения страниц ASP.NET . Это действительно реально, если у вас очень простые страницы с нулевым взаимодействием или обратной связью. Если вам нужно обработать postbacks, viewstate и т. Д., У вас будут проблемы. Использование ASP.NET MVC дает вам больше контроля и более легкий опыт, интегрирующий этот способ. Мое личное мнение состоит в том, что он чрезвычайно хакерский и только то, что я сделал бы для одной страницы (если бы это было действительно важно).
  • Используйте WSRP (удаленные портлеты веб-служб) . Я не уверен, что это вариант с обычным ASP.NET, я всегда думал, что это дополнительная функция с SharePoint.

Все эти варианты полностью за борт!

Простым решением было бы поддерживать решения, размещенные отдельно, Apache и IIS соответственно. И обработайте интеграцию через Routing. Проверка подлинности может быть выполнена с помощью «Cookie»

Мы обработали это недавно для клиента без проблем

Веб-интерфейс был основан на wordpress & mySQL, и весь модуль отчетности был MVC 3/4 на основе SQL Server 2008 r2.

Мы просто использовали поддомены .ie http://www.somecompany.com для сайта и reports.somecompany.com для отчетов.

Затем мы просто написали простое расширение wordpress, чтобы сохранить привязку данных, в которые содержалась соответствующая информация для создания отчетов. т.е. идентификатор руководства пользователя и тип отчета и т. д.

Что по существу просто представило пользователю страницу, содержащую некоторые параметры отчетов, которые они могли бы запустить – гиперссылки <a href="http://reports.somecompanyurl.com/bill/{some guid}>You Monthly Bill</a>

т.е. ежемесячный счет

Оба сайта разделяют общую тему, которая несут некоторую нагрузку на обслуживание, но не более, чем обычный веб-проект. т.е. файлы MVC и PHP имеют некоторые отличия, но в целом файлы CSS были одинаковыми.

Я думаю, что мы немного настроили файл cookie, но на самом деле это было не так уж сложно, так как оба решения использовали одно и то же имя файла cookie и шифрование файлов cookie.

В целом это был довольно безболезненный интеграционный проект, поскольку большинство коммуникаций обрабатывалось посредством маршрутизации.

мы работаем в течение 6 месяцев без каких-либо проблем.

Может ли весь сайт размещаться на компьютере с Windows IIS? Поскольку IIS может обслуживать PHP-страницы, а также asp.net. Таким образом, вы можете легко смешивать и сопоставлять страницы вместе.

Другим, более «грязным» вариантом было бы использование PHP для «чтения» вывода HTML с удаленных страниц asp.net напрямую. У вас будет один файл PHP для каждой соответствующей страницы asp.net, а затем вы сможете «прочитать» его через HTTP с помощью метода file_get_contents PHP:

 $content = file_get_contents('http://www.example.com/remotepage.aspx'); 

Вероятно, вы захотите кэшировать результаты локально, чтобы повысить эффективность.