|
ASP.NET vs PHP. На чем выгоднее заказать проект ? | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
shulerr
20.02.15
✎
09:27
|
Приветствую, коллеги. Необходимо совсем небольшое web-приложение с БД в пару таблиц. На чем дешевле сделают? Что проще/дешевле поддерживать и развивать потом?
|
||||||||||
1
Asmody
20.02.15
✎
09:28
|
(0) на PHP. Тупо потому, что она на любом самом дешевом хостинге есть
|
||||||||||
2
shulerr
20.02.15
✎
09:31
|
Мне кажется, что стоимость хостинга по сравнению со стоимостью разработки можно пренебречь.
|
||||||||||
3
Gepard
20.02.15
✎
09:45
|
(2) смотря какой проект... если что-то высоконагруженное, то может быть, а если достаточно хостинга за 150р в месяц, то однозначно PHP
|
||||||||||
4
shulerr
20.02.15
✎
09:47
|
Получается, код на .net дороже чем на PHP?
|
||||||||||
5
Gepard
20.02.15
✎
09:48
|
(4) скорей всего одинаково, вопрос в дальнейшей работе системы
|
||||||||||
6
ShoGUN
20.02.15
✎
10:01
|
(4) Для нормальной работы ASP.NET нужен виндовый хостинг, он ощутимо дороже никсового.
|
||||||||||
7
shulerr
20.02.15
✎
16:47
|
Если пока не принимать во внимание стоимость хостинга, в чем плюсы и минусы обоих вариантов?
|
||||||||||
8
AlexNV
20.02.15
✎
17:13
|
Виндовый хостинг стоит почти столько же сколько и ПХП (https://hosting.reg.ru/hosting/windows)
Пиши на том, что знаешь. Если есть потребность в защите, то скорее .net чем пхп. А так сейчас мэйнстрим JavaScript |
||||||||||
9
anatoly
20.02.15
✎
17:15
|
есть куча фришных движков.
php |
||||||||||
10
AlexNV
20.02.15
✎
17:15
|
(7) по .net сейчас есть целая куча обучалок + язык приличный.
ASP.NET |
||||||||||
11
Злопчинский
20.02.15
✎
17:53
|
php
php |
||||||||||
12
Gepard
20.02.15
✎
19:41
|
-
php |
||||||||||
13
intglass
20.02.15
✎
19:47
|
Скажу честно, что давно не слежу за развитием PHP и ASP.NET, но раньше считалось, что PHP намного проще, намного надёжнее и быстрее для маленьких проектов.
ASP.NET выбирали только если крупные проекты. Возможно сейчас ASP.NET развивается уже лучше, хотя не думаю что PHP отстал. php |
||||||||||
14
shulerr
21.02.15
✎
00:24
|
На сколько я понял, найти спеца по ASP сложнее чем по php? Соответственно дороже?
(8) писал когда-то на c#. Поможет? |
||||||||||
15
zulu_mix
21.02.15
✎
00:36
|
на питоне наваяй и не парь мозги
другое |
||||||||||
16
tridog
21.02.15
✎
02:28
|
(8) А вот с этого места подробнее. Мейнстрим чего у Вас JavaScript?
|
||||||||||
17
shulerr
21.02.15
✎
11:21
|
(15) а я уже подумал, что без тебя придется.
(13) в v.studio появились всякие mvc, которые автоматом с базой работают и формы рисуют. Если всё так,как говорят в их рекламе, то PHP реально отстал. |
||||||||||
18
sda553
21.02.15
✎
11:22
|
О чем речь? lamp лицензий под небольшой проект не требует. Программистов туча
php |
||||||||||
19
MadHead
21.02.15
✎
11:31
|
(17) пхп никогда не догонял
|
||||||||||
20
MadHead
21.02.15
✎
11:32
|
если говорить о стоимости то php конечно дешевле .net
|
||||||||||
21
iamnub
21.02.15
✎
11:32
|
(17)
--в v.studio появились всякие mvc, которые автоматом с базой работают и формы рисуют. Это в каком месте?? MVC как бы наоборот - отделен от БД и склоняет к рисованию формы руками. |
||||||||||
22
MadHead
21.02.15
✎
11:35
|
(21) глупости говорите. Схема mvc никак не связано со способом создания UI
|
||||||||||
23
iamnub
21.02.15
✎
11:38
|
(22)
Ты не в теме. Тут говорят не о паттерне MVC, а о экосистеме ASP.NET MVC. И в сравнении с ASP.NET WebForms - в MVC нужно намного больше "касаться" разметки. У тебя есть еще вопросы? |
||||||||||
24
iamnub
21.02.15
✎
11:41
|
(0)
Но вообще я тебе так скажу - БД в пару таблиц на .NET технологиях можно сделать за время = описанию бд. Давай его сюда и я тебе выложу рабочий проект, который ты сможешь выложить на хостинг. За час. (если только у тебя там в таблице не 200 полей) |
||||||||||
25
iamnub
21.02.15
✎
11:48
|
БД в пару таблиц на .NET технологиях
читать как Web-приложение с БД в пару таблиц на .NET технологиях |
||||||||||
26
shulerr
21.02.15
✎
13:29
|
(24) Пасиб конечно, но мне самому интересно)). Поспрашиваю тут, если особо пинать не будут.
|
||||||||||
27
iamnub
21.02.15
✎
13:34
|
(26)
--На чем дешевле сделают? --Пасиб конечно, но мне самому интересно)) ??? |
||||||||||
28
shulerr
21.02.15
✎
13:34
|
(24)+ подскажите пока, что почитать. Не очень длинное по mvc.
|
||||||||||
29
iamnub
21.02.15
✎
13:41
|
Ахахах, конечно подскажу.
Список ключевых слов, про которое нужно иметь представление, собираясь наваять web-приложение с парой таблиц. C# (собственна сам язык) Entity Framework Code First (БД) Конфиги аппликации (Много мутоты именно там задается) SQL LocalDB (БД по умолчанию, на хостинге не работает) Twitter Bootstrap (CSS-framework) HTML (Но можно писать helper-ы, как сумашедший) JavaSсript/jQuery (можно TypeScript) (date picker нативный только в хроме) Архитектура ASP.NET MVC (Как запрос из броузера идет в твое приложение) LINQ (Куда без него) (Ну это вообще фоном.) |
||||||||||
30
iamnub
21.02.15
✎
13:43
|
В принципе любая из существующих (но толстых) книг по ASP.NET MVC дает начальное знакомство с некоторыми их технологий, и на примере создания какого-нибудь магазина - проводит сквозь все этапы.
|
||||||||||
31
iamnub
21.02.15
✎
13:54
|
Мля, память как у рыбки.
Если планируется интеграция с другими системами, то неплохо будет добавить: RESTful-подход WebAPI (+OData) Если что забыл/перепутал, то @ MadHead меня поправит |
||||||||||
32
shulerr
21.02.15
✎
19:33
|
(29) сегодня мой мир перевёрнут дважды. Сначала mvc, потом bootstrap... Я-то думал, что это всё ручками пишут. Спасибо, добрый человек.
|
||||||||||
33
iamnub
21.02.15
✎
20:21
|
(32)
Я забыл еще Scaffolding - это генерация контроллеров(и их операций CRUD!!) и вьюх только на основании описании твоих моделей. Причем вьюхи будут замешаны на bootstrap-е. Останется только ссылки в меню прописать и твоё приложение готово. |
||||||||||
34
tridog
23.02.15
✎
14:57
|
(29) Да уж, по сложности дотнет вполне догнал жабу
|
||||||||||
35
Serginio1
24.02.15
✎
10:35
|
Я выбрал ASP.NET. Хотя я сам пишу, но писать на нем очень просто и легко.
http://metanit.com/sharp/mvc5/index.php http://metanit.com/sharp/aspnet_webapi/index.php Кстати хорошо развивается и под Mono http://habrahabr.ru/post/193156/ ASP.NET |
||||||||||
36
Serginio1
24.02.15
✎
10:49
|
Кроме того на подходе кроссплатформенный ASP.NET vNext
http://habrahabr.ru/post/242243/ http://habrahabr.ru/company/infopulse/blog/226427/ |
||||||||||
37
iamnub
24.02.15
✎
16:16
|
(35)
--писать на нем очень просто и легко. Основная запара конечно во front-end-е. 1С-ники даже не знают, что стоит за полем ввода типа ДатаВремя - это нечто. |
||||||||||
38
shulerr
21.03.15
✎
00:33
|
Заразили. Пытаюсь разбираться. Появилась проблема. Есть две модели со связью многие ко многим. В бд создается посредством code first три таблицы. С поммощью вьюшек все замечательно заполняется, в базу попадают нужные строки. Вопрос в удалении или изменении данных таблицы, обеспечивающей связь. Содержит она только два поля с ключами из остальных двух таблиц и модели не имеет. При вызове метода лбой из моделей remove(), связь остается. Как обеспечить автоматическое удаление/изменение строк? Или всё же нужна модель?
|
||||||||||
39
Torquader
21.03.15
✎
00:37
|
(38) Вообще-то, за удаление из BD должны отвечать триггеры в самой базе - писать что-то в коде нерационально.
|
||||||||||
40
Torquader
21.03.15
✎
00:47
|
Вообще, сравнивать .NET и php не совсем корректно,
так как php-это просто язык написания сценариев. А .net - это всё же некоторое законченное решение для программирования. Опять же, нужно определиться, где приложение будет работать, так как, например, мобильные браузеры могут чего-то современного не потянуть. Под php также есть генераторы приложений, которые позволяют "нарисовать" базу данных, просто определив таблицы в MySql. |
||||||||||
41
shulerr
21.03.15
✎
00:49
|
(39) а как же code first? Если бы не это словосочетание, светящееся на каждой странице мануала, я бы сделал триггер. Но почему-то мне кажется, что всё там гораздо проще и я где-то что-то не инициализировал.
|
||||||||||
42
shulerr
21.03.15
✎
00:56
|
(40) речь об asp net mvc. Таблички сами создаются при определении классов, наследуемых от специального интерфейса.
Работать на мобильных браузерах позволяет bootstrap. Всё это встроено в прект по дефолту. Плюс авторизация и генерация разметки. Все инструменты есть с visual studio for web, которая бесплатна. Красота. Только вот связи не удаляются)) |
||||||||||
43
Torquader
21.03.15
✎
00:57
|
(41) По мне так нормальная система построения приложений должна начинаться с рисования базы данных, а всё, что будет её обслуживать, сейчас компьютер может сам написать без всяких проблем.
Они же исходят из того, что описывается, что хотят видеть, а хранение в базе система сама "придумает". Я помню мне товарищ где-то в 2001 году показывал программулину для Linux-а, где в полувизуальном режиме рисовались таблицы и связи между ними, а потом давилась кнопка "сделать", и получалась рабочая база с Web-интерфейсом, но там все страницы были на статическом html без всяких там json-ов и прочих ускорителей. |
||||||||||
44
shulerr
21.03.15
✎
01:03
|
(43) тем не менее, в ms решили наоборот: определил класс - получи таблицу)). Это можно также сделать в первцю очередь, а потом описать логику.
|
||||||||||
45
Asmody
21.03.15
✎
01:05
|
Что еще вымораживает в .Net, так это развертывание. Накидал приложеньице в студии, создал пакет. Ок.
Идешь на боевой сервер с IIS, оказывается надо еще web deploy поставить. Ок, идешь на MS, скачиваешь какую-то хрень, в которой 100500 ненужных тебе пунктов, где-то там между вордпрессом и питоном, нужный тебе веб деплой, но почему-то в двух версиях. Выбираешь последний, он зачем-то начинает ставить компоненты SQL Express, где-то посреди процесса обламывается с невнятной по микрософтовски ошибкой. Запускаешь по новой, находишь не последний деплой, он начинает ставить другие компоненты SQL Express, еще что-то, наконец, устанавливается. Попутно ты обнаруживаешь, что последний деплой, на котором установка крешнулась, таки стоит, и теперь у тебя 2 деплоя. Ок. Дальше оказывается, что для установки того пакета из студии надо несколько раз запустить екзешник из деплоя в командной строке, указав еще какие-то параметры (привет любимый linux). При одном из запусков перед глазами проносится кучка отладочных сообщений, из которых следует, что нифига не установилось, а еще через десяток строк - что не хватает прав. Ок, запускаем от админа и повторяем. В результате твоё приложение чудом появилось на IIS, ты с радостью нажимаешь Обзор, а оно в ответ: всё плохо-плохо-плохо. И где-то там про то, что нет платформы .Net. Как так нет Net?! Потом оказывается, что проект собран для 4.5, а на сервере 4.0. Ок, мы-то уже знаем куда идти. Скачиваем, ставим. Что видим? Перезагрузи сервер! Из-за одногусенького приложеньица мне предлагают перегрузить сервер, ажур им в жопу! |
||||||||||
46
Torquader
21.03.15
✎
01:08
|
(45) .Net повторяет полностью Java - напишешь всё быстро и красиво, а потом долго и мучительно разбираешься, почему на другой машине это не заработало или заработало не так, как нужно.
И все эти "макаронные зависимости", когда одно требует другое, другое - третье, и так, пока почти все пакеты не поставишь - и возникает вопрос - а нахрена, если приложение чуть сложнее "Hello World". |
||||||||||
47
Garykom
гуру
21.03.15
✎
01:11
|
(46) ну зачем же так про java?
с зависимостями то все понятно ка раз и никаких проблем нету можно даже разные версии одних либ требуемые для разных частей проекта(заюзанных либ) подсовывать )) т.е. да есть проблема разных требуемых версий общих библиотек (старых и новых), но она разрешима либо простым путем засунуть все либо чуть более сложным через пересборку из исходников |
||||||||||
48
Torquader
21.03.15
✎
01:18
|
(47) Понятно, что в одну программу можно засунуть две версии библиотеки - вопрос только в том, а зачем это нужно.
Все мечтают о повторном использовании кода, а получается наоборот - множество версий одного и того же. |
||||||||||
49
Masquerade
21.03.15
✎
01:47
|
(38)
--Вопрос в удалении или изменении данных таблицы, обеспечивающей связь. Ты вообще не должен касаться этой таблицы, да у тебя и средств для этого не должно быть. Ты работаешь только со своими таблицами - и всё. Вызывай remove() на своих моделях. (41) Оставайся на уровне ORM. Про триггеры в БД вообще забудь - тебе сейчас насоветуют. |
||||||||||
50
Ушел с дуба и frm330
21.03.15
✎
07:54
|
Питон еще есть.
|
||||||||||
51
Torquader
21.03.15
✎
10:59
|
(49) Проблема всех "замечательных" решений, которые не смотрят в базу данных заключается в полной потере производительности при возрастании объёма базы.
|
||||||||||
52
shulerr
21.03.15
✎
11:00
|
(49)одно из свойств модели - коллекция (List типа другой модели). При изменении, List очищается и заполняется новыми данными. В таблице бд должно ведь тоже самое произойти - удалятся старые строки и появятся новые? Но старые не удаляются, а новые пытаются появиться. Получаем ошибку про уникальность, если в новом и старом есть совпадающие элементы, иесли нет - получаем и новые и старые строки в твблице связей, а в листе только новые.
|
||||||||||
53
Asmody
21.03.15
✎
11:24
|
(50) о да, аж две частично совместимых ветки
|
||||||||||
54
Masquerade
21.03.15
✎
13:08
|
(52)
Ты что-то не то сделал. Во первых - не должно быть ошибки уникальности. Во вторых - а контекст "знает", что ты удаляешь записи из коллекции? |
||||||||||
55
shulerr
21.03.15
✎
13:54
|
(54) да, контекст не знал. Я с вьюхой перемудрил и в контроллер получал не полностью заполненную модель. Коллекция как раз была null. В методе контроллера создавал коллекцию заново, отсюда и ошибка. Спасибо.
|
||||||||||
56
Jaap Vduul
21.03.15
✎
13:55
|
|||||||||||
58
Garikk
21.03.15
✎
16:05
|
Конечно PHP
я вообще не понимаю почему ASP с ним сравнивают, тогда уж давайте JSP для актуальности добавим....ни у кого же даже мыслей не возникает его использовать, хотя он к ASP гораздо ближе чем PHP php |
||||||||||
59
shulerr
21.03.15
✎
16:25
|
(58) я по своей полной дремучести в этих вопросах, пытался выбрать технологию, с помощью которой было бы дешевле создать небольшое web-приложение. Вообще, сначала хотел его заказать где-нибудь. Теперь вот сам полез разбираться т.к. за php-шный код попросили 40тыр., а C# я немного помню, да и интересно стало. В данном случае, ASP надо читать как ASP+остальные решения, необходимые для создания web-приложения. Тоже самое с PHP и всем остальным.
|
||||||||||
60
Masquerade
21.03.15
✎
17:53
|
(55)
-- Я с вьюхой перемудрил Старайся делать всё как можно проще. Усложнишь потом. |
||||||||||
61
Necessitudo
21.03.15
✎
21:09
|
Предлагаю ruby on rails, а в качестве хостинга Heroku.
|
||||||||||
62
Necessitudo
21.03.15
✎
21:12
|
Можно обойтись даже без javascript, голым ruby+html теги + немножко css.
|
||||||||||
63
shulerr
22.03.15
✎
22:29
|
Еще вопрос. В мануалах описывается создание классов-контекстов для получения экземпляра класса модели из БД. Как правильнее: использовать один контекст для всех моделей, или для каждой определить свой? И как в обоих случаях поступать с миграциями?
|
||||||||||
64
sikuda
22.03.15
✎
22:38
|
php, wordpress, plugin(Custom Database Tables)
php |
||||||||||
65
shulerr
22.03.15
✎
22:47
|
(63)+ С одной стороны, используя один контекст для всех моделей, выдираем все данные из базы по каждому чиху. С другой стороны, при миграции, студия предлагает указать контекст, количество которых теоретически может перевалить за сотню. Оба варианта не подходят.
|
||||||||||
66
Masquerade
23.03.15
✎
01:28
|
(63)
O_O |
||||||||||
67
Masquerade
23.03.15
✎
01:32
|
Контекст для несложных приложений вообще один.
Он работает с моделями, которых может быть хоть тыщща. При миграции - указываем имя контекста. Для каждой модели свой контекст... Как это вообще может придти в голову? Это все равно что создавать БД для каждой сущности. Контекст - это типа прослойка между приложением и БД. Хорошим тоном считается уничтожать контекст после того, как локальная надобность в нем отпадет. |
||||||||||
68
shulerr
23.03.15
✎
07:44
|
(67) я правильно понял, что конструктор контекста не извлекает все dbset-ы, которые в нем указаны?
|
||||||||||
69
Masquerade
23.03.15
✎
12:08
|
(68)
Ну конечно. DbSet-ы - это маппинг и создание. |
||||||||||
70
Serginio1
23.03.15
✎
12:26
|
(69) Если например перед созданием коннекта в базе указать Database.SetInitializer<NorthwindContext>(null); То будет только маппинг.
public class NorthwindContext : DbContext { static NorthwindContext() { Database.SetInitializer<NorthwindContext>(null); } public NorthwindContext() : base("Name=NorthwindContext") { } |
||||||||||
71
shulerr
27.03.15
✎
10:50
|
(67) Тогда почему студия генерит такой код в проекте по умолчанию:
public class ApplicationUser : IdentityUser { //модель } public class : IdentityDbContext<ApplicationUser> { //контекст } Как только я создаю свой контекст, в приложении их становится два)). Получается, для пользователя должен быть отдельный контекст? Почему? И для каких моделей ещё необходимо создавать отдельный контекст? Или ApplicationDbContext удалить и его содержимое перенести в контекст, который я создал для всего остального? |
||||||||||
72
shulerr
27.03.15
✎
10:51
|
(71) + и что будет с миграциями, если я удалю класс ApplicationDbContext?
|
||||||||||
73
Masquerade
27.03.15
✎
11:20
|
(71)
--Получается, для пользователя должен быть отдельный контекст? Поверь, так лучше. DB, которая хранит юзеров и пароли - лучше вообще меняться не должна. (72) При создании миграций ты указываешь - с каким контекстом они должны работать. Я бы тебе советовал - оставить юзеров в покое, а миграции наускать на свой контекст. И всё будет ровно. |
||||||||||
74
shulerr
27.03.15
✎
11:38
|
Спс. Где ты вычитываешь это всё?
|
||||||||||
75
Masquerade
27.03.15
✎
11:49
|
(74)
O_O Да повсюду. Читаешь книгу, делаешь что-то, сталкиваешься с проблемой - роешь инет. Закончишь пару проектов - будешь знать столько же. ))) Еще будешь биться насмерть в тредах типа "Аннотации vs Fluent Api" |
||||||||||
76
shulerr
28.03.15
✎
18:20
|
Еще вопрос не гуглится. В MVC 5 используется Identity для авторизации. Почему я не вижу таблиц пользователей в базе? Там только мои таблицы, которые создаются при миграции. При этом, зарегистрироваться возможно и залогиниться потом тоже. Где база юзеров? Интересует потому, что каждый пользователь что-то будет создавать. Соответственно, видеть должен только свои данные. Для этого, я их должен отфильтровать, а сделать связь с таблицей пользователей не могу т.к. не вижу её. Изменение модели ApplicationUser тянет ошибку и проект не компилится потом. Говорит, что не указан ключ у ролей, хотя я их вообще не трогал (найти даже не смог о_О).
|
||||||||||
77
Masquerade
29.03.15
✎
17:00
|
1. База для юзеров создается при первом к ней обращении.
2. Посмотреть на строку подключения к ней ты можешь в файле Web.config Это будет выглядеть типа: <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-erase-20150329045518.mdf;Initial Catalog=aspnet-erase-20150329045518;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> Где - aspnet-erase-20150329045518.mdf - имя БД, хранящей юзеров. (LocalDb) - это относительно новая фича от MS - локальный SQL сервер. Годится для разработки, но в той же AZURE не поддерживается. Но шаблон в VS это поддерживает - и меняет строку подключения при деплое. |
||||||||||
78
Masquerade
29.03.15
✎
17:03
|
Чтобы я посоветовал.
1. При сохранении, скажем роли для юзера (а это тебе нужно будет дописать) - сохранять твою личную модель юзера в свой контекст. 2. В этом случае - ты получаешь от Identity имя/ключ авторизовавшегося юзера и больше контекст авторизации тебе не нужен. |
||||||||||
79
Маленький Вопросик
29.03.15
✎
17:18
|
никак не могу отказаться от php - все-так гениальное изобретение... просто, надежно, быстро..... всякие там асп.нет - конкурирующие технологии - шляпа
|
||||||||||
80
Masquerade
29.03.15
✎
17:39
|
(79)
PHP - это Personal Home Page - про это речь? |
||||||||||
81
shulerr
29.03.15
✎
18:42
|
(80) туше!))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |