Пластмассовый SCM по сравнению с SVN

Это большой вопрос, потому что он показывает, как работает модель метеорной безопасности.

Здесь нет проблем с безопасностью, потому что Meteor никогда не доверяет клиентскому коду.

В Meteor, только сервер решает, к каким данным у каждого клиента есть доступ (см. Meteor.publish ) и какие данные может изменять каждый клиент (см. Meteor.allow ) , Когда клиент аутентифицируется на сервере, сервер сохраняет идентификатор пользователя. До тех пор, пока клиент не выйдет из системы, он предоставит этот идентификатор вашим Meteor.publish и Meteor.allow функциям на сервере как userId.

Meteor также отправляет идентификатор пользователя на клиенте, потому что, конечно, вы хотите изменить поведение клиента и то, что отображается на экране, в зависимости от того, кто вошел в систему. И, как вы говорите, мы не можем остановить мошеннического клиента от произвольного изменения любого его кода JavaScript, чтобы изменить то, что он считает идентификатором пользователя! Но выполнение этого не дает клиенту никаких новых разрешений, потому что только код сервера принимает решения по безопасности.

Вы можете попробовать это с помощью приложения безопасных вечеринок:

  1. Создайте приложение для вечеринок с $ meteor create --example parties
  2. Создайте учетную запись пользователя и дважды щелкните карту, чтобы создать вечеринка. Установите флажок, чтобы сделать его частной вечеринкой.
  3. Откройте консоль JavaScript и введите Meteor.userId(), чтобы получить идентификатор пользователя.
  4. Выйти. Вечеринка исчезнет с экрана, потому что сервер не опубликует ее какому-либо другому пользователю.
  5. Теперь зайдите в консоль и перезапишите Meteor.userId() новой функцией, которая возвращает желаемый идентификатор.

Итак, теперь вы подделали клиента, чтобы он думал, что это ваш пользователь. Но сервер знает лучше. На экране все еще не будет вечеринки, и вы не можете обновить коллекцию вечеринок, чтобы изменить информацию о вечеринке.

Фактически, совершенно безопасно установить идентификатор пользователя клиента на что угодно! Вы можете войти прямо в систему учетных записей и позвонить Meteor.default_connection.setUserId("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");. Попробуйте, и вы увидите, что кнопка входа в правом верхнем углу превращается в анимацию. Это потому, что клиент звонит Meteor.user(), чтобы показать адрес электронной почты зарегистрированного пользователя, которого вы только что установили. Но поскольку вы не вошли на сервер как этот пользователь, он не публикует никакой информации об этом пользователе, и вы просто получаете спинниг.

Это очень сильная модель безопасности. Вам не нужно беспокоиться о каком-либо клиентском коде, хотя в большинстве приложений именно там живет большая часть кода! Пока вы пишете безопасные методы сервера, публикуете функции и разрешаете / запрещаете правила, вы полностью заблокированы независимо от того, что пытается сделать клиент.

12
задан jon37 19 June 2009 в 19:29
поделиться

6 ответов

Раньше я не использовал Plastic SCM, но раньше Subversion у меня работала очень хорошо. Если вы не привязаны к бесплатному решению, например SVN, вы можете подумать о Team Foundation Server. Помимо контроля версий, TFS предлагает дополнительные приятные функции, такие как отслеживание рабочих элементов, интегрированная отчетность ... Как вы понимаете, интеграция с Visual Studio просто великолепна :)

2
ответ дан 2 December 2019 в 06:09
поделиться

Использование VisualSVNServer - это простой способ запустить Subversion в среде Windows, и у них есть инструмент, который предлагает интеграцию с Visual Studio примерно по цене 50 долларов за разработку. Когда я работал в компании, находящейся в процессе перехода, выбор стоял между SVN и Perforce. В итоге мы остановились на SVN, потому что я очень легко смог получить, использовать, протестировать, поиграть с ним. Мы могли получать презентации Perforce на WebEx, но было трудно изучить их, не купив их книгу. Также я утверждал, что это лучший инструмент для разработчиков, потому что на нем было очень много проектов с открытым исходным кодом, и это был более передаваемый навык. Пластиковый SCM вряд ли будет использован, если вы перейдете на другую должность.

4
ответ дан 2 December 2019 в 06:09
поделиться

