wcf вместо базы данных
От: vl690001x Россия  
Дата: 27.01.17 12:41
Оценка:
Решил все ж таки начать изучать asp.net mvc, причем прямо с core версии.
Вот по этому руководсту http://metanit.com/sharp/aspnet5/ ибо насколько я понял, пока что лучше просто ничего нет.
Начал делать сайт.
Проблема однако же в том, что все примеры используют Entity Framework, и базу данных.
Но мне нужно чтобы сайт работал через серверную часть, которая в свою очередь, будет взаимодействовать не только с сайтом.

Решил заюзать WCF — все контроллеры сайта завязаны на WCF службу, которая располагается на том же сервере.
Правильный ли это подход?
Нет ли тут каких-то потенциальных сложностей, уязвимостей и так далее?

Ну насколько я понимаю, надо подумать о том чтобы служба не была доступна извне, а также о нагрузке на нее.
Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core.
10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF
Отредактировано 27.01.2017 18:53 AndrewVK . Предыдущая версия .
wcf rest
Re: wcf вместо базы данных
От: Qulac Россия  
Дата: 27.01.17 13:53
Оценка:
Здравствуйте, vl690001x, Вы писали:

V>Решил все ж таки начать изучать asp.net mvc, причем прямо с core версии.

V>Вот по этому руководсту http://metanit.com/sharp/aspnet5/ ибо насколько я понял, пока что лучше просто ничего нет.
V>Начал делать сайт.
V>Проблема однако же в том, что все примеры используют Entity Framework, и базу данных.
V>Но мне нужно чтобы сайт работал через серверную часть, которая в свою очередь, будет взаимодействовать не только с сайтом.

V>Решил заюзать WCF — все контроллеры сайта завязаны на WCF службу, которая располагается на том же сервере.

V>Правильный ли это подход?
V>Нет ли тут каких-то потенциальных сложностей, уязвимостей и так далее?

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

V>Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core.
V>10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF

А смысл, если приделать web-морду к службе, то можно и на прямую, через ajax. Аутентификацию и авторизацию сделать на wcf, web-сервер будет только транслировать запросы, так его будет легче заменить другим, например на php или убрать, если передумали, к тому же все будет в одном месте. Для скорости использовать асинхронные запросы к службе, если служба стоит на том же сервере, то можно вызывать классы службы на прямую, без петли обратной связи по сети. Как то так.
Программа – это мысли спрессованные в код
Re[2]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 30.01.17 12:41
Оценка:
Здравствуйте, Qulac, Вы писали:


Q>А смысл, если приделать web-морду к службе, то можно и на прямую, через ajax. Аутентификацию и авторизацию сделать на wcf, web-сервер будет только транслировать запросы, так его будет легче заменить другим, например на php или убрать, если передумали, к тому же все будет в одном месте. Для скорости использовать асинхронные запросы к службе, если служба стоит на том же сервере, то можно вызывать классы службы на прямую, без петли обратной связи по сети. Как то так.


А как через JS обращаться к серверу написанному на C#? Ведь ajax это подразумевает?
Но вообще меня не особо привлекает такая идея — ведь это MVC, то есть именно контроллеры должны получать инфу с сервера, а не представления? То есть ajax тут как бы не при чем.
На php переходить не планирую. Потому что не знаю его и изучать смысла не вижу.

По идее тут какие-то web api можно использовать.
Просто я так понял, проект web api это проект именно web api, у него своя архитекрута, также mvc. А мне он получается нафиг не нужен, я в свой проект серверный буду еще какой-то веб апи сбоку прикручивать.
Как мне кажется, wcf разумный выбор, просто хочется узнать как принято в таких случаях делать.
Re[3]: wcf вместо базы данных
От: Qulac Россия  
Дата: 30.01.17 13:08
Оценка: +1
Здравствуйте, vl690001x, Вы писали:

V>Здравствуйте, Qulac, Вы писали:



Q>>А смысл, если приделать web-морду к службе, то можно и на прямую, через ajax. Аутентификацию и авторизацию сделать на wcf, web-сервер будет только транслировать запросы, так его будет легче заменить другим, например на php или убрать, если передумали, к тому же все будет в одном месте. Для скорости использовать асинхронные запросы к службе, если служба стоит на том же сервере, то можно вызывать классы службы на прямую, без петли обратной связи по сети. Как то так.


V>А как через JS обращаться к серверу написанному на C#? Ведь ajax это подразумевает?


У Вас BasicHttpBinding, доступ к службе можно получить хоть из браузера и работать через js. Можно добавить к службе конечную точку для работы через ajax: Создание служб WCF AJAX без использования ASP.NET

