Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723

Серверная часть на базе http

07.08.2011, 23:18. Показов 2036. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста сделать.
Сервис необходимо реализовать на базе http. На вход подаются параметры посредством Get или
Post. На вывод отдается результат в формате XML в зависимости от параметра отвечающего за формат вывода с сервиса.

Основная часть.
  • Выдача списка родственников. Детализация: Фамилия, Имя, Дата
  • рождения. С возможностью фильтрации строк по любой комбинации полей
  • Детализация по конкретному родственнику (карточка родственника)
  • Добавление родственника
  • Редактирование родственника
  • Удаление родственника

вот что имею :
class Person
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
 
namespace TestTask1
{
    class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string SecondName { get; set; }
        public string DataOfBirth { get; set; }
        public string Address { get; set; }
        public List<Person> Family { get; set; }
 
        //TODO: В каких еще семьях состаю
        public List<Person> InOtherFamily { get; set; }
 
        public Person(string lastName = "", string firstName = "", string secondName = "",
            string dataOfBirth = "", string address = "")
        {
            FirstName = firstName;
            LastName = lastName;
            SecondName = secondName;
            Address = address;
            if (dataOfBirth == "")
                DataOfBirth = DateTime.Now.ToShortDateString();
            else
                DataOfBirth = dataOfBirth;
            Family = new List<Person>();
        }
 
        internal void AddPersonToFamily(Person person)
        { Family.Add(person); }
        internal void DeletePersoneFomFamily(Person person)
        { Family.Remove(person); }
        internal Person GetPersoneFromFamily(int id)
        {
            if(Family.Count>0)
                return Family[id];
            return new Person();
        }
        public string GetInfoFamily()
        {            
            //TODO: Сделать фильтрацию
            var temp = "Информация о родственниках:\n";
            if (Family.Count > 0)
            {
                foreach (var item in Family)
                {
                    temp += item.ToString();
                }
            }
            else
                temp += "Нет";
            return temp;
        }
        public void EditPerson(Person newPerson)
        {
            FirstName = newPerson.FirstName;
            LastName = newPerson.LastName;
            SecondName = newPerson.SecondName;
            DataOfBirth = newPerson.DataOfBirth;
            Address = newPerson.Address;
            Family = newPerson.Family;
        }
        public void EditPersonFromFamily(int id, Person newPerson)
        {
            var temp = GetPersoneFromFamily(id);
            temp.FirstName = newPerson.FirstName;
            temp.LastName = newPerson.LastName;
            temp.SecondName = newPerson.SecondName;
            temp.DataOfBirth = newPerson.DataOfBirth;
            temp.Address = newPerson.Address;
            temp.Family = newPerson.Family;
        }
        public override string ToString()
        {
            return String.Format("ФИО: {0} {1} {2}\nДата рождения: {3}\nАдресс: {4}\nКол-во родни: {5}",
              LastName, FirstName, SecondName, DataOfBirth, Address, Family.Count);
        }
    }
}


class HttpServer
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Threading;
using System.IO;
 
namespace TestTask1
{
    class HttpServer
    {
        HttpListener listener;
        People people = new People(); // Обычный List<T>
        public HttpServer()
        {
            #region 'Person'
            Person _person = new Person("Пупкин", "Евгений", "Андреевич", DateTime.Now.ToShortDateString());
            _person.AddPersonToFamily(new Person("Пупкина", "Ольга", "Викторовна", DateTime.Now.ToShortDateString()));
            _person.AddPersonToFamily(new Person("Пупкина", "Ирина", "Олеговна", DateTime.Now.ToShortDateString()));
            people.Add(_person);
            Person p2 = new Person("Пупкин", "Михаил", "Олегович", DateTime.Now.ToShortDateString());
            people.Add(p2);
            #endregion
            try
            {
                listener = new HttpListener();
                listener.Prefixes.Add("http://localhost:21500/");
 
                Console.WriteLine("Сервер запущен");
                Thread thread = new Thread(new ThreadStart(StartListen));
                thread.Start();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
        public void StartListen()
        {
            while (true)
            {
                listener.Start();
                HttpListenerContext context = listener.GetContext();
                HttpListenerRequest request = context.Request;
                HttpListenerResponse respons = context.Response;
 
                string respText = "";
                if (request.HttpMethod == "GET")
                {
                    string rawuri = request.RawUrl;
                    rawuri.Replace("\\", "/");
}
 
                byte[] buffByte = Encoding.UTF8.GetBytes(respText);
                respons.ContentLength64 = buffByte.Length;
                Stream output = respons.OutputStream;
                output.Write(buffByte, 0, buffByte.Length);
                output.Close();
                listener.Stop();
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2011, 23:18
Ответы с готовыми решениями:

Серверная часть многопользовательского приложения: правильная организация
Есть идея многопользоветельского шутера но нет опыта в данном вопросе... Что почитать? Интересует информация о серверной части, на сколько...

Серверная часть http
Необходимо реализовать серверную часть для общения с клиентскими браузерами по http. Что для этого лучше использовать cgi, fastcgi или...

Не запускается серверная часть
boost::asio::ip::tcp::endpoint server_endpoint(boost::asio::ip::tcp::v4(),9999); boost::asio::io_service server_io_service; ...

6
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
07.08.2011, 23:25
А в чем проблема - в декодировании строки запроса или в динамическом создании xml?
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
08.08.2011, 02:16  [ТС]
не понимаю какие должны быть запросы и как их декодировоть.
и еще я не понимаю принципа как мне к примеру реализовать редактирование.
А xml я делаю через сереализацию.

самое простое к примеру я набираю адресс и вывожу список людей... а как вот дальше...

Если можете, накидайте код пожалуйста

Добавлено через 2 часа 28 минут
помогите кто нибудь... что бы за ночь дописать...
Пожалуйста...
0
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
08.08.2011, 08:21
чо то мне кажется тебя вообще не в ту степь понесло) да и толку делать тестовое задание с помощью форума тем более на сеньеора)

во первых ты же не собираешься на сервере хранить объект для каждого родственника, подразумевается что ты создашь базу данных и будешь к ней запросики делать

и в задании имеется ввиду тип проекта - веб-сервис(набор веб методов) там вся связь на http\soap а на выходе автоматически xml, вот с json там гемор
и там не просто в каких семьях состою там конкретно написано определение связей я сын того-то итд..
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
08.08.2011, 13:48  [ТС]
Цитата Сообщение от WonderFlik Посмотреть сообщение
чо то мне кажется тебя вообще не в ту степь понесло) да и толку делать тестовое задание с помощью форума тем более на сеньеора)

во первых ты же не собираешься на сервере хранить объект для каждого родственника, подразумевается что ты создашь базу данных и будешь к ней запросики делать

и в задании имеется ввиду тип проекта - веб-сервис(набор веб методов) там вся связь на http\soap а на выходе автоматически xml, вот с json там гемор
и там не просто в каких семьях состою там конкретно написано определение связей я сын того-то итд..
интересненько получилось... откуда прознали про задание?

если уж на то пошло, по там про веб сервис нечего не сказано... нужно как то более конкретно писать задания... а то я всю голову сломал...

а вообще, подобное делается за 5-10 минут на MVC 3...
0
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
08.08.2011, 14:18
ну естественно там написано сервис, конечно можно изобретать велосипеды) но я думаю это не оценят, WCF можно начать ковырять тем более что во втором задании конкретно он указан
это только кажется что делов на пять минут ... там на самом деле много нюансов + юниттесты
+ wpf клиент, еще вопрос что для работы с базой данных использовать имхо надо показать что умеешь с ORM работать

да и вообще тестовое задание это чтобы отсеять совсем тех кто не в теме основная битва на собеседовании
0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
08.08.2011, 14:27  [ТС]
с WCF вообще не знаком, не стал лезть в те дебри... юнитами почти не пользуюсь, то ли просто не научился, то ли просто они мне не удобны...

в общем все как всегда, не то и не туда...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2011, 14:27
Помогаю со студенческими работами здесь

Python и серверная часть
Буду программировать серверную часть приложений. Python для этого подойдет? Или оптимальнее для такого c++ или java? Скорее всего придется...

Серверная часть приложения
Доброго времени суток. У меня такой вопрос: где можно почитать про серверную часть приложения? Понимаю, что должен быть некий сервер,...

Кроссплатформенная серверная часть на C++
Мне требуется написать небольшой сервер который будет работать Linux и под Windows желательно на С++ (я понимаю что это будет 2 сборки)...

Серверная часть приложения
Приветст. Пшу мобильное приложение которое работает с сервером. В серверной части и возникла проблема, так как не разу не занимался...

Серверная часть, как запустить
Пишу &quot;свой&quot; чатик. По советам серверную часть реализовывать буду на node.js. Раньше бек-енд не писал и несовсем разбираюсь как оно должно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru