Базовые технологии, использованные для реализации новой версии Microsoft Windows Azure (2013)
Язык C#: Определение классов
Язык C# разработан специально для платформы .NET, хотя не является обязательным и единственным для этой платформы. Классы в C# определяются традиционным для ООП образом – как набор полей и методов. В дополнение к другим языкам, определение класса может также содержать свойства (обобщенные поля с операциями get и set); индексаторы; события; делегаты. Пример класса:
public class Person :IPersonAge { private int YOB; public Person() { } public int YearOfBirth { get { return YOB; }; set { YOB = value; }; } public int GetAgeToday() { return Today()- YearOfBirth }; }
Web-сервисы в .NET
Концепция Web-сервиса в .NET поддерживает сервисы в виде классов, интерфейс которых доступен через Web, соблюдающие ряд стандартов (WSDL, SOAP, XML), основанные на библиотеке классов .NET Framework.
На рис. 4.2 приведена структура распределенного Web-приложения.
Приложение состоит из клиентской и серверной частей. Web-сервис должен удовлетворять определенному контракту (реализовывать определенный интерфейс).
Инфраструктура Web-сервисов представлена на рис. 4.3.
Web-сервис может обрабатывать несколько видов запросов Web-клиентов. При обнаружении (открытии) сервиса клиент передает запрос вида vsdisco, в ответ на который сервисы открытия (UDDI) сообщают о месте расположения Web-сервиса. В ответ на другой запрос – WSDL – сервис сообщает клиенту структуру своего интерфейса в формате XML с соблюдением стандарта WSDL (Web Service Description Language). В ответ на запрос asmx Web-сервис посылает свой файл реализации в формате XML.
На рис. 4.4 приведен простой пример кода Web-сервиса, выполняющего вычитание двух чисел и выдающего результат, на рис. 4.5 представлена структура WSDL-спецификации Web-сервисов, состоящей из сервисов, портов и сообщений.
Пример WSDL-описания Web-сервиса:
<definitions name="serviceName"</em>> <import namespace="http://<em type="italic">namespacePath</em>" location="http://<em type="italic">path</em>/<em type="italic">fileName.wsdl</em>"> <portType name="serviceNamePortType"> <operation name="opName"> <input message="msgNameInput" /> <output message="msgNameOutput" /> </operation> </portType> <binding name="serviceNameSoapBinding"> <soap:operation soapAction="http://..." /> </binding> <service name="<em type="italic">serviceName</em>"> <port name="<em type="italic">serviceNamePort</em>" binding="bindingName"> <soap:address location="http://..." /> </port> </service> </definitions>
Использование Web-сервисов основано на следующих принципах. Полностью разделена логика размещения и вызова: сервис представлен в виде пары файлов: .aspx и .aspx.cs (или .aspx.vb). Файлы .aspx предназначены для дизайнеров, файлы .aspx.cs - для программистов. Таким образом достигается легкость сопровождения приложения.
Фрагмент кода сервиса:
<%@ Import Namespace="MathServiceSpace" %> <script language="C#" runat="server"> public void Submit_Click(Object S, EventArgs E) { service.Add(operand1, operand2); ... </script> ... <input OnServerClick="Submit_Click" runat="server" ..>