背景:搭建一个适合公司erp业务的开发平台。

 

架构概要图

表单设计开发部署示例图
 

 

表单设计开发部署示例说明
1)每个开发人员可以自己部署表单设计至本地一份(当然也可以共用一套开发环境,但是如果开发交叉功能也比较容易冲突和调试冲突,特别是服务经常调试产生冲突)。完成某个功能开发以后,通过项目一键发布至测试环境进行集成测试。在集成测试ok后,一键发布至线上开发环境。
2)
正式线上部署可以按照项目为单位建立负载均衡,按照项目为单位整体建立集群。单个web站点包含表单文件服务和表单代码服务。表单文件服务为一些
css,js,html,图片等的静态文件。表单代码服务为一些动态C#代码服务,随时编译,随时发布,以http方式提供服务。表单文件可以通过js调
用这些http服务。

表单项目管理功能
图:
 

说明:
表单设计按照项目的方式管理,表单文件服务和表单代码服务及各自相应的编辑及文件。所以建立表单设计前,应该要先建立项目。
项目名称是整个项目发布,开发的唯一约定名称,不得重复。
若有公用的项目,则建立公用的项目,里面可包含公用的js,公用的图片,公用的css等。这个也是所有表单项目可公用的基础前端框架。
发布和撤销服务按钮:用于发布当前的c#后端代码成服务接口。若当前项目设置了负载均衡,相应的负载均衡节点会在2s-5s内自动更新服务。
发布上线按钮:用于发布当前项目至另外一个项目环境。比如测试或线上环境。目前至支持全量发布,未来可优化。
清除缓存按钮:清理表单文件服务的静态文件缓存。因为表单文件都是会在单个网站存储静态文件缓存,从而降低数据库的压力和静态文件负载均衡实现。理论上静态文件更新,本身相应项目的负载均衡节点也会在2s-5s内更新相应的缓存文件。

表单文件管理
列表图
 

前端详情图
 

后端详情图
 

全屏编辑示例:
 

