Смекни!
smekni.com

WEB сервис поиска терминалов банка (стр. 5 из 5)

Сервис Membership, доступный через класс System.Web.Security.Membership, позволяет определить различные виды членства на сайте. Информацию о членах можно хранить в различных местах – в базах данных, текстовых файлах или даже в учетных записях Windows. Данная ситема использует в качестве хранилища базу данных. Конфигурировать членство можно индивидуально для каждого пользователя или на основе ролей с помощью сервиса Role Manager. Роли облегчают конфигурирование, так как можно создавать роли и потом добавлять пользователей к готовым ролям. На рисунке 4.2 представлена схема провайдера данной системы.

После определения идентификация пользователя, выдавшего запрос, принимаются решения, связанные с управлением доступом. В ASP.NET два встроенных механизма авторизации, управляющих доступом на уровне URL: File и URL.

В данной работе используется URL авторизация. При авторизации URL действуют правила управления доступом, задаваемые в конфигурационном файле, которые разрешают или запрещают доступ в зависимости от имени пользователя или ролей.

Рисунок 4.2 – Схема Membership провайдера


Правила управления доступом для авторизации URL задаются на уровне URL в конфигурационном разделе (рисунко 4.3).

Рисунок 4.3 – Схема авторизации

Важным моментом в обеспечении защиты web-приложения является отсутствие файлов, которые не планируется передавать клиентам. В описываемой системе такие файлы были удалены из физической структуры каталогов, начиная с самого верхнего каталога, помеченного в конфигурации IIS как Web-приложение (виртуальный каталог). Так как если файл не принадлежит Web-пространству имен, он не будет доступен при запросах к этому пространству. Так же отслеживаются файлы загружаемые в систему.

Следующая настройка (рисунок 4.4) файла Web.config запрещает загружать в систему клиентам данного приложения файлы с размером больше, чем указано.

Рисунок 4.4 – Элемент файла Web.config


ВЫВОДЫ

Анализ представленных на рынке систем автоматизированного поиска позволяет отметить общую тенденцию в подходе к разработке таких систем: в рамках разрабатываемых средств они стремятся охватить все элементы традиционного поиска.

Основными недостатками существующих систем являются недостаточная их локализация. То есть они являются общими системами и не учитывают потребности конкретных процессов.

Эти проблемы может решить разработанная система, которая автоматизирует процесс поиска банкоматов и отделений банков с целью эффективного взаимодействия между пользователями банковских услуг и банками. Внедрение системы в автоматизированный поиск банкоматов отделений позволит:

- Поиск банкоматов с отображением их на карте с учётом вашего текущего местоположения. Ваше текущее местоположение с помощью HTML5 Geolocation. Если Ваш браузер этого не поддерживает или Ваше местоположение не удалось точно определить, достаточно кликнуть на карте, что бы указать, где Вы находитесь и начать поиск;

- Поиск магазинов, где Вы можете расплатиться с помощью банковских карт;

- Поиск кафе, баров, ресторанов, где вы можете провести время, расплатившись без использования наличных средств;

- Информация и статьи о банковских картах, их особенностях и способах оплаты.

Возможность удобного поиска с затратой минимальных усилий, быстрое нахождение банкоматов и отделений банков в любом уголке Украины,– все это делает систему автоматизированного поиска банкоматов не опциональным дополнением, а продиктованной современными условиями необходимостью.


ПЕРЕЧЕНЬ ССЫЛОК

1. Zoho – Online Office, Word Processor, Spreadsheet, Presentation, CRM Электронный ресурс – Режим доступа: http://zoho.com/ – 16.02.2008 г. – Загл. с экрана.

2. Moodle – A Free, Open Source Course Management System for Online Learning Электронный ресурс – Режим доступа: http://moodle.org/ – 10.03.2008 г. – Загл. с экрана.

3. WebCT Communities Электронный ресурс – Режим доступа: http://www.webct.com/webct/ – 10.02.2008 г. – Загл. с экрана.

4. Группы Google Электронный ресурс – Режим доступа: http://groups.google.com.ua/ – 26.04.2008 г. – Загл. с экрана.

5. IBM Lotus Software Электронный ресурс – Режим доступа: http://www-306.ibm.com/software/lotus/ – 26.02.2008 г. – Загл. с экрана.

6. Рихтер Дж. Программирование на платформе Microsoft .NET Framework. Мастер–класс Дж. Рихтер: пер. с англ. – СПб.: Питер, 2005. – 512 с.

7. ASP.NET (.NET Framework) Электронный ресурс – Режим доступа: http://msdn.microsoft.com/en-us/library/bb400852.aspx – 10.05.2008 г. – Загл. с экрана.

8. Троелсен Э. Язык программирования C# 2005 и платформа .NET 2.0. HTML Э. Троелсен: – М.; ООО «И.Д. Вильямс», 2007. – 1168 с.

9. Сеппа Д. Программирование на Microsoft ADO.NET 2.0. Мастер класс Д. Сеппа: пер. с англ. – М.: Издательский дом «Русская редакция»; СПб.: Питер, 2007. – 784 с.

