记D365开发的最佳实践
前端JS
不同的需求应该划分模块,以便日后修改,也是为了职责分离,模块分离,日后如果想分离到单独的JS文件里面也是比较方便;
对于公共的查询函数,应该做缓存,优先使用sessionStorage。
多个查询可以并行的,就并行查询。
通常一个需求会同时在onload和onchange中同时调用,需要区分的不同点,不要在onload中调用setValue函数
在性能要求不是很极致的情况下,addOnChange写在代码里面管理起来更方便,而不是定义在from中
插件开发
应该多利用pre-Validation阶段,该阶段不会进入事务,也就是说业务规则校验的时间不会影响事务执行时长,当处在事务中的记录会被锁定,缩短事务时长可以让记录尽快的释放锁,减少系统阻塞时间。
对于非本实体的操作,利用异步的postUpdate,可以让插件效率更高。举个例子,case关闭之后更新客户的某个字段,在case状态更新之前,主要的处理逻辑放在PreCaseUpdate里面;当case状态更新之后,注册在PostCaseUpdate中并设置为后台执行的插件处理更新客户字段逻辑。这样做的好处是:1. 调用SDK更新case状态的操作效率更高,不会受更新客户的逻辑影响。2. 当系统开放接口更新case的时候,接口性能更高且可以复用插件逻辑;而不是因为插件性能问题,跳过插件,在接口中重写一遍更新客户的逻辑。
工作流开发
不要在工作流中写过多业务逻辑,尽量做成可配置的步骤,这样,在某个步骤失败时在客户端就知道,而不是在Trace中查找。
集成开发
集成必须有管控,需要知道系统跟哪些外部系统做了集成,接口清单需要明确,且可管理,比如说可以随时停用;而不是让外部系统直接调用SDK。
集成需使用https协议、访问外部系统配置跨域。
基础设施
消息队列,缓存,日志
架构
部署架构:
微服务
技术架构:
API gateway、高可用、前后端分离、主备库
记D365开发的最佳实践的更多相关文章
- Struts2、Spring、Hibernate 高效开发的最佳实践(转载)
Struts2.Spring.Hibernate 高效开发的最佳实践 Struts2.Spring.Hibernate(SSH)是最常用的 Java EE Web 组件层的开发技术搭配,网络中和许多 ...
- ES6 开发规范-最佳实践
ES6 开发规范(最佳实践) 本文为开发规范,收集方便日后查看. [开发规范]https://blog.csdn.net/zzzkk2009/article/details/53171058?utm_ ...
- (转)Android开发:性能最佳实践-管理应用内存
翻自:http://developer.android.com/training/articles/memory.html 在任何软件开发环境中,RAM都是宝贵的资源,但在移动操作系统中更加珍贵.尽管 ...
- [Docker] 容器开发环境最佳实践理论
保持 image 小 选择合适的 base image. 使用 multi-stage 构建. https://docs.docker.com/develop/develo ...
- 8102 年的现代 Web 开发最佳实践(笑)
简评:8102 年了,现在 web 开发的最佳实践是什么,让本文来告诉你.原文只提到一部分,可以查看 reddit 上对此文的评论查看补充的最佳实践 https://old.reddit.com/r/ ...
- Go单体服务开发最佳实践
单体最佳实践的由来 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也非常低,我们应该使用更简单的技术架构来加速业务价值的交付,此时单体的优势就体现出来 ...
- 17条 Swift 最佳实践规范
本文由CocoaChina译者小袋子(博客)翻译自schwa的github主页原文作者:schwa 这是一篇 Swift 软件开发的最佳实践教程. 前言 这篇文章是我根据在 SwiftGraphics ...
- 结合异步模型,再次总结Netty多线程编码最佳实践
更多技术分享可关注我 前言 本文重点总结Netty多线程的一些编码最佳实践和注意事项,并且顺便对Netty的线程调度模型,和异步模型做了一个汇总.原文:结合异步模型,再次总结Netty多线程编码最 ...
- Web前端开发最佳实践(4):在页面中添加必要的meta信息
meta标签放置在HTML页面的head中,主要用于标识网站.其中基本上包含了网站的一些描述信息,例如,简介.作者等.这些信息有助于搜索引擎更准确地识别网页的内容,也有助于第三方工具抓取网站基本信息. ...
- 快速web开发中的前后端框架选型最佳实践
这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...
随机推荐
- Mybatis-Plus 之BaseMapper 方法详解
package com.itheima.dao; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomido ...
- 【C学习笔记】day4-2 求出0~999之间的所有“水仙花数”并输出。
2.求出0-999之间的所有"水仙花数"并输出."水仙花数"是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个&quo ...
- VMware-实用网站
二进制包的获取方式 ftp://ftp.redhat.com推荐网站 www.rpmfind.net相应的官方网站http://www.mysql.com
- Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 49; columnNumber: 17; 元素类型为 "configuration" 的内容必须匹配 "
问题现象: Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: o ...
- vue2 项目引入Fontawesome
官网: https://fontawesome.com/ 1.安装 `` `powershell npm i --save @fortawesome/fontawesome-svg-core Usin ...
- MC 末影人
#include <iostream> #include "minecraft.h" using namespace std; int x=225,y=115,z=23 ...
- IDEA的常用快捷键和文档注释
IDEA的常用快捷键 Alt + 回车 导入包,自动修正 Ctrl + N 查找类 Ctrl + Shift + N 查找文件 Ctrl + Alt + N 格式化代码 Ctrl + Alt + O ...
- 别再写一堆的 for 循环了!Java 8 中的 Stream 轻松遍历树形结构,是真的牛逼
实体类:Menu.java /** * Menu * * @author lcry */ @Data @Builder public class Menu { /** * id */ public I ...
- docker之rabbitmq delayed message exchange
创建dockerfile FROM rabbitmq:3.9.11-management-alpine COPY rabbitmq_delayed_message_exchange-3.9.0.ez ...
- jquery获取文档的或某个元素的html 闲的没事凑活事的教学
// 获取文档的 // 这个是获取本文档可能被扩展插件和广告屏蔽器污染的html $(":root").prop("outerHTML"); // 利用prom ...