Решил все ж таки начать изучать asp.net mvc, причем прямо с core версии.
Вот по этому руководсту http://metanit.com/sharp/aspnet5/ ибо насколько я понял, пока что лучше просто ничего нет.
Начал делать сайт.
Проблема однако же в том, что все примеры используют Entity Framework, и базу данных.
Но мне нужно чтобы сайт работал через серверную часть, которая в свою очередь, будет взаимодействовать не только с сайтом.
Решил заюзать WCF — все контроллеры сайта завязаны на WCF службу, которая располагается на том же сервере.
Правильный ли это подход?
Нет ли тут каких-то потенциальных сложностей, уязвимостей и так далее?
Ну насколько я понимаю, надо подумать о том чтобы служба не была доступна извне, а также о нагрузке на нее.
Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core.
10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF
Здравствуйте, 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 или убрать, если передумали, к тому же все будет в одном месте. Для скорости использовать асинхронные запросы к службе, если служба стоит на том же сервере, то можно вызывать классы службы на прямую, без петли обратной связи по сети. Как то так.
Q>А смысл, если приделать web-морду к службе, то можно и на прямую, через ajax. Аутентификацию и авторизацию сделать на wcf, web-сервер будет только транслировать запросы, так его будет легче заменить другим, например на php или убрать, если передумали, к тому же все будет в одном месте. Для скорости использовать асинхронные запросы к службе, если служба стоит на том же сервере, то можно вызывать классы службы на прямую, без петли обратной связи по сети. Как то так.
А как через JS обращаться к серверу написанному на C#? Ведь ajax это подразумевает?
Но вообще меня не особо привлекает такая идея — ведь это MVC, то есть именно контроллеры должны получать инфу с сервера, а не представления? То есть ajax тут как бы не при чем.
На php переходить не планирую. Потому что не знаю его и изучать смысла не вижу.
По идее тут какие-то web api можно использовать.
Просто я так понял, проект web api это проект именно web api, у него своя архитекрута, также mvc. А мне он получается нафиг не нужен, я в свой проект серверный буду еще какой-то веб апи сбоку прикручивать.
Как мне кажется, wcf разумный выбор, просто хочется узнать как принято в таких случаях делать.
Здравствуйте, 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-сервере, то почему так не сделать?
Здравствуйте, vl690001x, Вы писали:
V>Ну насколько я понимаю, надо подумать о том чтобы служба не была доступна извне, а также о нагрузке на нее. V>Пока что удалось использовать только BasicHttpBinding, остальные к сожалению не работают (возможно пока что) в .net core. V>10 тысяч запросов отрабатывает последовательно за 5 секунд. По-моему, неплохо. БД бы сильно тупила, особенно всякие EF
WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?
Ну есть же WCF Data Services
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
TK>>WCF это транспорт, а БД это впервую очередь хранения состояния. И вы так можете взять и в легкую заменить одно на другое?
AVK>Ну есть же WCF Data Services
Еще у них и новая версия недавно вышла
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, 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);
Здравствуйте, 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. если служба располагается на том-же сервере — пойдите дальше, расположите ее в том-же процессе — все будет еще быстрее.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Ничем не отличается от вызова просто метода без всякого WCF. если служба располагается на том-же сервере — пойдите дальше, расположите ее в том-же процессе — все будет еще быстрее.
У меня есть 3 проекта.
1. — сайт. (Не могу сейчас показать, к сожалению, по некоторым соображениям, доделаю — обязательно покажу).
2. серверная программа.
3. — куча клиентских программ.
Серверная программа взаимодействует как с сайтом так и с клиентскими программами.
С сайтом — по WCF, с клиентскими программами — по WebSocket
Поэтому, размещать в том же процессе — это значит в процессе сайта, который, напоминаю, ASP.NET CORE.
Как это сделать, я не представляю, да и зачем — непонятно.
Здравствуйте, 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-серверу. Быстрее только напрямую передавать токен аутентификации, но это сложнее.
Здравствуйте, vl690001x, Вы писали:
V>У меня есть 3 проекта. V>1. — сайт. (Не могу сейчас показать, к сожалению, по некоторым соображениям, доделаю — обязательно покажу). V>2. серверная программа. V>3. — куча клиентских программ.
V>Серверная программа взаимодействует как с сайтом так и с клиентскими программами. V>С сайтом — по WCF, с клиентскими программами — по WebSocket
Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..
V>Поэтому, размещать в том же процессе — это значит в процессе сайта, который, напоминаю, ASP.NET CORE. V>Как это сделать, я не представляю, да и зачем — непонятно.
А WCF вам тут зачем? Разделение слоев можно сделать логически — вводить физические барьеры не обязательно.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..
А как можно вызывать методы одного процесса из другого процесса в таком случае?
Здравствуйте, vl690001x, Вы писали:
TK>>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..
V>А как можно вызывать методы одного процесса из другого процесса в таком случае?
Тот же WebAPI
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, vl690001x, Вы писали:
V>>А как можно вызывать методы одного процесса из другого процесса в таком случае?
AVK>Подменяешь задачу решением, однако.
Т.е., имеется в в виду что это элементарно?
И как же?
Здравствуйте, vl690001x, Вы писали:
V>>>А как можно вызывать методы одного процесса из другого процесса в таком случае? AVK>>Подменяешь задачу решением, однако. V>Т.е., имеется в в виду что это элементарно?
Нет, имеется в виду, что ты подменил задачу решением.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, vl690001x, Вы писали:
TK>>>Зачем вам в этой схеме WCF? Одно дело когда есть Legacy софт от которого не избавиться, а другой вариант, когда вы смотрите чем БД заменить..
V>>А как можно вызывать методы одного процесса из другого процесса в таком случае?
TK>Тот же WebAPI
Возможно, но я только 2 недели назад взялся за изучение ASP.NET, решил сначала изучить его, а потом уж MVC.
В общем-то конечо, я не спорю что WCF тут сбоку можно сказать прикручен и скорее всего без него можно обойтись, но как именно?
Хотя я уже начал делать через него.
Доделаю, проведу какое-нибудь нагрузочное тестирование и посмотрю что отвалится первым — веб сервер или wcf-служба.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, vl690001x, Вы писали:
V>>>>А как можно вызывать методы одного процесса из другого процесса в таком случае? AVK>>>Подменяешь задачу решением, однако. V>>Т.е., имеется в в виду что это элементарно?
AVK>Нет, имеется в виду, что ты подменил задачу решением.