Я заранее прошу прощения за свое предложение, но вы можете использовать распределенную систему контроля версий централизованно. Это всего лишь вопрос политики внутри вашей команды разработчиков.

Например, Mercurial позволяет очень легко извлекать и отправлять запросы через веб-службу через TortoiseHG.

Или, может быть, вы можете попробовать смешанное решение, централизованный (подрывной) сервер и локальное ветвление для каждого разработчика, использующего git, что, я должен сказать, очень просто.

Для Subversion <-> VStudio я использовал Ankh и считаю его очень простым в использовании. Для Git <-> VStudio я использовал GitExtensions, и интеграция не так хороша, как можно найти, например, с расширением Tortoise Shell или с Ankh, но вы можете попробовать сами.

2
ответ дан 2 December 2019 в 06:09
поделиться

Другой альтернативой VSS является SourceGear Vault ('vss done right'). Большой плюс в том, что он работает (в отличие от VSS).

PlasticSCM кажется распределенным решением, тогда как svn (и VSS, TFS, ...) централизованы. Если вам нужны альтернативы для коммерческих распределенных решений, вы можете взглянуть на git , mercurial , bazaar .

-1
ответ дан 2 December 2019 в 06:09
поделиться

Я хочу добавить этот ответ, чтобы все могли сделать свой выбор.

Я разрабатываю на C # с VS2008. Я работаю в команде из двух разработчиков. Раньше у нас не было контроля версий (ужас), затем мы использовали Subversion (хорошо), а затем мы перешли на Plastic SCM (хорошо).

Моя матрица сравнения:
(обратите внимание на мою точку зрения пользователя Windows, YMMV)

Pro Plastic:

  • Приложение для Windows - приятный и интуитивно понятный интерфейс
  • Хорошие обучающие видео (вы можете выучить все, что вам нужно примерно за два часа)
  • Стандартные задачи очень легко выполнить: переключиться на другую ветку, получить более старую версию какого-либо файла, различия, слияние.

Contra Plastic:

  • Стоит денег (бесплатно для открытого кода; Edit (2/2011): раньше были бесплатные коммерческие лицензии на 2 пользователя Есть бесплатная реклама на 15 пользователей лицензию. Однако вам необходимо продлевать ее каждый год.)
  • Никакой реальной серверной / административной программы: я понятия не имею, где именно на моем диске хранятся данные; это все спрятано от меня. Теперь, как мне сделать резервную копию моего репозитория? Единственное известное мне «решение» - это использовать клиентскую функцию репликации и реплицировать репозиторий на ваш локальный сервер. (Я еще этого не делал.) [РЕДАКТИРОВАТЬ: взгляните на комментарии, чтобы найти реальное решение.]

Pro Subversion:

  • Бесплатно
  • Open Source
  • Огромная база пользователей

Contra Subversion:

  • Subversion не может обрабатывать переименования файлов. Вы можете обойтись без него, но это (пока) не встроенная функция.
  • Такие вещи, как перемещение каталога, могут повредить вашу рабочую копию.
  • Tortoise SVN - это не более чем фасад командной строки svn.exe. Для многих операций вам все еще необходимо знать команды командной строки и их параметры.
  • Tortoise SVN сильно замедлил щелчок правой кнопкой мыши в проводнике Windows.
  • При возникновении конфликтов слияние занимает больше времени.Вы получаете несколько копий одного и того же файла, а затем вам нужно удалить все версии, которые вам не нужны (оставьте для этого Visual Studio), или вы добавляете индикаторы конфликта в свой код, которые делают ваш код некомпилируемым, пока вы не удалите их все. . В Plastic SCM, с другой стороны, операция слияния открывает окно, подобное WinMerge, и вы можете просто щелкать блоки кода, необходимые для разрешения конфликта.

Надеюсь, что это поможет. Если вам нужна другая конкретная информация, дайте мне знать.

Феликс

16
ответ дан 2 December 2019 в 06:09
поделиться

Взгляните на производительность здесь. Он сравнивает обе системы при действительно большой нагрузке (1, 10, 20, 50 и, наконец, 100 одновременно работающих машин против одного сервера, что наверняка намного больше, чем 100 реальных пользователей).

3
ответ дан 2 December 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: