PHP Toolkit для ADO.NET Data Services

Microsoft Interoperability team объявила о выходе нового проекта, который является мостом между PHP и .NET и еще больше стирает грани технологий. Этот проект позволяет разработчикам на PHP еще более проще обращаться и использовать всю мощь сервисов .NET на основе ADO.NET Data Services.

С точки зрения разработки схема выглядит достаточно классическим образом. В процессе разработки необходимо использовать утилиту PHPDataSv

Давайте посмотрим каким образом будет выглядеть код на платформе PHP для выполнения запросов к ADO.NET Data Services. Прежде всего необходимо подключить файл с прокси-классами, которые сгененрированы с помощью утилиты PHPDataSv

<?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 "<p>";
        echo $customer->CustomerID;
        echo "<br/>";
        echo $customer->CompanyName;
        echo "</p>";
    }
?>

Здесь хорошо видно, что мы обращаемся к строго типизированным объектам, а результат получаем в виде объектных коллекций. Такой способ очень похож на то, как мы работаем с сервисами ADO.NET Data Services в рамках .NET-клиента. Эти классы-сущности были также сгенерированы утилитой PHPDataSv

Pablo Castro (program manager, ADO.NET Data Services) и Claudio Caldato (program manager, interoperability , techincal strategy team) сделали небольшой обзор этой библиотеки на Channel 9 (en), в котором они рассказывают чуть больше деталей.

Ну и наконец очень интересно то, что проект является проектом с открытым исходным кодом и доступен на CodePlex. Кроме того, проект разрабатывается компанией Persistent Systems, но оплачивается Microsoft.