Флаги функций - Должны ли они быть выставлены клиентским приложениям?

JTextField позволяет нам использовать getText() и setText(), которые используются, например, для получения и установки содержимого текстового поля.

text = texfield.getText();

надеюсь, что это поможет

3
задан Brad Parks 18 March 2019 в 15:57
поделиться

1 ответ

Это то, что меня заинтересовало, так как у меня есть требование для реализации флагов / переключателей функций в продукте, над которым я работаю. Я исследовал эту область в течение прошлой недели, и я поделюсь своими выводами и мыслями (я не утверждаю, что они являются наилучшей практикой в ​​любом случае). Эти выводы и мысли будут в значительной степени основаны на ASP.Net Zero и ASP.Net Boilerplate , так как я обнаружил, что они наиболее близки для примера реализации того, что я ищу.

Должны ли флаги объектов быть доступны клиентским приложениям?

Да и нет. Если вы создаете программное обеспечение как сервисный продукт (возможно, с несколькими арендаторами), то вам, скорее всего, понадобится какой-то интерфейс управления, где пользователи-администраторы могут управлять функциями (CRUD / Включить / Отключить). Это означает, что если вы создаете SPA, вам, очевидно, придется реализовать конечные точки в вашем API (конечно, с надлежащей защитой), которые ваш интерфейс может использовать для получения подробной информации о функциях и их текущем состоянии для целей редактирования. Это может выглядеть примерно так:

"features": [
    {
      "parentName": "string",
      "name": "string",
      "displayName": "string",
      "description": "string",
      "defaultValue": "string",
      "inputType": {
        "name": "string",
        "attributes": {
          "additionalProp1": {},
          "additionalProp2": {},
          "additionalProp3": {}
        }, 
      ....

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

Теперь, как вы можете видеть, в функции есть нечто большее, чем просто логический флаг, независимо от того, включен он или нет - у него могут быть атрибуты вокруг него. Это то, что для меня было совершенно неочевидным с самого начала, так как я думал о своей проблеме только в контексте довольно простых функций (true / false), где, как на самом деле, могут быть функции, которые намного сложнее. [1113 ]

Наконец, когда ваши пользователи будут просматривать ваше приложение, если вы визуализируете пользовательский интерфейс для арендатора, у которого включена функция EnhancedUI , вам необходимо знать, включена ли эта функция. В ASP.Net Zero это делается с помощью чего-то под названием IPermissionService, которое реализовано как на переднем, так и на заднем концах. В бэкэнде служба разрешений будет в основном проверять, разрешено ли пользователю доступ к некоторому ресурсу, что в контексте переключения функций означает проверку, включена ли функция для данного арендатора. Во внешнем интерфейсе (Angular) служба разрешений получает эти разрешения ( /api/services/app/Permission/GetAllPermissions):

{
  "items": [
    {
      "level": 0,
      "parentName": "string",
      "name": "string",
      "displayName": "string",
      "description": "string",
      "isGrantedByDefault": true
    }
  ]
}

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

Надеюсь, это даст вам несколько идей для размышления.

0
ответ дан Vidmantas Blazevicius 18 March 2019 в 15:57
поделиться
Другие вопросы по тегам:

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