Имя: Пароль:
IT
Веб-мастеринг
ASP.NET vs PHP. На чем выгоднее заказать проект ?
, ,
0 shulerr
 
20.02.15
09:27
1. php 70% (7)
2. ASP.NET 20% (2)
3. другое 10% (1)
Всего мнений: 10

Приветствую, коллеги. Необходимо совсем небольшое 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) туше!))
Независимо от того, куда вы едете — это в гору и против ветра!