Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
15 / 32 / 19
Регистрация: 20.08.2013
Сообщений: 730
1

SignalR или Web Api

09.05.2017, 20:14. Просмотров 2629. Ответов 4
Метки нет (Все метки)


Bash
1
Install-Package Gray.Microsoft.AspNetCore.SignalR.Server -Pre
SignalR или Web Api Проблемы
Я создавал проект на SignalR
и выяснил проблемы
SignalR странно себя видет создавая с нуля
первый проект вроди все нормально
но когда создаешь второй такой же проект
возникают проблемы он не работает
SignalR оказался такой чуствительный что даже скопировав
его с примера он не работает вообще
И у него есть еще проблема это конфликт со скриптами

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

Web Api нормально себя ведет работает
но он не SignalR, и довольно тяжело разделить там систему как в Signalr уже это сделано
например допустим мне нужно послать сообщение всем
или текущему пользователю

честно не понятно как это реализовать в Web Api
напрашуються два обьекта
C#
1
2
3
4
5
6
7
8
9
10
11
public class User
{
    public string Id {get; set;}
    public string Name {get;set;}
}
public class Message
{
    public string Id_Msg {get; set;}
    public string Id_User {get;set;}
    public string Msg {get;set;}
}
Хотя можно сделать и так
все сообщения User складировать в нутрь обьекта
C#
1
2
3
4
5
6
7
8
9
10
11
public class User
{
    public string Id {get; set;}
    public string Name {get;set;}
    public Message Msg {get;set;}
}
public class Message
{
    public string Id_Msg {get; set;}
    public string Msg {get;set;}
}
Как лучше черт его знает ?
играет ли роль нагрузка ?

Второй момент если мы вытаскиваем сообщения
то естественно лучше пускай они идут списком
списком читаються их id и заменяються на юзеров , как добавиться так и запищется

C#
1
2
3
4
5
6
// GET: api/values
        [HttpGet]
        public IEnumerable<UserChat> Get()
        {
            return GetListUsers();
        }
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Получить
  function GetUsers() {
      $.ajax({
          url: '/api/chats',
          type: 'GET',
          contentType: "application/json",
          success: function (users) {
              var rows = "";
              $.each(users, function (index, user) {
                  // добавляем полученные элементы в таблицу
                  rows += row(user);
                  
              })
              //$("table tbody").append(rows);
              messenger.recieve(rows);
          }
      });
  }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2017, 20:14
Ответы с готовыми решениями:

Asp core 2 Signalr VS 2017 или о боже что куда зачем?
История такова, что пол года назад сидел на vs 2015 и простенький чатик работает просто на ура,...

Web Api+AngularJs
Добрый день, как сделать вывод данных с Api контролера на страничку api controller using...

Клиент Web Api
Авторизуюсь к web api - следующий запрос выдает не авторизованный доступ, авторизация на сервере...

Производительность Web API
Приветствую. Решил разобраться с Web api. Создал проект. Опубликовал. Все работает, но есть...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы С#-разработчиков‌
4
Фрилансер
735 / 346 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
10.05.2017, 09:16 2
Лучший ответ Сообщение было отмечено GENDALF_ISTARI как решение

Решение

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
SignalR или Web Api
SignalR - это уже готовое решения для разработки real-time приложений с использование websocket'ов. В WebApi подобный механизм придется реализовывать вручную: https://blogs.msdn.microsoft.c... ebsockets/

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
Я создавал проект на SignalR
и выяснил проблемы
SignalR странно себя видет создавая с нуля
первый проект вроди все нормально
но когда создаешь второй такой же проект
возникают проблемы он не работает
SignalR оказался такой чуствительный что даже скопировав
его с примера он не работает вообще
И у него есть еще проблема это конфликт со скриптами
SignalR со своими приколами
У меня проблем особых не возникало. Прочитайте документацию, и делайте все строго по ней, т.к. обработка ошибок у SignalR не особо точная и баг можно словить не сразу, а только в ходе длительного тестирования. Нужно делать все строго по документации.

Добавлено через 3 минуты
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
играет ли роль нагрузка ?
Играет роль безопасность данных, отправляя пользователя в композиции с его сообщениями, эти сообщения будут доступны всем остальным клиентам. Вопрос очевиден, т.к. объем данных увеличивается.

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

Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
Второй момент если мы вытаскиваем сообщения
то естественно лучше пускай они идут списком
списком читаються их id и заменяються на юзеров , как добавиться так и запищется
хотя бы так:

Javascript
1
2
var communication = (new DefaultCommunicationCreator()).create();
communication.updateUsers();
Javascript
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
  
 
/***communication***/
 
/*communication creator*/
function DefaultCommunicationCreator(){
    
}
DefaultCommunicationCreator.prototype.create = function(){
    return new Communication(new Receiver(), new Sender());
}
 
/*client-server longpooling communication*/
function Communication(receiver, sender){
    this.receiver = receiver;
    this.sender = sender;
}
 
Communication.prototype.updateUsers = function(){
    this.sender.getUsers(this.receiver.updateUsers);
}
 
 
/***Receiver-sender***/
 
/*client-server longpooling receiving data from the server*/
function Receiver(){
}
 
Receiver.prototype.updateUsers = function(users){
      var rows = "";
      $.each(users, function (index, user) {
          // добавляем полученные элементы в таблицу
          rows += row(user);
      });
      //$("table tbody").append(rows);
      messenger.recieve(rows);
}
 
/*client-server longpooling sending data to the server*/
function Sender(){
}
 
Sender.prototype.getUsers = function(callbackSuccess) {
    this.sendDataAsync('/api/chats', "GET", callbackSuccess)
}
 
Sender.prototype.sendDataAsync = function(url, requestType, success)
{
      $.ajax({
          url: url,
          type: requestType,
          contentType: "application/json",
          success: success
      });
}
  }
1
15 / 32 / 19
Регистрация: 20.08.2013
Сообщений: 730
10.05.2017, 11:36  [ТС] 3
Вообще я думал как на Web Api сделать аналог это будет похоже только есть недостатки
класс один будет вылупливать команды
замена отправки всем или тикущему
он может использовать enum
где swich присвоет команды
а вторая функция будет принимать и выполнять

Будет 3 обьекта
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class User
{
    public string Id {get; set;}
    public string Name {get;set;}
}
public class Message
{
    public string Id_Msg {get; set;}
    public string Id_User {get;set;}
    public string Msg {get;set;}
}
public class MessageModel
{
    public string Id_Msg {get; set;}
    public string NameUser {get;set;}
    public string Msg {get;set;}
}
Идея такая при получении списка List<Message> из Get
мы обрабатываем выйняв Id_User и заменяем на Имена NameUser
дальше мы можем отсортировать по дате , или даже это не делать
ведь записываться сообщения будут списком в List<Message>
как записаны так и будут вытянуты - порядок сообщений
и тащим уже List<MessageModel> в скрипт и выводим кто написал и его сообщение
можно добавить еще и public DateTime Date {get;set;} дату сообщения чтоб потом сортировать по ней
практически это логичная конструкция , а внеземной класс что использовать будет enum, swich будет играть роль
разделителя он будет как бы выполнять операции в Post, Get, Delete
аналогичны типа Client.All.Listner("");
Clent.Cell.Send("") что то такое типо
но смутно понимаю как это будет сделано

я попробую вашу конструкцию pro_100_gram
если не получиться скину вам пример
может не чистая сила тут мне портит код
а то блин делаешь как надо 1-2 раза работает да
но похожое 3-10 раз все не работает а разницы ни какой, докапуюсь до букв,
сдуреть можно

Добавлено через 5 минут
На счет безопасности , можно обрабатывать это в самых Post, Get , и не париться
XSS защита например
0
Фрилансер
735 / 346 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
10.05.2017, 11:41 4
GENDALF_ISTARI,
Я бы все же рекомендовал использовать SignalR, все будет гораздо проще, просто нужно читать документацию, там полно примеров.
0
15 / 32 / 19
Регистрация: 20.08.2013
Сообщений: 730
10.05.2017, 11:51  [ТС] 5
SignalR я рыл инфу - накопал примеры только на Asp Net там да работает эта скотина
2.2.2 версия , но на Core не работает пашет с перебоями

Если есть пример SignalR, на Core, с использованием OnMessage, OnConnect, Disconect , SendMessage
скинте , потому что другие примеры что находил они замудренные там даже реализовуеться
не то что нужно , а нужно простое без всяких перессылок обьекта на обьект что можно запутаться

Добавлено через 6 минут
дурь заключаеться в применении например

C#
1
2
3
4
5
[HubName("Kimono")]
public class Kronos : Hub
{
 
}
Javascript
1
var kykeshka = $.connection.hub.createHubProxy("Kimono");
Если дальше описать вызов функции invok
и так далее
то смотря в консоль браузера я получаю ошибку
connection.hub.createHubProxy("Kimono");
короче нету вообще она не реализовуеться
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2017, 11:51

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Авторизация в Web API
Всем привет. Я использую ASp.NET WEB API и делаю авторизацию к нему. По сути мне нужно только...

Авторизация на web api
Здравствуйте. Пытаюсь сделать авторизацию на web api с куки и вообще не понимаю, как. Про куки...

Web API Сервер
Есть сервер. Я знаю его IP адрес, логин и пароль. Как подключиться к серверу используя web api,...

Web api, out of memory
Добрый день. Имеется вот такой код public class FileHelper { public static string...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.