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 и пространство имен