Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Название:ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2007
- Город:Москва • Санкт-Петербург • Киев
- ISBN:ISBN 5-8459-1124-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Эндрю Троелсен - ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание краткое содержание
В этой книге содержится описание базовых принципов функционирования платформы .NET, системы типов .NET и различных инструментальных средств разработки, используемых при создании приложений .NET. Представлены базовые возможности языка программирования C# 2005, включая новые синтаксические конструкции, появившиеся с выходом .NET 2.0, а также синтаксис и семантика языка CIL. В книге рассматривается формат сборок .NET, библиотеки базовых классов .NET. файловый ввод-вывод, возможности удаленного доступа, конструкция приложений Windows Forms, доступ к базам данных с помощью ADO.NET, создание Web-приложений ASP.NET и Web-служб XML. Книга содержит множество примеров программного кода, призванного помочь читателю в освоении предлагаемого материала. Программный код примеров можно загрузить с Web-сайта издательства.
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Чтобы проверить работу нового Web-сервисa XML, создайте приложение Windows Forms и укажите в нем ссылку на CarsSalesInfoWS, используя диалоговое окно Add Web Reference в Visual Studio 2005 (рис. 25.7).

Pиc. 25.7. Добавление ссылки на CarsSalesInfoWS
Теперь просто используйте генерируемый агент для вызова доступных Web-методов. Вот один из возможных вариантов реализации формы.
using CarsSalesInfoCLient.localhost;
…
namespace CarsSalesInfoClient {
public partial class MainWindow: Farm {
private CarSalesInfoWS ws = new CarSalesInfoWS();
…
private void MainWindow_Load(object sender, EventArgs e) {
// Привязка к таблице.
inventoryDataGridView.DataSource = ws.GetCurrentInventory().Tables[0];
}
private void btnGetTagLines_Click(object sender, EventArgs e) {
string[] tagLines = ws.GetSalesTagLines();
foreach (string tag in tagLines) listBoxTags.Items.Add(tag);
}
private void btnGetAllDetails_Click (object sender, EventArgs e) {
SalesInfoDetails[] theSkinny = ws.GetSalesInfoDetails();
foreach (SalesInfoDetails s in theSkinny) {
string d = string.Format("Info: {0}\nURL:(1}\nExpiration Date:{2}", s.info, s.Url, s.dateExpired);
MessageBox.Show(d, "Details");
}
}
}
На рис. 25.8 показан результат тестового запуска приложения.

Рис. 25.8. Клиент CarsSalesInfo
Представление типов на стороне клиента
Когда клиент устанавливает ссыпку на Web-сервис, предоставляющий доступ к пользовательским типам, файл класса агента получает определения для каждого отрытого пользовательского типа. Так, если вы посмотрите на представление клиента для SalesInfoDetails (в генерируемом файле Reference.cs), вы увидите, что каждое поле инкапсулировано в строго типизованное свойство (также обратите внимание на то, что этот тип теперь определен, как класс, а не как структура).
[System.SerializableAtttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://IntertechTraining.com/")]
public partial class SalesInfoDetails{
private string infoField;
private string urlField;
private System.DateTime dateExpiredField;
public string info {
get { return this.infoField; }
set { this.infoField = value; }
}
public string Url {
get { return this.urlField; }
set { this.urlField = value; }
}
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.DateTime dateExpired {
get { return this.dateExpiredField; }
set { this.dateExpiredField = value; }
}
}
При этом, конечно, следует понимать, что подобно случаю удаленного взаимодействия .NET, типы, сериализация которых выполняется по сети в формате XML, не сохраняют логику реализации. Поэтому, если структура SalesInfoDetails поддерживала ряд открытых методов, генератор агента учесть это не сможет (прежде всего, потому, что эти методы не отражены в документе WSDL!). Однако если вы установите компоновочный блок клиента, который будет содержать программный код реализации типа клиента, вы сможете использовать программную логику типа. Но при этом требуется, чтобы соответствующая машина обеспечивала поддержку .NET.
Исходный код.Проект CarSaleslnfoClient размещен в подкаталоге, соответствующем главе 25.
Стандарт поиска и взаимодействия (протокол UDDI)
Тот факт, что первый типичный шаг клиента при обращении к удаленному Web-серверу оказывается темой заключительного раздела этой главы, может казаться немного странным. Причиной этой несообразности является то, что процесс проверки существования (или отсутствия) данного Web-сервиса с помощью UDDI является не только необязательным, но во многих случаях вообще ненужным.
Пока Web-сервисы XML не стали де-факто стандартом распределенных вычислений, большинство Web-сервисов используется компаниями в жесткой связи с конкретным поставщиком. При этом и компания, и поставщик уже хорошо знают один другого, поэтому у них не возникает никакой необходимости запрашивать UDDI-сервер для выяснения вопроса о существовании Web-сервиса. Однако если создатель Web-сервиса XML пожелает открыть свободный доступ к функциональным возможностям своего Web-сервиса, этот Web-сервис можно внести в UDDI-каталог.
UDDI (Universal Description, Discovery and Integration – универсальное описание, поиск и взаимодействие, стандарт UDDI) является инициативой, позволяющей разработчикам Web-сервисов "выставить" коммерческий Web-сервис в общеизвестном хранилище. Независимо от того, что вы могли сейчас подумать, UDDI не является технологией, поддерживаемой исключительно фирмой Microsoft. На самом деле IBM и Sun Microsystems имеют не меньшую заинтересованность в успexe инициативы UDDI. Как и следует ожидать, UDDI-каталоги обслуживаются многими поставщиками. Например, посвященный UDDI официальный Web-сайт Microsoft доступен по адресу http://uddi.microsoft.com. Официальный Web-сайт UDDI (http://www.uddi.org) предлагает множество "белых книг" и SDK, которые позволяют строить внутренние UDDI-серверы.
Взаимодействие с UDDI в Visual Studio 2005
Вспомните о том, что диалоговое окно Add Web Reference позволяет не только получить список всех Web-сервисов XML, размещенных на вашей локальной машине (а также по известному URL), но и предъявить запрос к UDDI-серверу. Как правило, вы имеете на выбор следующие варианты.
• Выполнить обзор UDDI-сервера во внутренней сети вашей компании.
• Выполнить обзор спонсируемого фирмой Microsoft производственного UDDI-сервера.
• Выполнить обзор спонсируемого фирмой Microsoft тестового UDDI-сервера.
Предположим, что вы строите приложение, которое должно получать текущий прогноз погоды на основе почтового индекса. Вашим первым шагом должен быть запрос к UDDI-каталогу с вопросом следующего содержания.
• Есть ли у вас Web-сервисы, имеющие отношение к погодным данным?
В том случае, когда UDDI-сервер имеет список Web-сервисов, связанных с прогнозом погоды, вы получите список всех зарегистрированных URL, предлагающих возможности, соответствующие вашему запросу. С помощью этого списка вы сможете выбрать подходящий вам Web-сервис и, в конечном итоге, получить WSDL-документ с описанием функциональных возможностей, cвязанных с обработкой погодных данных.
Для примера создайте новый проект консольного приложения и активизируйте диалоговое окно Add Web Reference. Затем выберите ссылку Test Microsoft UDDI Directory, которая приведет вас к тестовому UDDI-серверу Microsoft. После этого укажите слово weather(погода) в качестве критерия поиска. После выполнения запроса UDDI-каталогом вы получите список всех соответствующих Web-сервисов XML. Обнаружив Web-сервис XML который подойдет вам для использования в разработке, добавьте ссылку на этот сервис в свой проект. Как вы и должны ожидать, "сырой" WSDL-код будет проанализирован соответствующим инструментом разработки, и вы получите соответствующий агент на языке C#.
Замечание.Следует понимать, что центр тестирования является не более чем центром тестирования. Не удивляйтесь, если вы обнаружите там множество недействительных ссылок. При запросе производственных UDDI-серверов их URL оказываются гораздо более надежными, поскольку компаниям обычно приходится платить за то, чтобы они присутствовали в соответствующем списке.
Читать дальшеИнтервал:
Закладка: