Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

[WebMethod]

public int AddEvent(String eventName, String eventRoom, String eventAttendees, String eventDate) {

 ...

 int queryResult = insertCommand.ExecuteNonQuery;

 if (queryResult == 1) {

daEvents =

new System.Data.OleDb.OleDbDataAdapter(

"SELECT * FROM Events", oleDbConnection1);

Application.Lock;

ds = (DataSet) Application["ds"];

ds.Tables["Events"].Clear;

daEvents.Fill(ds, "Events");

Application["ds"] = ds;

Application.UnLock;

oleDbConnection1.Close;

 }

}

Наконец,

мы возвращаем
queryResult
, позволяя клиенту узнать, что запрос был успешным:

[WebMethod]

public int AddEvent(String eventName, String eventRoom, String eventAttendees, String eventDate) {

 ...

 return queryResult;

}

Это завершает создание службы Web. Как и прежде, есть возможность протестировать эту службу, направляя браузер Web на файл

.asmx
, поэтому мы можем добавить записи и взглянуть на представление XML для
DataSet
, возвращаемое
GetData
, не создавая никакого клиентского кода.

Клиент приложения предварительного заказа помещения для проведения мероприятия

Используемый клиент является разработкой приложения Web

PCSWebApp3
из предыдущей главы. Назовем это приложение
PCSWebApp4
и воспользуемся кодом из
PCSWebApp3
в качестве начальной точки.

Сделаем два существенных изменения в проекте. Первое: удалим все непосредственные обращения к базе данных из этого приложения и воспользуемся вместо этого службой Web. Второе: введем хранилище уровня приложения из

DataSet
, возвращаемого из службы Web, которое обновляется только в случае необходимости, это значит, что на базу данных падает меньшая нагрузка.

Прежде всего в нашем новом приложении Web необходимо добавить ссылку Web на службу

PCSWebSrv2/Service1.asmx
. Это можно сделать точно таким же образом, как мы видели ранее в этой главе, определяя местонахождение файла
.vsdisco
и вызывая его
eventDataService
.

После этого добавляем код в

Global.asax
, по большей части, таким же образом, как это было сделано для службы Web. Этот код, однако, будет существенно проще. Сначала мы ссылаемся на службу Web и пространство имен
System.Data
:

namespace PCSWebApp4 {

 ...

 using System.Data;

 using eventDataService;

Затем заполняем множество данных (

dataset
) и помещаем его в хранилище
данных уровня приложения с именем
ds
:

protected void Application_Start(Object sender, EventArgs e) {

 Service1 dataService = new Service1;

 DataSet ds = dataService.GetData;

 Application["ds"] = ds;

}

Теперь

DataSet
доступно для
всех
экземпляров
PCSWebApp4
, т.е. несколько пользователей могут читать данные без какого-либо обращения к службе Web, то есть к базе данных.

Теперь, когда имеется это

DataSet
, необходимо изменить
WebForm1.aspx.cs
для его использования. Прежде всего можно удалить объявления
oleDbConnection1
,
daAttendees
,
daRooms
и
daEvents
, так как не будет осуществляться никакого обращения к базе данных. Затем необходимо изменить
Page_Load
следующим образом:

private void Page_Load(object sender, System.EventArgs e) {

 validationSummary.Enabled = false;

 foreach (System.Web.UI.WebControls.WebControl validator in this.Validators) {

validator.Enabled = false;

 }

 ds = (DataSet)Application["ds"];

 attendeeList.DataSource = ds.Tables["Attendees"];

 roomList.DataSource = ds.Tables["Rooms"];

 eventTable = ds.Tables["Events"];

 eventDetails1.DataSource = eventTable; eventDetails2.DataSource = eventTable;

 if (!this.IsPostBack) {

System.DateTime trialDate = System.DateTime.Now;

calendar.SelectedDate = getFreeDate(trialDate);

this.DataBind;

 } else {

eventDetails1.DataBind;

eventDetails2.DataBind;

 }

}

Большая часть кода остается без изменений, необходимо только использовать

Application["ds"]
вместо получения
DataSet
.

Необходимо также изменить

submitButton_Click
для использования метода
AddData
службы Web. В этом случае также большая часть кода остается без изменений:

protected void submitButton_Click(object sender, System.EventArgs e) {

 foreach (System.Web.UI.WebControls.WebControl validator in this.Validators) {

validator.Enabled = true;

 }

 this.Validate;

 if (this.IsValid) {

Поделиться:
Популярные книги

На границе империй. Том 7. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7. Часть 4

Найденыш

Шмаков Алексей Семенович
2. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Найденыш

Блуждающие огни

Панченко Андрей Алексеевич
1. Блуждающие огни
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Блуждающие огни

И только смерть разлучит нас

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
И только смерть разлучит нас

Жена на четверых

Кожина Ксения
Любовные романы:
любовно-фантастические романы
эро литература
5.60
рейтинг книги
Жена на четверых

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Сердце Дракона. Том 11

Клеванский Кирилл Сергеевич
11. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
6.50
рейтинг книги
Сердце Дракона. Том 11

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Бастард

Осадчук Алексей Витальевич
1. Последняя жизнь
Фантастика:
фэнтези
героическая фантастика
попаданцы
5.86
рейтинг книги
Бастард

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI