Санкт-Петербургский государственный университет
Опубликован: 25.07.2014 | Доступ: свободный | Студентов: 1039 / 81 | Длительность: 17:26:00
Лекция 3:

Обзор возможностей .NET

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

3.7. Язык 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; 
   }; 
}
    

В классе определены свойство YearOfBirth и метод GetAgeToday.

3.8. Web-сервисы в .NET

Концепция Web-сервиса в .NET поддерживает сервисы в виде классов, интерфейс которых доступен через Web, соблюдающие ряд стандартов (WSDL, SOAP, XML). Реализация Web-сервисов основана на библиотеке классов .NET Framework, она представлена в виде набора классов пространства имени System.Web.

На рис. 3.2 приведена структура распределенного Web-приложения.

Структура распределенного Web-приложения

Рис. 3.2. Структура распределенного Web-приложения

Приложение состоит из клиентской и серверной частей. Web-сервис должен удовлетворять определенному контракту (реализовывать определенный интерфейс).

Инфраструктура Web-сервисов представлена на рис. 3.3.

Инфраструктура Web-сервиса в .NET

Рис. 3.3. Инфраструктура Web-сервиса в .NET

Web-сервис может обрабатывать несколько видов запросов Web-клиентов.

При обнаружении (открытии) сервиса клиент передает запрос вида vsdisco, в ответ на который сервисы открытия (UDDI - Universal Discovery, Description and Integration) сообщают о месте расположения Web-сервиса. Сервис UDDI представлен в виде сайта.

В ответ на другой запрос - wsdl - сервис сообщает клиенту структуру своего интерфейса в формате XML с соблюдением стандарта WSDL (Web Service Description Language). В ответ на запрос asmx Web-сервис посылает свой файл реализации в формате XML.

На рис. 3.4 приведен простой пример кода Web-сервиса, выполняющего вычитание двух чисел и выдающего результат, на рис. 3.3 представлена структура WSDL-спецификации Web-сервисов, состоящей из сервисов, портов и сообщений.

Простой пример кода Web-сервиса .NET

Рис. 3.4. Простой пример кода Web-сервиса .NET

Пример WSDL-описания Web-сервиса:

<definitions name="http://namespacePath"
         location="serviceName">
 <import namespace="http://namespacePath"
         location="http://path/fileName.wsdl">
 <portType name="serviceNamePortType">
   <operation name="opName""
      <input message="msgNameInput" />
      <output message="msgNameOutput" />
   </operation>
 </portType>
 <binding name="serviceNameSoapBinding">
    <soap:operation soapAction="http://..." />
 </binding>
 <service name="serviceName">
   <port name="serviceNamePort" binding="bindingName">
      <soap:address location="http://..." />
   </port>
 </service>
</definitions>
    

Использование Web-сервисов основано на следующих принципах. Полностью разделена логика размещения и вызова: сервис представлен в виде пары файлов - aspx и .aspx.cs (или .aspx.vb). Файлы .aspx предназначены для дизайнеров, файлы .aspx.cs - для программистов. Таким образом достигается легкость сопровождения приложения. Файл кода на C# или VB.NET, реализующий обработчики событий, связанных с обработкой Web-страницы, называется code-behind.

Фрагмент кода Web-сервиса:

<%@ 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" ...>
    
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Александр Калинин
Александр Калинин

Осенью прошёл курс и получил ключ. Но т.к. уже имел действующую подписку, то ключом не воспользовался. Сейчас захожу сюда, а про DreamSpark вообще ни слова. Где же мой ключ?