GWA2Python Kiwa Rabbit的改进及回答为什么需要软件开发框架
在2022年9月份的更新中,我们发布了 GWA2 in Python的初始预览版本。目前该版本正在不断功能完善与改进中,即将发布生产就绪版本。在之前的Blog中,我们绘制了 GWA2 Python中的
顺晟科技
2023-02-20 16:19:53
133
在2022年9月的更新中,我们用Python发布了GWA2的初始预览版。目前该版本正在不断完善功能,即将发布量产版。在之前的博客中,我们画了GWA2 Python中的面向对象实现,参考下图。GW a2 inpthon(https://ufqi.com/blog/gwa2-in)中类和对象之间的继承.).
上图中Python中的GWA2,在访问路由控制器的ctrl/financefund中调用实体对象类FinanceFund。实体类FinanceFund继承了基类WebApp,实现了基本接口WebIntersection,而基类接口WebInterfance由于Python的原因继承了抽象基类ABC(抽象基类)。这样就从Python语言的角度完全实现了类和对象之间的继承关系,ABC-web接口-web app-finance fund-finance fund base……这次我们以一个从数据库读取数据记录的例子来回顾这些类和对象之间的关系,并尝试回答在软件开发过程中为什么要使用软件开发框架。下图是Python数据库中GWA2的读取和数据流,。
路由控制器ctrl/financefund中GWA2 Python数据库的读取和数据流,实例化对象ffund调用ffund.getInfo试图访问数据库中的一条数据记录;ffund.getInfo进一步调用父类web app . getby;WebApp.getBy根据调用参数识别默认从数据库读取;WebApp.getBy将请求分发给DBA,DBA被激活并初始化——使用哪个连接服务,使用哪个数据库驱动的接口;然后调用Dba.select根据选择的连接和数据库驱动接口程序进行下一步;选择并调用MySql数据服务和接口程序,调用MySql . read single;MySql.readSingle触发内置的mysql.connector相关方法读取数据并返回:数据在前面的过程中一步步返回,直到最后到达路由控制器ctrl/financefund。我们在这里无法直观形象地理解的是,为什么要经过这么复杂的过程才能读取数据记录。实际上,mysql.connector是直接引入路由控制器ctrl.financefund并根据相关指令语句完成的,填写服务主机信息,创建连接,组装sql,提交查询,解析数据,返回数据.这也是可以的,直接写比较好理解,或者因为缺少类和对象的封装和数据流步骤,速度可能会稍微快一点。
这实际上回答了为什么在软件开发的过程中要使用开发框架。简而言之,软件开发框架是一种代码开发、组织和管理的方法。软件开发框架的目标是大大提高软件开发和运行的效率,同时降低软件维护成本和总拥有成本。在开发层面,代码需要重用,相同功能的代码只需编写一次就可以在整个软件中调用;在组织层面,采用面向对象的方法,尽可能映射物理世界的完整分类和层次结构:在操作层面,提供便捷的配置、可接受的安全性、健壮性和健壮性;在维护和扩展层面,便于纵向升级优化,横向扩展;… .
为了更好地开发软件,组织和管理软件代码,我们需要遵循一定的开发规范和规则,这些规范和规则以一套完整的系统的形式呈现,即软件开发框架。比如,当我们可以在ctrl/financefund路由控制器中写入连接到数据库的账户信息时,我们不那么做,因为这些敏感信息不应该分散分布在所有路由控制器中,这样既有安全隐患,也不利于集中统一管理。如果将来某一天我们需要更改/切换某个数据库的账户信息,我们无法一一更正。
我们不在每个路由控制器中建立到数据库的连接,因为这些代码与其他路由控制器重复,所以我们不应该重复复制和编写相同的代码。同时,还要考虑数据库连接的重用、连接池的管理和调度等问题。
第三,我们不把数据库连接写在路由控制器里,还要考虑到以后切换一个数据库连接需要修改每个路由控制器文件。这是一个繁琐且容易出错的过程,应该尽可能避免。第四,面对未来的变化,从A类数据库切换到B类数据库时,还要考虑程序能否正常无缝运行。
另一方面,如果提前规范这些开发行为,提前预留相应的操作空间,上面任何一个层面的变化都不会影响下游的依赖。我们可以方便地修改配置文件中的数据库账户信息,所有下游程序不需要做任何修改;我们可以很容易地重用数据库连接,重用甚至轮询数据库连接中的多个数据库;我们可以很容易地将同一个数据库切换到另一个数据库;我们可以很容易地将A类数据库切换到B类数据库;….
这些相对完整完善的高可用、可扩展、可升级的设计思想和相应软件代码的实现,构成了软件开发框架。读取数据库是最常用的场景之一。实际上,在设计和代码实现上,GWA2不仅考虑了数据库,还考虑了缓存、文件、网络等各种外部资源的调用。对于这些外部资源的使用,都遵循类似于数据库读取的逻辑。下图是GWA2内置缓存的处理逻辑和数据流流程。
GWA2内置高速缓存控制器(https://ufqi.com/blog/gwa2-ja.).
GWA2内置缓存GWA2支持更多的数据库连接控制器(https://ufqi.com/blog/gwa2-fi.).
具有多个数据库的GW a2 GW a2支持访问更多文件系统和驱动程序。
从上面的描述可以看出,GWA2多文件系统,对于各种外部资源,GWA2运行过程中,运行一个继承了基本父类WebApp的实体对象类,读取方法WebApp.geyBy根据参数确定调用哪些外部资源,然后外部资源管理器被激活并相应调用,如Dba、Cachea、Filea等。当资源管理器被激活时,需要确定使用哪个驱动程序来连接哪个主机服务。通过统一的接口方法调用相应的资源驱动读取实际资源。与读取方法类似,基础父类WebApp.setBy将相应的数据写入外部资源。全文首发地址:https://ufqi.com/blog/gwa2pyt.-R/V2SX。
GWA2Kiwa Rabbit -GWA2Kiwa Rabbit是一个“通用Web应用程序架构(https://ufqi。com/dev/GWA2/)”。基于-GWA2,可以轻松构建各种网络应用。包括复杂的网上商城、在线医疗、在线教育、旅游交易平台、社区或社交网站、新闻资讯网站等。以及各类企事业单位的在线门户、在线互动和服务运营系统等。它还可以包括对NativeApp,甚至所有WebApp的服务器端支持。-GWA2是为数不多的支持跨开发语言的应用框架,目前支持-Java,-PHP,-Perl,-aspx。
-GWA2是一种"通用网应用架构",基于-GWA2开发者可以轻松构建各种网络应用,包括复杂的网上商城、网上医疗服务、网上教学、旅游交易平台、社区或社交网站以及新闻资讯网站等。这些应用还包括企业和机构的各种在线门户、在线交互和服务运营系统。此外,它还包含对本地应用程序,甚至是所有网应用程序的服务器端支持8.5-gwa 2是目前为-Java 、-PHP 、-Perl 、-Aspx和-蟒蛇提供跨语言支持的网框架之一。
-GWA2是叶芝沿,迅速产量轻松启动,快速产出。
20
2023-02
29
2022-11
19
2022-10
15
2022-10
30
2022-09
23
2022-09