| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Пример создания XML Web-сервиса
Александр Игнатьев, http://www.daoto.net/, e-mail: daoto@daoto.net Как-то запомнилось восклицание одного программиста: "Мощь технологии .NET заметна только при использовании Web-сервисов". Казалось бы их создание и использование должны быть связано с определенными трудностями. И программисты встречаются с этими трудностями, и тратят столь драгоценное время. И только потому, что они не понимают одного - Web-сервисы в .NET - это очень просто! Их создание заключается в следующем - создаете класс, помечаете открытые методы (public - открытые, никак не публичные! в русском языке это слово ассоциириуется совсем с другим), которые будет предоставлять ваш сервис, как [WebMethod]. Компилируете проект, и все! Web-сервис готов! Вы можете передавать методам и получать от них любые значения - массивы, пользовательские типы данных (а сюда можно упаковать все), все что угодно! Несмотря на то, что используемый XML Web-сервисами протокол SOAP - представляет собой всего лишь надстройку над HTTP и может передавать только текстовые данные. Двоичные данные сначала кодируются в BASE64, затем передаются клиенту. И уже клиент раскодирует их обратно сам (этим занимается прокси-класс). Все это происходит без вашего участия - вы программируете как обычно. Чтобы создать клиента - создаете обычное приложение, добавляете Web Reference (Web-ссылку) на ваш Web-сервис, студия сама создаст прокси-класс. Вам остается только создать экземляр этого прокси-класса (для вас он будет выглядеть как класс Web-сервисы - те же методы, то же наименование), и вызывать интересующие вас методы. Все! И никаких проблем! Создавать Web- приложение посложнее будет, чем Web-сервис. Чтобы не быть голословным я создам пример Web-сервиса, который преджставляет собой каталог файлов. Он позволяет получать список файлов, а также возвращает затребованный файл (т.е. передает двоичные данные!). Затем я создам приложение-клиент, которое будет вызывать методы этого Web-сервиса. Идея примера взята из книга Скота Шорта "Разработка XML Web-сервисов", на а реализация примера естественно своя. Создание Web-сервиса.Для начала создаете в студии новый проект ASP.NET Web Service. Сдудия при этом создает файл с расширением asmx - это и есть наш сервис. В этом файле содержится только ссылка на класс, реализующий Web-сервис: <%@ WebService Language="c#" Codebehind="SharedFiles.asmx.cs" Class="SharedFiles.SharedFileService" %> Выбрав в контекстном меню View Code вы можете перейти к коду класса Web-сервиса. Приступим теперь к написанию кода. Для начала определяем переменную, хранящую путь к каталогу с разделяемыми файлами: private string pathDir = "c:\shared\"; Затем определяете метод, возращающий список файлов в этой директории: //Возвращает список файлов в разделяемой директории
[WebMethod]
public string[] Dir()
{
string[] files = Directory.GetFiles(pathDir);
for(int i = 0; i < files.Length; i++)
files[i] = files[i].Replace(pathDir, "");
}
Обратите внимание, что метод Dir() помечен атрибутом [WebMethod] - этот атрибут делает открытым данный метод для клиентов Web-сервиса. Код метода прост и думаю, что он не нуждается в комментариях - просто получаю список фалов в даннй диретории, и затем удаляет из имен файлов путь к ним. Следующий метод считывает запрашиваемый файл в массив byte[] и возвращает этот массив. //возвращает выбранный файл
[WebMethod]
public byte[] Get(string file)
{
FileStream stream = new FileStream(pathDir+file, FileMode.Open,FileAccess.Read);
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);
stream.Close();
return buffer;
}
Вот и все - наш Web-сервис готов. Вы можете откомпилировать и запустить его - ASP.NET автоматически создаст Web-интерфейс для нашего Web-сервиса. С его помощью вы можете протестировать Web-методы (методы, которые представляет Web-сервис). Также там создержится рекомендация сменить пространство имен XML. По умолчанию пространство имен XML - "http://tempuri.org". Я сменил пространтсов имен с помощью атрибута [WebService], которым помечается класс Web-сервиса: [WebService(Namespace="http://daoto.net/dotnet/ws/ExampleWS")]
public class SharedFileService : System.Web.Services.WebService
{
//реализация
}
Создание клиента.Единственная сложность при создание клиента - это добавить Web-ссылку на на наш сервис. Делается это так Project - Add Web References... Ну и указываете вместо значения по умолчанию localhost, что-нибудь более осмысленной. Путь к Web-сервису указываете полный, в том числе и asmx-файл, который представляет Web-сервис. В этом примере путь был такой: "http://localhost/SharedFiles/SharedFiles.asmx" После добавления студия автоматически сформирует прокси-класс, представляющий для нас Web-сервис. Этот класс будет называться так же как класс Web-сервиса, и будет находиться в следующем пространстве имен: using Пространство_имен_приложения.Наименование_ссылки; Той самой Web-ссылки, которую мы только что добавили. Теперь мы можем использовать наш Web-сервис как обычный класс. Итак создаем клиент - обычное Windows-приложение, добавляем в него Web-ссылку на Web-сервис. На форму поместим две кнопки - первая будет получать список разделяемых файлов (метод Dir() Web-сервиса) и выводить их в ListBox, вторая получать с сервера и сохранять его на диске. Вот реализация обработчиков этих двух кнопок: //используем пространство имен
//в котором находится прокси-класс
using SharedFilesClient.SharedFiles;
//...
//Вывод списка файлов в ListBox - listFiles
private void btnDir_Click(object sender, System.EventArgs e)
{
//Создаем экземляр прокси-класса
SharedFileService service = new SharedFileService();
string[] files = service.Dir();
listFiles.Items.Clear();
listFiles.Items.AddRange(files);
btnGet.Enabled = false;
}
//Получение с сервера выбранного файла и сохранения его на диске
private void btnGet_Click(object sender, System.EventArgs e)
{
SaveFileDialog saveDlg = new SaveFileDialog();
string file = listFiles.SelectedItem.ToString();
saveDlg.FileName = file;
//Помнить последнюю лиректорию
saveDlg.RestoreDirectory = true;
if(saveDlg.ShowDialog() == DialogResult.OK)
{
//Создаем экземляр прокси-класса
SharedFileService service = new SharedFileService();
FileStream stream = new FileStream(saveDlg.FileName, FileMode.Create);
byte[] buffer = service.Get(file);
stream.Write(buffer, 0, buffer.Length);
stream.Close();
}
}
Как видите от обычного Windows-приложения практически ничем не отличается, наш Web-сервис мы используем как обычный класс (другое дело что его методы выполняются на другом компьютере, где установлен Web-сервис). Совершенно аналогично можно создать Web-приложение ASP.NET, добавить в него Web-ссылку и использовать Web-сервис. Надеюсь у вас возник вопрос: если мы тестируем Web-сервис и клиента на локале, а добавляемая Web-ссылка жестко прошивается в коде прокси-класса, как же тогда использовать клиента, если Web-сервис будет находиться в другом месте? Исправляется это очень просто - установите свойство Web-ссылки URL Behavior в Dinamic. Теперь адрес Web-сервиса прописывается в конфигурационном файле приложенния (Имя.exe.config), и в случае необходимости его можно будет легко изменить. Рубрика: .NET Framework
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|