|   |   | 
| 
 | 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) туше!))     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |