• Stars
    star
    246
  • Rank 163,910 (Top 4 %)
  • Language
    C#
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序。1)像 Visual Studio 一样,有可视化的环境,拖拖拽拽界面就出来了;2)功能模块全部独立,解耦,以插件的形式存在于主程序(宿主)中;3)把事件这个概念抽象并封装起来;4)对数据操作要有一定的自由度;5)资源文件的管理;6)打包前的静态编译检查;7)IDE界面支持多国语言;8)支持插件……

Sheng.Winform.IDE

请访问原版代码库,以获得最新更新: https://github.com/iccb1013/Sheng.Winform.IDE

MIT 协议开源,可以随意使用,但是需在源代码和产品关于画面保留版权声明和我的网站链接,谢谢。

这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运行。
项目的核心功能已经基本实现,但12年之后我基本停止了这方面的开发,现在分享在这里和大家交流,希望对你有用。

【1.基本介绍】 http://blog.shengxunwei.com/Home/Post/30bcf36f-5ff7-412b-bb47-763ce9218bce

【2.源代码简要说明】 http://blog.shengxunwei.com/Home/Post/6a8f5c78-b492-4d49-9230-2a20147aae6f

简单说说 IDE 的设计思路,几个主要的设计目标如下:

  • 像 Visual Studio 一样
    有可视化的环境,拖拖拽拽界面就出来了。
  • 模块化设计
    功能模块全部独立,解耦,以插件的形式存在于主程序(宿主)中。
  • 不要写代码,业务通过界面,向导进行配置
    拖一个按钮上去,想要单击时做一件事情,就先把按钮拖上去,然后设置这个按钮的事件序列,配置对应的事件。
  • 把事件这个概念抽象并封装起来
    如“保存数据”这个事件,配置好数据的来源,如窗体上的数据,或系统数据,再配置好要保存的目标,某种数据实体,即可,这个事件被添加到某个事件序列,如按钮的单击事件序列中,项目被运行时解析时,就会按钮这个逻辑执行。
  • 对数据操作要有一定的自由度
    除了基本的向导式配置以外,要能满足特殊需求,比如支持自定义 sql 语句。但是自定义 sql 语句怎样与数据源,目标交互呢?我设计了一种简单的表达方法,如 UPDATE FROM [User] SET [Name] = {FormElement.txtName} WHERE [Id]={System.UserId}
  • 对数据库数据表的操作怎样交互
    就是将其抽象为“数据实体”,数据实体也在 IDE 中由用户自己定义,定义的过程类似于 SqlServer,定义好数据实体以后,在 IDE 中进行设计时,通过数据实体来抽象对数据库、表的操作,在打包项目时,可以根据定义的数据实体,生成多种数据库,如 SqlServer,Mysql 等。
  • 资源文件的管理
    在项目中必然要引用到外部资源,这部分外部资源,怎样引入,管理,打包呢?我在 IDE 中设计了独立的资源管理器,在 IDE 中设计 UI 时,通过资源管理器引用资源,打包时,将资源打包到 zip 文件中。
  • 打包前的静态编译检查
    类似于我们在 Visual Studio 中写程序,编译时如果有错误就会出现警告或错误提示。在这个 IDE 中,也必须有同样的功能。当引用的数据实体被删除,数据项不存在,引用的资源文件不存在,以及事件配置中一些问题出现时,能够实时,并在打包项目时指出这些错误的具体位置。
  • 支持嵌入脚本
    能够在事件序列中添加自定义脚本,支持在运行时动态解析或者调用某种脚本语言。此功能有所设计,但并未开发。
  • 支持插件
    此处插件支持指的是 IDE 层面能够支持插件,类似 Visaul Studio 或者 Eclipse 的插件机制,我当时使用的是 .NET 管线技术(很冷门),实现了相关DEMO,但是没有集成到IDE中。
  • IDE界面支持多国语言
    目前IDE完整支持多国语言,所有文本均使用了资源,但是我没有直接使用资源文件,而是将其强类型化了,具体实现方式下文详述。

详细说明请浏览: https://shengxunwei.com

曹旭升
QQ:279060597
Email:[email protected]
@南京

More Repositories

1

Sheng.WeixinConstruction

升讯威微信营销系统(第三方微信平台)完整源代码。包括了面向线下商家的诸多营销功能。【吸粉】 投票、定期抽奖、聚人气抽奖、摇一摇抽奖、粉丝海报、1元夺宝、发红包、在线捐款 等 【持续变现】 微官网、微会员、积分商城、卡券、微信支付、分类信息、电影排片 等 【管理考核】 电脑手机双后台、营销二维码、后台用户管理、操作日志 等。
C#
715
star
2

Sheng.Winform.Controls

升讯威 .Net WinForm 控件库提供了超过15种 Winform 控件,你可以直接使用本控件库,更可以通过本控件库学到 Winform 控件开发的方法和理念。
C#
308
star
3

Sheng.WeixinConstruction.WeixinContract

微信公众号开发接口的 .NET 封装。包括:分组接口、消息群发接口、客服接口、资源接口、二维码接口、短网址接口、标签接口、用户接口,以及微信支付接口和 JS API 等。
C#
112
star
4

Jade.Net

某玉雕工作室APP项目后台,该 APP 实现了商品的分类展示,下单及会员(多级代理)管理等功能。此后台使用 ASP.NET MVC5完成,从原有 Java 版改造而来,基于 Jade.Net 的开源后台代码,任何小规模的后台管理系统,都可以在极短的时间内完成。详细说明和我们的改造过程,可以看我的博客。
JavaScript
71
star
5

sheng.ADO.NET.Plus

对原生 ADO.NET 的增强和辅助类,使其具备类似 ORM 操作的便利性,当从数据库中读取数据时,对内存中的 DataSet、DataTable、DataRow 进行动态映射。当向数据库写入数据时,根据操作的对象自动生成 SQL 语句并执行 ADO.NET 层面相应的操作。
C#
52
star
6

Sheng.Mapper

对象属性值映射/拷贝工具。与 AutoMapper 互补,不需要创建映射规则,不要求对象类型一致,适用于简单直接的拷贝操作,可以全属性拷贝,指定属性拷贝,排除指定的属性,特别适用于 Entity Framework 更新同类型对象等场景。拷贝包含 10 个属性的对象 10 万次,耗时 4.x 秒(普通开发机),项目里够用了。
C#
30
star
7

Sheng.RabbitMQ.CommandExecuter

使用 .Net 对 RabbitMQ 的一个简单封装。通过配置文件定义队列等信息,方便 .Net 开发人员使用 RabbitMQ。并实现了一个基于 MQ 的命令执行器,将 MQ 消息抽象化为命令,发布端和订阅端通过命令进行交互。默认实现了两个命令:1)HTTP请求转发,将收到的MQ消息的指定内容转发到指定URL上;2)数据库同步,通过预先定义的配置文件,指明不同数据库和表之间的关联关系,发送端向 MQ 中发布数据库同步命令后,订阅方(可作为 windows 服务部署,已在工程中实现)负责解析并执行数据库同步工作。 你可以直接使用基本的 RabbitMQ 封装,也可以在此命令模式的基础上实现你自己的命令。
C#
26
star
8

Sheng.SQLite.Plus

Sheng.SQLite.Plus 是一个对直接使用 ADO.NET 方式操作 SQLite 数据库的一个增强组件,它的操作方式介于 Entity Framework 和 ADO.NET 之间,是用于 SQLite 的高度自由和高开发效率的数据库访问层组件。
C#
20
star
9

Sheng.Winform.Controls.Controller

为一些 WinForm 控件,提供了操作其数据和行为的控制器,这些控制器提供了更复杂更高效的方法,使在使用这些控件时更加方便和快捷,也可以使工程获得更好的代码结构。这些代码也可以稍加改动后应用于 WPF 的开发中。
C#
13
star