2009-09-06 4 views
2

По некоторым совпадениям эта проблема возникла дважды за последнюю неделю.Лучший способ интегрировать PHP с asp.net/asp.net-mvc

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

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

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

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

Благодаря

Шираз

+0

Что вы подразумеваете под интеграцией? Вы имеете в виду, что две рамки находятся на одном сайте или все веб-страницы заканчиваются на .php или .aspx? –

+0

@James, это 2 отдельных сайта, но все должно пройти через php-сайт. –

ответ

3

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

Если бы у меня был полный контроль, я мог бы рассмотреть возможность переноса сайта 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.
1

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

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

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

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

+1

Как вы справляетесь с ситуациями, когда remotepage.aspx требует, чтобы значения были отправлены на него, в viewstate или несколько postbacks? –

+0

Вы не могли! Я бы предложил это только для страниц, которые не возвращали обратно и были относительно «плоскими». Даже тогда я не думаю, что это отличная идея, но она может работать на сайте MVC или для простого контента только для чтения. –

+0

У нас есть PHP и .NET MVC/WebForms, работающие на IIS на другом сайте. Нет проблем со скоростью. Раньше это была проблема, но Microsoft сделала огромные скачки и возможности для того, чтобы PHP хорошо работал с IIS. И почему бы нет? Они хотят покорить мир. Вот большой ресурс для этого, который предоставил MS. https://php.iis.net/ – JustJohn

3

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

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

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

веб передний конец был основан на WordPress & MySql и весь модуль отчетности был MVC 3/4 на основе SQL Server 2008 r2.

Мы только что использовали поддомены .i.e. www.somecompany.com для веб-сайта и reports.somecompany.com для отчетов.

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

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

т.е. Месячные Билл

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

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

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

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