Microsoft Interoperability team объявила о выходе нового проекта, который является мостом между PHP и .NET и еще больше стирает грани технологий. Этот проект позволяет разработчикам на PHP еще более проще обращаться и использовать всю мощь сервисов .NET на основе ADO.NET Data Services.
С точки зрения разработки схема выглядит достаточно классическим образом. В процессе разработки необходимо использовать утилиту PHPDataSvcUtil, которая входит в PHP Toolkit for ADO.NET Data Services. Эта утилита сгенерирует прокси-классы на PHP на основе метаданных, которые доступны для сервиса на базе ADO.NET Data Services. После этого к проекту на PHP также необходимо будет подключить библиотеки PHP Toolkit for ADO.NET Data Services. Далее, после всех этих несложных действий можно будет использовать всю мощь платформы ADO.NET Data Services в рамках приложений на PHP более удобным способом.
Давайте посмотрим каким образом будет выглядеть код на платформе PHP для выполнения запросов к ADO.NET Data Services. Прежде всего необходимо подключить файл с прокси-классами, которые сгененрированы с помощью утилиты PHPDataSvcUtil:
После этого можно создавать объекты класса, реализующие логику клиента и осуществлять запросы к удаленному сервису. К сожалению, здесь мы не сможем воспользоваться синтаксисом LINQ для построения запросов к сервису. Поэтому запрос в виде URI придется написать вручную.
Теперь, после успешного конструирования запроса можно обратиться за данными и вывести результат пользователю:
Здесь хорошо видно, что мы обращаемся к строго типизированным объектам, а результат получаем в виде объектных коллекций. Такой способ очень похож на то, как мы работаем с сервисами ADO.NET Data Services в рамках .NET-клиента. Эти классы-сущности были также сгенерированы утилитой PHPDataSvcUtil.
Pablo Castro (program manager, ADO.NET Data Services) и Claudio Caldato (program manager, interoperability, techincal strategy team) сделали небольшой обзор этой библиотеки на Channel 9 (en), в котором они рассказывают чуть больше деталей.
Ну и наконец очень интересно то, что проект является проектом с открытым исходным кодом и доступен на CodePlex. Кроме того, проект разрабатывается компанией Persistent Systems, но оплачивается Microsoft.
Ссылки:
С точки зрения разработки схема выглядит достаточно классическим образом. В процессе разработки необходимо использовать утилиту PHPDataSvcUtil, которая входит в PHP Toolkit for ADO.NET Data Services. Эта утилита сгенерирует прокси-классы на PHP на основе метаданных, которые доступны для сервиса на базе ADO.NET Data Services. После этого к проекту на PHP также необходимо будет подключить библиотеки PHP Toolkit for ADO.NET Data Services. Далее, после всех этих несложных действий можно будет использовать всю мощь платформы ADO.NET Data Services в рамках приложений на PHP более удобным способом.
Давайте посмотрим каким образом будет выглядеть код на платформе PHP для выполнения запросов к ADO.NET Data Services. Прежде всего необходимо подключить файл с прокси-классами, которые сгененрированы с помощью утилиты PHPDataSvcUtil:
<?PHP
require_once 'NorthwindClient.php';
define("SERVICE_URI", "http://localhost:8080/Northwind.svc");
?>
После этого можно создавать объекты класса, реализующие логику клиента и осуществлять запросы к удаленному сервису. К сожалению, здесь мы не сможем воспользоваться синтаксисом LINQ для построения запросов к сервису. Поэтому запрос в виде URI придется написать вручную.
<?PHP
$client = new NorthwindEntities(SERVICE_URI);
$query = $client->ExecuteQuery("Customers?\$filter=Country eq 'UK'");
?>
Теперь, после успешного конструирования запроса можно обратиться за данными и вывести результат пользователю:
<?PHP
foreach($query as $customer)
{
echo "";
echo $customer->CustomerID;
echo "<br/>";
echo $customer->CompanyName;
echo "";
}
?>
Здесь хорошо видно, что мы обращаемся к строго типизированным объектам, а результат получаем в виде объектных коллекций. Такой способ очень похож на то, как мы работаем с сервисами ADO.NET Data Services в рамках .NET-клиента. Эти классы-сущности были также сгенерированы утилитой PHPDataSvcUtil.
Pablo Castro (program manager, ADO.NET Data Services) и Claudio Caldato (program manager, interoperability, techincal strategy team) сделали небольшой обзор этой библиотеки на Channel 9 (en), в котором они рассказывают чуть больше деталей.
Ну и наконец очень интересно то, что проект является проектом с открытым исходным кодом и доступен на CodePlex. Кроме того, проект разрабатывается компанией Persistent Systems, но оплачивается Microsoft.
Ссылки:
- Анонс в блоге команды Astoria — blogs.msdn.com/astoriateam/archive/2009/08/21/announcing-the-php-toolkit-for-ado-net-data-services.aspx
- Описание в блоге команды Interoperability — blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx
- Обзор на Channel9 — channel9.msdn.com/posts/jccim/Consuming-data-over-the-web-between-PHP-and-NET-with-REST-and-ADONET-Data-Services
- Сам проект на CodePlex — phpdataservices.codeplex.com