表单文件包含前端文件(css,js,html,图片等静态文件)和后端文件(.cs 的c#后端代码文件)这两种文件,相应的不同类型文件会形成相应的不同服务。

前端文件相关介绍
前端文件包含(css,js,html,图片等静态文件),其中可以通过上传附件的方式如(jquery框架.js文件),也可通过编辑文本的方式提交。会根据不同的后缀进行解析输出,同时支持跨域访问。
历史版本:默认根据文件名保留历史版本,故也可恢复使用历史版本。
内部方式按钮:不使用站点缓存文件访问,直接访问数据库输出文件。
外部方式按钮:会使用站点缓存文件访问输出文件。
调试预览按钮:可以打开新的页面进行当前编辑效果的实时调试,一键刷新,所见即所得。
(编辑器控件,参考http://runjs.cn/code)

后端文件相关介绍
后端文件包含.cs c#代码文件;c#后端文件分为接口文件和公用代码文件两种类型。
接口文件:会自动公开该文件的类的方法为接口,支持http访问。js即可调用。
公用代码文件:该类默认为static静态类及静态方法。可被其他类访问。
第三方程序集的支持:第三方程序集放到站点的BuildsAssemblys文件下面,即可被其他类库所调用。(目前不支持第三方程序集的自动发布,正式发布要手工拷贝到线上)
快速编译:根据本地的cs文件缓存,快速编译。
重新编译:重新下载当前项目所有的cs文件至本地,重新编译。
提交并发布:先重新编译->将当前内容保存到数据库(非草稿保存)->发布当前服务到所在站点(不会发布到负载均衡节点)。
代码调试:目前仅支持接口通过模拟http的方式调试,方便接口调试。

其他介绍
保存草稿:编辑器默认在进行编辑后每10s保存一次草稿到数据库。

备注说明
个人更倾向于绝对定位形式的表单设计器,类似ccflow。但是因为公司的原因,决定使用常规页面设计的方式。而页面展现形式因为多变,普通的页面表单设计器不能满足。
因为人手,成本,不开源等原因,目前仅为粗糙之作,未做很细性能考虑,仅考虑架构扩展和平行性能扩展。

by 车江毅

(此文只做阶段性的总结,也许对同样做流程引擎的人有些启发,也欢迎交流。分布式相关架构可以参考本人其他文章)

.net erp(办公oa)开发平台架构概要说明之表单设计器的更多相关文章

  1. .net web 开发平台- 表单设计器 一(web版)

    如今为了适应需求的不断变化,动态表单设计器应运而生.它主要是为了满足界面的不断变化和提高开发速度.比如:一些页面客户可能也无法确定页面的终于布局,控件的位置,在哪种情况下显示或不显示等可能须要随时改动 ...

  2. .net erp(办公oa)开发平台架构之流程服务概要介绍

    背景 搭建一个适合公司erp业务的开发平台. 架构概要图:    流程引擎开发平台:  包含流程引擎设计器,流程管理平台,流程引擎服务.目前只使用单个数据库进行管理.  流程引擎设计器 采用silve ...

  3. vue 开发系列(八) 动态表单开发

    概要 动态表单指的是我们的表单不是通过vue 组件一个个编写的,我们的表单是根据后端生成的vue模板,在前端通过vue构建出来的.主要的思路是,在后端生成vue的模板,前端通过ajax的方式加载后端的 ...

  4. Salesforce Lightning开发学习(三)Component表单初解

    初步了解了Lightning的组件开发流程后,我们来认识下lightning的表单 点击对象管理器,选择对象:电影(Movie__c),创建字段 标签 API 数据类型  票价  Number__c ...

  5. C# C/S系统软件开发平台架构图(原创)

    企业版V4.0 - 架构图 企业版V4.0 - 桥接功能.后台连接策略 桥接功能是指应用策略模式,由用户配置本地INI文件选择ADO直连(ADO-Direct)或者调用WCF服务接口访问远程服务器后台 ...

  6. C#Winform开发平台企业版V4.0功能表

    企业版V4.0 - 功能列表及模板窗体 C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framew ...

  7. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 拆分表、联系方式的拆分?

    当用户数据有接近10万时,而且多表的关联也比较频繁时,能把大表拆为小表,也会提高系统的性能,I/O.运算性能.当然以后用户数据会更大可能会到30-40万以上,所有有能力时适当拆表,分分合合,合合分分也 ...

  8. MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放

    返回目录 本文章应该是knockoutjs系列的最后一篇了,前几篇中主要讲一些基础知识,这一讲主要是一个实际的例子,对于一个对象的添加与编辑功能的实现,并将项目源代码公开了,共大家一起学习! knoc ...

  9. [原创]Web前端开发——让ie 7 8支持表单的placeholder属性

    今天在写页面的时候,测试低版本浏览器时,发现input写的placeholder显示的是空白,所以特意写了一个普遍试用的方法来让低版本浏览器支持这个属性. 博主建了一个技术共享qq群:,因为目前人数还 ...

随机推荐

  1. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

  2. CSS Position 定位属性

    本篇文章主要介绍元素的Position属性,此属性可以设置元素在页面的定位方式. 目录 1. 介绍 position:介绍position的值以及辅助属性. 2. position 定位方式:介绍po ...

  3. 120项改进:开源超级爬虫Hawk 2.0 重磅发布!

    沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...

  4. Openfiler配置RAC共享存储

    将 Openfiler 用作 iSCSI 存储服务器,主要操作步骤如下: 1.设置 iSCSI 服务 2.配置网络访问 3.指定物理存储器并对其分区 4.创建新的卷组 5.创建所有逻辑卷 6.为每个逻 ...

  5. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  6. web服务器集群

    概述 集群和分布式都是从集中式进化而来的.分布式和集群会相互合作的,同时的集群和分布式.在这里重点说说集群 集群是什么? 集群能提高单位时间内处理的任务数量,提升服务器性能 有多台服务器去处理任务,但 ...

  7. RMS去除在线认证

    在微软 OS 平台创建打开 RMS 文档如何避免时延 相信我们在企业内部的环境中已经部署了微软最新的OS平台,Windows 7和Windows 2008 R2,在这些OS平台上使用IRM功能时,您有 ...

  8. mysql 行级锁的使用以及死锁的预防

    一.前言 mysql的InnoDB,支持事务和行级锁,可以使用行锁来处理用户提现等业务.使用mysql锁的时候有时候会出现死锁,要做好死锁的预防. 二.MySQL行级锁 行级锁又分共享锁和排他锁. 共 ...

  9. (整理)MyBatis入门教程(一)

    本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...

  10. 二次剩余、三次剩余、k次剩余

    今天研究了一下这块内容...首先是板子 #include <iostream> #include <stdio.h> #include <math.h> #incl ...