10. Мак-Дональд М. Microsoft ASP.NET с примерами на C# 2005 для профессионалов М. Мак-Дональд: пер. с англ. – М.; ООО «И.Д. Вильямс», 2006. – 1408 с.

11. Буч Г., Якобсон А. UML Г.Буч. - СПб.:Питер, 2005.-736 с.

12. Integration Definition Metodology – Режим доступа: http://www.idef.ru/ – 12.12.2007 г. – Загл. с экрана.

13. Дейт К. Введение в системы базы данных, 8–е издание К. Дейт: пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 1328 с.

14. Хэндерсон К. Профессиональное руководство по SQL Server: хранимые процедуры, XML, HTML К. Хэндерсон. – СПб.:Питер, 2005. – 620 с.


Приложение А

Программный код приложения

/// <summary>

/// Represent course information.

/// </summary>

public class Course

{

...

}

/// <summary>

/// The class CourseManagement represents methods that makes possible do

/// actions with course information.

/// </summary>

public class CourseManagement

{

/// <summary>

/// Gets all courses that are available for study.

/// </summary>

/// <returns>The collection of courses.</returns>

[DataObjectMethod(DataObjectMethodType.Select)]

public IList<Course> SelectCourses()

{

List<Course> courseList = new List<Course>();

SqlConnection connection = new SqlConnection(_connectionString);

using (SqlCommand command = new SqlCommand(Procedure.SelectAllCourse, connection))

{

command.CommandType = CommandType.StoredProcedure;

connection.Open();

SqlDataReader sqlDataReader = command.ExecuteReader();

while (sqlDataReader.Read())

{

Course course = new Course(sqlDataReader.GetGuid(0), HttpUtility.HtmlDecode(sqlDataReader.GetString(1)), HttpUtility.HtmlDecode(sqlDataReader.GetString(7)), sqlDataReader.GetGuid(8), sqlDataReader.GetDateTime(3), sqlDataReader.GetDateTime(4), sqlDataReader.GetBoolean(5), sqlDataReader.GetInt32(6), sqlDataReader.GetInt32(11), HttpUtility.HtmlDecode(sqlDataReader.GetString(2)), HttpUtility.HtmlDecode(sqlDataReader.GetString(9)), HttpUtility.HtmlDecode(sqlDataReader.GetString(10)));

courseList.Add(course);

}

connection.Close();

}

return courseList;

}

/// <summary>

/// Gets subjects of the specified course.

/// </summary>

/// <param name="courseId">Course identifier</param>

/// <returns>The collection of courses.</returns>

public List<string> GetCourseSubjects(Guid courseId)

{

List<string> subjects = new List<string>();

using (SqlConnection connection = new SqlConnection(_connectionString))

{

using (SqlCommand cmd = new SqlCommand(Procedure.SelectCurriculumCourseContent, connection))

{

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter(ParameterName.CourseId, SqlDbType.UniqueIdentifier));

cmd.Parameters[ParameterName.CourseId].Value = courseId;

connection.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())

{

subjects.Add(reader.GetString(2));

}

connection.Close();

}

}

return subjects;

}

/// <summary>

/// Insert course to database.

/// </summary>

/// <param name="course">Course data.</param>

/// <returns>Inserted course identifier.</returns>

[DataObjectMethod(DataObjectMethodType.Insert)]

public Guid InsertCourse(Course course)

{

SqlConnection connection = new SqlConnection(_connectionString);

Guid courseId = new Guid();

using (SqlCommand command = new SqlCommand(Procedure.InsertCourse, connection))

{

command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add(TitleParameter, SqlDbType.NVarChar).Value = course.Title;

command.Parameters.Add(CourseKeyParameter, SqlDbType.NVarChar).Value = course.CourseKey;

command.Parameters.Add(DescriptionParameter, SqlDbType.NVarChar).Value = course.Description;

command.Parameters.Add(StartDateParameter, SqlDbType.DateTime).Value = course.StartDate;

command.Parameters.AddWithValue(EndDateParameter, SqlDbType.DateTime).Value = course.EndDate;

command.Parameters.Add(IsMasterParameter, SqlDbType.Bit).Value = course.IsMaster;

command.Parameters.Add(AmountCreditsParameter, SqlDbType.Float).Value = course.AmountCredits;

command.Parameters.Add(MainTeacherIdParameter, SqlDbType.UniqueIdentifier).Value = course.MainTeacherId;

command.Parameters.Add(ReadingParameter, SqlDbType.NVarChar).Value = course.Reading;

command.Parameters.Add(AssessmentMethodParameter, SqlDbType.NVarChar).Value = course.AssessmentMethod;

command.Parameters.Add(CountStudentInTeamParameter, SqlDbType.Int).Value = course.CountStudentInTeam;

connection.Open();

courseId = new Guid(command.ExecuteScalar().ToString());

connection.Close();

}

return courseId;

}