在DRF业务逻辑实现篇中,提到关于使用Django框架编写业务逻辑的一些局限性以及可能的解决方案。当业务开始扩展的时候,渐渐发现,框架对复杂业务的支持能力明显不足,已经超出了使用service来处理的能力了。
当开始尝试使用DDD来进行模块与架构设计时,不仅要理解DDD是什么,同时需要去理解DDD在Django中应用的困难^1
一种有效的方法是,从serializers中封装domail_serializers,用来承担view中的业务逻辑执行,担任一个实体。view作为一个bounded context的存在,绑定多个serializers,完成一个业务逻辑的执行。
显然,DRF已经基...
本篇为阅读《敏捷软件开发:原则,模式与实践》后的读后感。主要阅读的是第二部分:敏捷设计。这本书的第一部分,关于敏捷开发中的测试驱动开发与重构,可以阅读其他专门的书籍。我阅读的是《重构,改善既有代码设计》。本书第三部分的案例,可自由选择是否阅读以加深理解。我自己更多的是结合自己遇到的问题,从书中描述找到问题的解决方案。
什么是敏捷设计软件越来越难维护软件在第一版本发布的时候,是软件设计最干净清晰的时候。随着复杂的需求与软件持续迭代,软件代码往往会在原来的设计上做各种hack以满足新的需求。
这系列的破坏设计的操作,会在后续的需求增加的过程中逐渐变得难以维护,而后的需求迭代速率将越来越慢。
...
Django Restful Framework Business LogicDjango Restful Framework
Restful APIDjango Restful Framework 提供了非常便利的方法序列化Restful API,并且提供了统一的数据返回格式(包括错误返回)。
SerializerSerializer 提供了数据序列化反序列的操作,并承担了validation的工作,validator有内置,也可以自主添加。
局限性我们在使用中也发现了一些局限性。这些局限,根本上是因为框架是基于Model去设计的。当我们遇到API由多个不同的Django Model...
GraphQL 与 RESTfulGraphQL
数据一次获取数据返回被封装在一个入口,一次请求
所见及所得想要获取什么数据,就定义相应的查询字段。
RESTful
明确资源间的关系
HTTP verb定义对资源的行为
API设计对于前后端分离架构,API成为了前后端间数据通信协议。当一个产品经理列出需求之后之后,前后端工程师设计领域模型,抽象需求与原型成为代码可以描述的对象。在实践中发现,大多数前端工程师会对页面进行建模,而后端工程师则对资源进行建模。于是会发现,前后端工程师对模型的定义会有些差别,即使我们在设计阶段有领域模型设计,我们也无法保障前端工程师能按照领域模型设计组件,这...
获取源码1https://github.com/grpc/grpc-go.git
源码在 grpc-go/examples/helloworld文件夹
源码解析proto文件
声明使用proto3。这是最新版的格式,具体可以了解proto3与proto2的区别。一般直接使用proto3即可。1syntax = "proto3";
声明包路径,指向了使用proto文件生成的包名。默认与被应用的go包一致,也可以使用该声明自主定义。1option go_package = "google.golang.org/grpc/examples/helloworld/h...
先写一个demo学编程语言需要先用,先尝试使用他发挥作用。想想我们学习自己的母语,不是从认识拼音开始的,也不是从认字开始的,而是先模仿,喊出一些基本的称呼等等,逐步知道每个发音代表的一些特殊含义。我们不一定理解那些含义,但是我们已经尝试着让他发挥作用。我学习编程语言也是如此,写一个简单的小游戏或者小工具,也许是一个简单的猜字游戏,也许是一个定时闹钟,也许是一个仿grep功能的工具。不管是什么工具,我基本可以快速理清设计方案,然后花一个小时,基于google,找到各种代码编写的方案,完成小工具的实现。在实现的过程中,我会比想象中投入,因为我的目标已经变成了工具实现,而不是语言学习。犹如用新...
精益创业中的反馈循环在《精益创业》这本书中提到的一个反馈循环为开发-测量-认知。即,使用最小的力量开发一个产品,将其投入到小范围的市场中进行假设验证,最后收集反馈进行认知更新,并迭代到开发中。在这个循环中,如果一切顺利的话,我们会将产品逐渐优化。如果测量验证出现非期望的结果,我们可以及时终止投入,减少沉没成本。
何为MVPMVP,英文为:Minimum Viable Product。即最小有价值(可用)产品。许多人将关注点放在可用,却忽视了验证可用。部分产品经理在设计产品及进行排期的时候,是按产品的功能堆迭进行排期的。即一期包含了什么功能,二期包含了什么功能。却从来没有去想一期验证了用户...