2010-04-24 3 views
15

В чем разница между дизайном модулей и компонентов?Модуль по сравнению с конструкцией компонентов

Спасибо

+0

Это зависит от языка/среды, о которой вы говорите (например, .Net - это нечто совершенно иное, чем модуль perl). Что вас интересует? – Foxfire

+0

Единственный контекст, который я могу придумать, имеет смысл для этого вопроса - это Joomla !, но пока мы не получим разъяснений, я не собираюсь отвечать на них. – cHao

+0

с точки зрения каркасов. Можете ли вы привести пример фреймворка PHP, который является модулем или компонентом? – ms80

ответ

10

Я хотел бы поделиться своим мнением об этой разнице.

Оба компонента и модуль используются для обозначения группы функций или части функции. Модуль более логичен, например: модуль Finance, модуль HR, модуль Manufacturing ... в системе ERP. С другой стороны, компонент более физический. В программном обеспечении это может быть dll, ocx, exe, ...

Нет критериев для измерения того, какой из них больше другого. Один компонент может содержать список модулей, а один модуль также может содержать много компонентов. Компоненты используются для моделирования системы в техническом представлении, а модуль используется для моделирования системы в представлении функции (функциональные возможности системы)

+1

Это, безусловно, неправильный ответ. Цитата из https://support.microsoft.com/en-us/kb/815065: «Использование DLL помогает продвигать модульность кода, повторное использование кода, [...]» - вы не можете сказать, что «компонент более физический», , DLL - все о модульности, и вы не можете получить больше физической, чем это. – arpadf

+0

То же самое для пакетов OSGI https://www.osgi.org/developer/architecture/: «Поэтому модульность является основой спецификаций OSGi и воплощена в комплекте bundleconcept. В Java-терминах пакет представляет собой простой старый JAR-файл "- снова модули являются физическими. – arpadf

8

В OSGi есть ссылка, в которой я полагал, что она объясняет различия очень хорошими ,

Модули и компоненты Разве это не похоже на то, что модули и компоненты имеют много общего? Они оба обеспечивают друг другу и потребляют вещи друг от друга. Они также упакованы в качестве самостоятельных блоков развертывания. Разве эти два не могли считаться одним и тем же или хотя бы быть объединены? Да, они могли, но компоненты и модули обслуживают разные цели и несколько ортогональны (они не полностью ортогональны, поскольку компоненты сделаны из кода, который в конечном итоге может быть упакован в модули). Модули имеют дело с упаковкой кода и зависимостями между кодом. Компоненты связаны с внедрением функций более высокого уровня и зависимостей между компонентами . Компонентам необходимо управлять своими зависимостями в коде, но они не нуждаются в модульной системе (часто это программисты, которые делают это через путь класса). Хорошее резюме состоит в том, что вы можете думать о модулях как о статическом коде и зависимостях времени компиляции, тогда как компоненты имеют дело с экземплярами и временем выполнения зависимостей.

+0

Согласен; Я просто хочу укрепить эту точку зрения. Ключом к пониманию разницы между модулями и компонентами является то, как мы рассматриваем систему: статический вид, в котором модули и зависимости между ними производятся непосредственно из кода и представления экземпляра, где компоненты и зависимости/ссылки между ними результат обработки времени выполнения и/или отдельный этап настройки перед выполнением. – arpadf

5

Если вы имеете в виду модуль в смысле модульности есть определение в стандарте IEEE Глоссарий Software Engineering Терминология:

«Модульность является степень, в которой системная программа или компьютер состоит из дискретных компонентов так что изменение одного компонента оказывает минимальное влияние на другие компоненты ».

И Dr. Bertrand Meyer заявил пять критериев модульности:

  • Разложимости проблемы в подзадачи
  • компонуемости модулей для получения новых систем
  • понятности модуля в изоляции
  • Непрерывность - небольшие изменения имеют локализованные эффекты
  • Защита - разлом
+4

Если вы укажете официальный источник, было бы желательно получить правильную цитату: «Степень, в которой система или компьютерная программа состоит из дискретных компонентов, так что изменение одного компонента оказывает минимальное влияние на другие компоненты ' – Gerrat

5

Компоненты и модули слишком часто смешиваются друг с другом.Они , однако, не то же самое, и последствия одного, не обязательно для другого.

Модульность - это разбиение кода на модули связанных функций . Во многих языках программирования модуль является просто исходным файлом . Общепринятой практикой является то, что если исходный файл слишком сильно растет , вы можете разбить его на два или более исходных файла и поместить эти в новый каталог; в то время как каталог часто не называется модулем, этот вид разложения по-прежнему является модульным.

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

Я видел компонентную конструкцию, используемую для приведения в исполнение некоторых понятий жесткого модульности. Этот подход не может быть рекомендован из-за довольно значительных накладных расходов композиции: сложность композиции растет полином с количеством компонентов. И число компонентов растет линейно с количеством функциональных групп, , потому что, как только вы начнете с модульности по компоненту , разложение, вы вынуждаете себя создавать новый компонент, когда вам в противном случае просто нужен новый модуль, потому что новый модуль иначе не принадлежал бы нигде. На 100 компонентах накладные расходы стали полной занятостью, и каждая композиция продолжалась до нескольких недель, несмотря на многочисленные усилия по автоматизации . Это значительно затрудняло развитие.

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

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

Если мне известно имя функции, мой редактор найдет ее достаточно скоро. С другой стороны, если по какой-то причине я не знаю названия функции (или класса, если на то пошло), модульность становится больше .

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

0

Для цифровой разработки и рассмотрения пользовательского интерфейса (HTML/CSS/JS) я использую этот подход для обеспечения того, чтобы я оставался организованным и думал, прежде чем делать. Доказано, что он создает более чистый, более организованный код, который прекрасно переносит работу с меньшими затратами.

В типичной таблицы стилей, я в настоящее время настройки, как это:

/* Style Guide – Mobile First 
    1. =Setup 
    2. =Modules as independent units made up of components 
    3. =Components as group of reusable code containing more than one element 
    4. =Classes 
    5. =Responsive as enhancement 
*/ 
  • модули как самостоятельные единицы, состоящие из компонентов: Header, Footer, разделы, статьи, Помимо и т.д. дом состоит из многих комнат, все со специальными стилями и функциями для создания независимого целого.
  • Компоненты как группа повторно используемого кода, содержащего более одного элемента: неупорядоченные списки, цитаты, карты, таблицы и т.д.

Я написал более полное объяснение вы можете прочитать here.

Надеюсь, это поможет!

0

компонент является сущностью среды выполнения (может быть составлены из модулей), независимый блок работоспособной

Модуля секционированной системы в единицы реализации, независимое присвоение задач. Модули могут быть или не быть компонентом

0

На мой взгляд, Module и Component - это всего лишь несколько функций и активов.

И различались между ними:

Компонент имеет бизнес логический модуль и нет.

Например, эта область ввода текста является всего лишь модулем, но когда была вызвана какая-то пост-апи, она становится Компонентом. вы можете поместить модуль повсюду, и он будет работать нормально, но Компонент просто может использоваться на определенной странице или в представлении (например, у него есть специальный вызов api)

Смежные вопросы