Как строго Вы следуете за n-tier архитектурой и разделением проблем между слоями в Ваших проектах?

Класс LineLayer основан на линейном слое в Mapbox GL JS. Вы можете увидеть доступные свойства этого типа слоя здесь , в документации по спецификации стиля. Как видите, textField и textColor не являются доступными свойствами.

Один из способов сделать это - создать дополнительный слой - на этот раз типа SymbolLayer ( https://docs.mapbox.com/android/api/map-sdk/7.0 0,0 / ком / MapBox / mapboxsdk / стиль / слои / SymbolLayer.html ). Этот слой будет иметь те же данные строки из вашего GeoJsonSource. Вы можете прочитать больше о слоях символов здесь , но вы можете установить текст для этого слоя, а затем установить для свойства размещение символов значение line или line-center , поэтому текст выравнивается правильно.

21
задан 4 revs 11 February 2009 в 09:59
поделиться

6 ответов

Чем более сложным наше приложение становится, тем более важное разделение проблем становится.

В 100 klocs приложение было одним большим блобом, столько же бизнес-кода в классах формы сколько где-либо еще и вызовы в методы формы от бизнес-классов. Со много воплением и скрежетанием зубов, мы выделили бизнес-логику от логики дисплея. Любой класс, который должен был уведомить пользователя его прогресса, сгенерировал событие, которое было снижено UI. И некоторое время все было право с миром.

Приблизительно 200 klocs, мы добавили слой данных. Архитектура нашего приложения была такова, что большинство наших данных было обработано, как только это вошло и сразу отбросило. Большая часть конфигурационной информации была сохранена в стороннем приложении, с которым наш совместно использовал симбиотические отношения. Но, настройки начинали накапливаться во всех видах дальних уголков. Мы волновали с тремя системами управления конфигурацией, все, которые запутанно соткали в бизнес-логику. С обширным переписывают, мы смогли выделить конфигурационную информацию на ее собственный слой и обработку потоковой передачи данных на другой слой.

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

Теперь, приближаясь к 500 klocs, мы перемещаем приложение в основанную на сетке архитектуру. Мало того, что UI будет разделен от бизнес-логики на другом компьютере, фактическом вычислении кавычек и приказывает, чтобы приложение отослало, будет загрузка, сбалансированная и распространенная для максимизации эффективности. Это было бы невозможно без n-tier архитектуры.

На каждом этапе роста нам или помогло чистое разделение или препятствовала наша собственная путаница коммуникации, данных, бизнеса и UI. Вероятно, не было более важного беспокойства, чем то разделение в создании этого приложения.

19
ответ дан 29 November 2019 в 21:21
поделиться

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

- Рассмотрите простоту и скорость доставки как часть "успешной" архитектуры, не просто "чистота". Попытайтесь балансироваться между тем, чтобы придерживаться архитектурных идеалов и быть практичным.

- В целом это, кажется, имеет смысл отделять код на слои, как Вы упоминаете. Я предложил бы, хотя это для определенной для страницы логики, это можно было оставить на странице, если это более просто/быстрее - почему создают универсальные бизнес-объекты для кода, который просто используется в одном месте. Как это было сказано "Преждевременная оптимизация, корень всего зла”..

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

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

6
ответ дан 29 November 2019 в 21:21
поделиться

У нас есть приложение Winforms и приложение ASP.NET. Они оба используют тот же проект Бизнес-объектов (приблизительно 140 классов).

Проект Winforms состоит приблизительно из 350 форм и классов пользовательского элемента управления и очень немногих (<10) этих метаданных потребности о себе от базы данных.

Проект ASP.NET имеет приблизительно 100 .aspx страниц.

У нас есть уровень доступа к данным, состоящий из 5 классов, которые интересуются ADO.NET, потоками и транзакциями. Они преобразовывают запросы из Бизнес-объектов в вызовы SQL Server.

Уровни UI (за исключением нескольких классов, которым нужны метаданные о калибровке формы) не делают никакого доступа к базе данных вообще. Даже несколько исключений проходят DAL как что-либо еще.

Уровень Business ничего не знает о внутренних работах уровня доступа к данным, и когда ему нужны данные, только когда-либо открытые методы вызовов для классов DAL.

Я нисколько не фундаменталист когда дело доходит до такого рода вещи, но мы никогда не должны были сокращать углы на этом.

Таким образом короче говоря, чистых 100%. Это просто всегда удавалось лучше, чтобы сделать его правильно.

У нас должно было бы быть адское серьезное основание переехать от этого теперь.

2
ответ дан 29 November 2019 в 21:21
поделиться

Сохраните проблемы отдельными. Это очень очень важно. Не смешивайте UI с Бизнесом и Бизнесом со слоем данных. Работа с абстракцией. Работа с абстракцией также делает тестирование (поблочное тестирование) легче (Дразните их). Я строго сохраняю каждый слой, где он принадлежит. Помните, что самая высокая стоимость в любом проекте, это - maintainance. Если Вы смешиваетесь, проблемы затем maintainance собирается становиться кошмаром.

2
ответ дан 29 November 2019 в 21:21
поделиться

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

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

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

1
ответ дан 29 November 2019 в 21:21
поделиться

Чем больше код, тем дольше время жизни, чем более различные люди работают над кодом (оба одновременно или в течение времени жизни), тем более важна она разделение в слоях. В начале это, кажется, немного более ненужная работа, но в конечном счете это платит за себя несколько раз.

Что касается осуществления разделения: Именно поэтому Вашему ведущему программисту или техническому архитектору нужны хорошие мягкие навыки, а также чистые технические навыки. Можно попытаться осуществить разделение технически (см. ниже), но в конце, необходимо убедить (или принудить) разработчики для содержания большого изображения в чистоте.

Но нельзя сказать, что технический означает осуществлять разделение, имеет быть бесполезное. На самом деле я нашел, что обеспечение, что "международные вызовы" являются несколько трудными составить завещание, заставляет людей провести больше времени, думая о том, в чем они действительно нуждаются в международном интерфейсе, ведя к более чистым интерфейсам. Не имеет значения, если трудность является технической (потому что необходимо использовать COM или CORBA), или что-то еще (необходимо заполнить форму на 7 страниц в трех экземплярах).

1
ответ дан 29 November 2019 в 21:21
поделиться
Другие вопросы по тегам:

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