V>Но вообще меня не особо привлекает такая идея — ведь это MVC, то есть именно контроллеры должны получать инфу с сервера, а не представления? То есть ajax тут как бы не при чем.


V>На php переходить не планирую. Потому что не знаю его и изучать смысла не вижу.


V>По идее тут какие-то web api можно использовать.


Можно использовать web api.

V>Просто я так понял, проект web api это проект именно web api, у него своя архитекрута, также mvc. А мне он получается нафиг не нужен, я в свой проект серверный буду еще какой-то веб апи сбоку прикручивать.

V>Как мне кажется, wcf разумный выбор, просто хочется узнать как принято в таких случаях делать.

Если проблему можно решить просто использовав повторно wcf сервис в web-сервере, то почему так не сделать?
Программа – это мысли спрессованные в код
Re: wcf вместо базы данных
От: TK Лес кывт.рф
Дата: 04.02.17 18:11
Оценка: +1
Здравствуйте, vl690001x, Вы писали:

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

V>Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core.
V>10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF

WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: wcf вместо базы данных
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.02.17 20:01
Оценка:
Здравствуйте, TK, Вы писали:

TK>WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?


Ну есть же WCF Data Services
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: wcf вместо базы данных
От: TK Лес кывт.рф
Дата: 04.02.17 21:44
Оценка:
Здравствуйте, AndrewVK, Вы писали:

TK>>WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?


AVK>Ну есть же WCF Data Services


Еще у них и новая версия недавно вышла
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 05.02.17 05:35
Оценка: :)
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, vl690001x, Вы писали:


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

V>>Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core.
V>>10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF

TK>WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?


Ну понятно что это разные вещи...
Конечно я могу хранить состояние опять же в БД.
Но я так не делаю, у меня хранится в xml файлах все и в моих бинарных форматах. Мне так удобнее, чем мучиться с SQL или ORM всякими, тем более когда я пытался с ними связываться, то меня всегда поражала их удивительная неповоротливость.

Тут дело в другом — в MVC контроллерах вместо работы с БД, и вызова db.SaveChanges(); я просто вызываю методы WCF сервиса.

var result = await SERVER_CONNECTOR.AddUserAsync(model.Login, model.Password, model.Email, 0);


Как-то так.
Re[3]: wcf вместо базы данных
От: TK Лес кывт.рф
Дата: 05.02.17 08:44
Оценка: 1 (1)
Здравствуйте, vl690001x, Вы писали:

V>Ну понятно что это разные вещи...

V>Конечно я могу хранить состояние опять же в БД.
V>Но я так не делаю, у меня хранится в xml файлах все и в моих бинарных форматах. Мне так удобнее, чем мучиться с SQL или ORM всякими, тем более когда я пытался с ними связываться, то меня всегда поражала их удивительная неповоротливость.

Посмотрите noSql варианты
V>Тут дело в другом — в MVC контроллерах вместо работы с БД, и вызова db.SaveChanges(); я просто вызываю методы WCF сервиса.

V>
V>var result = await SERVER_CONNECTOR.AddUserAsync(model.Login, model.Password, model.Email, 0);
V>


V>Как-то так.


Ничем не отличается от вызова просто метода без всякого WCF. если служба располагается на том-же сервере — пойдите дальше, расположите ее в том-же процессе — все будет еще быстрее.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[4]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 05.02.17 09:36
Оценка:
Здравствуйте, TK, Вы писали:

TK>Ничем не отличается от вызова просто метода без всякого WCF. если служба располагается на том-же сервере — пойдите дальше, расположите ее в том-же процессе — все будет еще быстрее.


У меня есть 3 проекта.
1. — сайт. (Не могу сейчас показать, к сожалению, по некоторым соображениям, доделаю — обязательно покажу).
2. серверная программа.
3. — куча клиентских программ.

Серверная программа взаимодействует как с сайтом так и с клиентскими программами.
С сайтом — по WCF, с клиентскими программами — по WebSocket

Поэтому, размещать в том же процессе — это значит в процессе сайта, который, напоминаю, ASP.NET CORE.
Как это сделать, я не представляю, да и зачем — непонятно.
Отредактировано 05.02.2017 9:37 vl690001x . Предыдущая версия .
Re[5]: wcf вместо базы данных
От: Qulac Россия  
Дата: 05.02.17 10:47
Оценка:
Здравствуйте, vl690001x, Вы писали:

V>Здравствуйте, TK, Вы писали:


TK>>Ничем не отличается от вызова просто метода без всякого WCF. если служба располагается на том-же сервере — пойдите дальше, расположите ее в том-же процессе — все будет еще быстрее.


