某工程师在2023年发现了OutSystems并认识到它并非魔法
首先
-
- 2019年にOutSystemsは魔法じゃないと気付いたとある会社員の学びを投稿してから3年半以上経ちました
-
- その間、自分の立場も変わり、直近のプロジェクトではOutSystemsのReactive Webも経験しましたので、それらを踏まえ上記内容をアップデートする形で書いていきます
- 現在はフリーランスのエンジニアをしていますので、面白そうな案件があればお声掛け下さい。React、コンポーネント駆動開発あたりに興味があります。なお、OutSystemsは一旦卒業のつもりです
2019年更新的OutSystems的改进之处不够完善。
数据库和紧密耦合
这还没有改变呢。我希望至少能通过切换模式来实现测试数据的分离,这样会让我很开心。
在Action的参数中无法设置Action。
在这里,OutSystems已经能够通过Client Action实现。我创建了一个可以自动记录日志的Client Action,并在其中提供了使用[OutSystems]回调函数的方法。至今仍不能在Server Action中实现。
构建速度慢,周边工具不够完善。
不幸的是,这个地方还没有改变。一个看起来不错的名为Testing Framework的工具最近发布了。它可以使用模拟进行测试,这是我们可以期待的。
IDE的能力不强
新增了代码补全和代码检测功能。还希望添加格式化功能。
“代码不是文本。”
我希望有一种机制,可以将文本和OutSystems的可视化代码进行双向转换。最近我在使用Spring Cloud Data Flow,它能够实现这一点(尽管与OutSystems相比,它只是一个简单的流程)。
OutSystems此次追加的部分有些欠缺之处。
作为一种编程语言,其功能非常有限。
这个问题的一部分是无法在Action的参数中设置Action,但还有其他一些不太好的地方。
-
- ジェネリクスが使えない
-
- 自分で定義した例外をPublicにできない、キャッチできない
-
- breakが使えない(returnは使える)
-
- Linqが使えない(一応、Dynamic LINQというForge部品はある)
- Server Actionではテンプレート文字列が使えない(Client ActionのJavaScriptでは使えるようになった)
希望在Client Action内能够自由地编写JavaScript,在Server Action内也能够自由地编写C#,这样会很高兴(因为Extension开发需要多个步骤有些麻烦)。
没有很多适用于调查的API可用
我认为OutSystems的Find Usage功能很方便,但是由于复制结果比较困难(虽然可以),如果将其作为API提供,将能更广泛地应用。为了查找”AbortTransaction在哪里被使用了?”,我还尝试使用了OSSYS_ESPACE_REFERENCE,但是我认为提高对这种表的认知度,并将其作为可简单利用的API,将会更好。
OutSystems的优点
因为最后总结的不太理想,让人有点尴尬,所以我也会写一些好的地方。
全套的架构、库和工具基本上自动确定(全栈)。
在不使用OutSystems的项目中,我们需要仔细考虑使用这些工具的必要性,但对于使用OutSystems的项目来说,几乎不需要考虑。虽然可以说它缺乏灵活性,但考虑到技能和时间的限制,我们认为OutSystems非常适合那些不能选择这些工具的项目。
虽然有些在OutSystems中实现的方式还不明确,但只需安装OutSystems,就可以获得许多功能,例如源代码管理、配置管理、部署、日志记录、电子邮件、定时器、Excel输入输出、JSON等等。
搭建开发环境很容易。
上述内容与之相关,若使用OutSystems,在安装Windows和DBMS后,只需安装OutSystems即可准备好开发服务器,并且每个开发者只需在自己的设备上安装Service Studio。
如果不使用OutSystems进行项目开发,就需要单独安装框架、库和工具,并且可能会遇到版本不兼容的困扰。
前端和后端可以用同一种语言编写(包括移动端)。
我认为这是OutSystems独特的优势,例如,可以将Client Action复制并粘贴,然后创建具有相同功能的Server Action(尚不清楚在移动设备上是否可行)。开发Client Action的UI与开发Server Action的UI也相似,因此只需要学习其中一种开发方式,就可以顺利地开发另一种。传统Web和响应式Web各自有其能够实现和不能实现的功能,但与使用模板引擎生成HTML的传统服务器端开发方式相比较,与SPA的开发方式相比较,差异可以说很小。
在合并代码时,出现问题的风险很小。
使用OutSystems开发时,源代码和执行文件基本上都在服务器上进行统一管理。无法创建分支。这是为了避免合并冲突,OutSystems公司故意将其设计成这个规格。个人而言,我喜欢这种一直连接的思路。我认为应该尽量避免进行复杂的并行开发,而是快速开发和发布小功能。
另外,在 OutSystems 进行并行开发的情况下,有一种方法可以利用 Feature Toggle,介绍了其在大规模系统开发和交付中的应用。然而,由于难度仍然很高,所以我认为需要充分考虑在哪些部分设置条件分支以及何时解决这些条件分支等问题。
总之
-
- ローコード開発の市場規模は年々拡大しています
-
- また、近年自然言語処理も急速に発展しており、ChatGPTなども登場しました
-
- 今後、人によるプログラミングはより抽象度が高くなると思います。ビジュアルで表現するのか、自然言語で表現するのかまでは予想できませんが・・・
-
- いずれにせよ、この先10年間くらいは万能なツールは出てこず、そのツールの特徴を活かした使い方をする必要があると考えます(さらにその先の10年間はひょっとすると人がやることはほぼないかもしれませんが)
- ということで、OutSystemsはメリット、デメリットを理解した上で正しくお使い下さい。OutSystemsはWebアプリケーション(モバイルアプリケーション)を簡単に開発するためのツールでしかありませんので、Webアプリケーション(モバイルアプリケーション)開発に必要な基礎知識は当然必要です。この点もご注意下さい