V>У меня есть 3 проекта.

V>1. — сайт. (Не могу сейчас показать, к сожалению, по некоторым соображениям, доделаю — обязательно покажу).
V>2. серверная программа.
V>3. — куча клиентских программ.

V>Серверная программа взаимодействует как с сайтом так и с клиентскими программами.

V>С сайтом — по WCF, с клиентскими программами — по WebSocket

V>Поэтому, размещать в том же процессе — это значит в процессе сайта, который, напоминаю, ASP.NET CORE.

V>Как это сделать, я не представляю, да и зачем — непонятно.

Вам попроще или побыстрее? Создайте пользователя на wcf сервисе для web-сервера. Web-сервер будет аутентифицировать пользователя обрамляясь к wcf-серверу. Быстрее только напрямую передавать токен аутентификации, но это сложнее.
Программа – это мысли спрессованные в код
Re[5]: wcf вместо базы данных
От: TK Лес кывт.рф
Дата: 05.02.17 20:31
Оценка: +1
Здравствуйте, vl690001x, Вы писали:

V>У меня есть 3 проекта.

V>1. — сайт. (Не могу сейчас показать, к сожалению, по некоторым соображениям, доделаю — обязательно покажу).
V>2. серверная программа.
V>3. — куча клиентских программ.

V>Серверная программа взаимодействует как с сайтом так и с клиентскими программами.

V>С сайтом — по WCF, с клиентскими программами — по WebSocket

Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..

V>Поэтому, размещать в том же процессе — это значит в процессе сайта, который, напоминаю, ASP.NET CORE.

V>Как это сделать, я не представляю, да и зачем — непонятно.

А WCF вам тут зачем? Разделение слоев можно сделать логически — вводить физические барьеры не обязательно.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[6]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 06.02.17 03:24
Оценка:
Здравствуйте, TK, Вы писали:

TK>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..


А как можно вызывать методы одного процесса из другого процесса в таком случае?
Re[7]: wcf вместо базы данных
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.02.17 05:13
Оценка:
Здравствуйте, vl690001x, Вы писали:

V>А как можно вызывать методы одного процесса из другого процесса в таком случае?


Подменяешь задачу решением, однако.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: wcf вместо базы данных
От: TK Лес кывт.рф
Дата: 06.02.17 06:29
Оценка:
Здравствуйте, vl690001x, Вы писали:

TK>>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..


V>А как можно вызывать методы одного процесса из другого процесса в таком случае?


Тот же WebAPI
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[8]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 06.02.17 11:05
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, vl690001x, Вы писали:


V>>А как можно вызывать методы одного процесса из другого процесса в таком случае?


AVK>Подменяешь задачу решением, однако.


Т.е., имеется в в виду что это элементарно?
И как же?
Re[9]: wcf вместо базы данных
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.02.17 11:06
Оценка:
Здравствуйте, vl690001x, Вы писали:

V>>>А как можно вызывать методы одного процесса из другого процесса в таком случае?

AVK>>Подменяешь задачу решением, однако.
V>Т.е., имеется в в виду что это элементарно?

Нет, имеется в виду, что ты подменил задачу решением.
AVK Blog
Re[8]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 06.02.17 11:07
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, vl690001x, Вы писали:


TK>>>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..


V>>А как можно вызывать методы одного процесса из другого процесса в таком случае?


TK>Тот же WebAPI


Возможно, но я только 2 недели назад взялся за изучение ASP.NET, решил сначала изучить его, а потом уж MVC.
В общем-то конечо, я не спорю что WCF тут сбоку можно сказать прикручен и скорее всего без него можно обойтись, но как именно?
Хотя я уже начал делать через него.
Доделаю, проведу какое-нибудь нагрузочное тестирование и посмотрю что отвалится первым — веб сервер или wcf-служба.
Re[10]: wcf вместо базы данных
От: vl690001x Россия  
Дата: 06.02.17 11:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, vl690001x, Вы писали:


V>>>>А как можно вызывать методы одного процесса из другого процесса в таком случае?

AVK>>>Подменяешь задачу решением, однако.
V>>Т.е., имеется в в виду что это элементарно?

AVK>Нет, имеется в виду, что ты подменил задачу решением.


Тогда я не понимаю)
Re[11]: wcf вместо базы данных
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.02.17 11:09
Оценка:
Здравствуйте, vl690001x, Вы писали:

AVK>>Нет, имеется в виду, что ты подменил задачу решением.

V>Тогда я не понимаю)

Чего ты не понимаешь? Того что "вызвать метод в другом процессе" это не задача?
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.