欢迎您来到“名字什么都是浮云”的博客空间!

开源项目阅读

ERPCore应用系统快速开发平台


 ErpCore是一套强大的云计算ERP开发框架,集数据库设计、软件建模、模型自动生成、界面可视化设计、业务流可自定义、全自动生成用户所需系统于一体。在此框架上扩展出所有行业的业务系统,它让软件工程师从“建模——写代码——测试”所有繁琐重复的工作变为全自动化生成,大大简化了企业软件的开发时间和成本;同时,使用该框架扩展的所有业务子系统能够无缝连接进行数据共享,这也是云计算ERP的实现基础,杜绝了传统ERP的子系统信息孤岛的弊端,真正实现无缝整合企业的所有资源进行管理。

   灵活的自定义对象功能解决了传统ERP由软件厂商定死业务规则的弊端,业务流规则将变成企业自己自定义,满足国内不同企业存在不同工作业务流、或者同一个企业不同时期的业务流变动情况。

   功能描述:

1、自动建模

   框架内部带有虚拟数据库系统,用户可在虚拟数据库上创建表、字段、表间关联,企业根据自己的具体业务需求构建合适的数据库架构,即通过自动化实现销售业务人员将能完成DBA的工作。业务流程将变成企业自定义。

2、自定义对象

   对应于虚拟数据库上创建表、字段、表间关联,用户可自定义对象、对象属性、对象关联。奠定了可以扩展出符合所有行业所有业务系统可能性。

3、窗体表单可视化设计

   通过拖拽拉的方式,业务人员即可创建软件使用界面,把界面关联起来即可实现不用编码就能创建所需的业务系统。

4、全自动创建子系统

   管理员在后台通过创建对象、创建窗体,并集成成一个子系统,普通使用人员就能使用子系统进行工作,不需额外开发工作。

5、云计算提高效率

   系统可扩展出分布式存储计算,可集成多数据库服务器,完美解决传统ERP的单数据库服务器的统计效率问题。

6、系统扩展及二次开发

   从框架的业务基类派生出更高一层的业务模型,企业的软件开发人员快速开发出个性化功能的模型对象,满足不同企业的个性需求功能,并能与整个ERP系统无缝数据共享,真正把所有企业资源整合成一体。

 

HP-Socket通信框架


 

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。
    为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。

    (加入技术支持群)    

HP-Socket 的设计充分注重功能、通用型、易用性与伸缩性:

通用性

  • HP-Socket 的唯一职责就是接收和发送字节流,不参与应用程序的协议解析等工作。
  • HP-Socket 与应用程序通过接口进行交互,并完全解耦。任何应用只要实现了HP-Socket的接口规范都可以无缝整合 HP-Socket。

易用性

  • 易用性对所有通用框架都是至关重要的,如果太难用还不如自己重头写一个来得方便。因此,HP-Socket 的接口设计得非常简单和统一。
  • HP-Socket 完全封装了所有底层通信细节,应用程序不必也不能干预底层通信操作。通信连接被抽象为Connection ID,Connection ID 作为连接的唯一标识提供给应用程序来处理不同的连接。
  • HP-Socket 提供 PUSH / PULL / PACK 等接收模型, 应用程序可以灵活选择以手工方式、 半自动方式或全自动方式处理封解包, PULL / PACK 接收模型在降低封解包处理复杂度的同时能大大减少出错几率。

高性能

  • Client 组件:基于 Event Select 通信模型,在单独线程中执行通信操作,避免与主线程或其他线程相互干扰。每个组件对象管理一个 Socket 连接。
  • Server 组件:基于 IOCP 通信模型,并结合缓存池、私有堆(Private Heap)等技术,支持超大规模连接,在高并发场景下实现高效内存管理。
  • Agent 组件:对于代理服务器或中转服务器等应用场景,服务器自身也作为客户端向其它服务器发起大规模连接,一个 Agent 组件对象同时可管理多个 Socket 连接;Agent 组件与 Server 组件采用相同的技术架构,可以用作代理服务器或中转服务器的客户端部件。

伸缩性

    应用程序能够根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源配置,在满足应用需求的同时不必过度浪费资源。

Server 组件执行流程

 

Agent 组件执行流程

 

Client 组件执行流程

 

NFine技术介绍


NFine技术介绍:

1、前端技术

JS框架:jquery-2.1.1、Bootstrap.js、JQuery UI

CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。

客户端验证:jQuery Validation Plugin 1.9.0。

在线编辑器:ckeditor、simditor

上传文件:Uploadify v3.2.1

动态页签:Jerichotab(自己改造)

数据表格:jqGrid、Bootstrap Talbe

对话框:layer-v2.3

下拉选择框:jQuery Select2

树结构控件:jQuery zTree、jQuery wdtree

页面布局:jquery.layout.js 1.4.4

图表插件:echarts、highcharts

日期控件: My97DatePicker

2、后端技术

核心框架:ASP.NET MVC5、WEB API

持久层框架:EntityFramework 6.0

定时计划任务:Quartz.Net组件

安全支持:过滤器、Sql注入、请求伪造

服务端验证:实体模型验证、自己封装Validator

缓存框架:微软自带Cache、Redis

日志管理:Log4net、登录日志、操作日志

工具类:NPOI、Newtonsoft.Json、验证码、丰富公共类似

 

OSGi.NET应用程序扩展


 

OSGi.NET 详细介绍

这是实现的一套基于OSGi规范的C#基础框架-OSGi.NET,并且用Go语言初步实现了插件的管理平台-插件仓库。在几个中小型项目中有所应用(Winform、WPF),主要可以解决多人协作的开发规范与插件的管理问题。

更多说明: http://www.diginfo.me/osgi-net-implement

简介:

OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序扩展(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次:

  1. 运行环境
  2. 模块(Bundle)
  3. 生命周期管理
  4. 服务注册
  5. 扩展点支持

目前OSGi.NET具有如下特色:

  1. 组件的可插拔性:组件可根据业务需要在运行时进行装载、卸载操作
  2. 组件的动态更新:组件在运行时可更新替换当前版本
  3. 组件的版本隔离:不同组件引用相同产品的不同版本程序集可以版本隔离
  4. 组件完整的生命周期:包括已安装、已装载、已激活、启动中、停止中、已卸载
  5. 组件的加载顺序:组件加载根据业务要求可设置加载级别来控制加载次序
  6. 组件的通信支持:组件间通过面向服务的编程模型来达到组件间通信、调用的目的
  7. 组件的扩展支持:组件提供了扩展点及其扩展来满足某个组件的扩展性支持

启动一个OSGi.NET应用程序仅需要如下代码

using System;

 

using OSGi.NET.Core.Root;

 

namespace ConsoleDemo

{

    class Program

    {

        static void Main(string[] args)

        {

            //创建框架工厂

            var frameworkFactory = new FrameworkFactory();

            //创建框架内核

            var framework = frameworkFactory.CreateFramework();

            //初始化框架

            framework.Init();

            //启动框架

            framework.Start();

 

            Console.ReadLine();

        }

    }

}

创建一个OSGi.NET项目需要:

  1. 引用框架内核程序集OSGi.NET.dll
  2. 添加框架内核配置文件OSGi.NET.properties
  3. 如需要日志支持,添加log4net.config文件及log4net.dll程序集引用

OSGi.NET项目的默认文件目录结构如下
/程序目录
/程序目录/Bundles/
/程序目录/Bundles/模块A/
/程序目录/Bundles/模块A/Manifest.xml
/程序目录/Bundles/模块A/模块A.dll
/程序目录/Bundles/模块A/Libs/
/程序目录/Bundles/模块A/Libs/* .dll
/程序目录/Bundles/模块B/
/程序目录/Bundles/模块C/
/程序目录/Libs/(可选)
/程序目录/OSGi.NET.properties
注:
程序目录中的Libs文件夹存放个Bundles的共享程序集(也可通过在配置文件中配置共享清单),如接口契约、公共第三方类库等。
模块A中的Libs文件夹存放其私有程序集。
Manifest.xml作为程序清单文件对模块进行自描述。
OSGi.NET.properties为框架内核配置文件

关于加载次序:
由于业务需求,各模块存在依赖关系的可能,所以模块加载也会有加载顺序的要求,此时可以通过清单文件中Manifest.xml,Bundle节点的StartLevel属性对其加载次序进行设置。数值越小,加载越前。 

关于Bundle引用程序集搜索原则:

  1. 根据加载的Bundle引用程序集,依据程序集名称+版本号匹配原则,优先从[/程序目录/Libs/]目录或共享清单中搜索。
  2. 如第一步无匹配,则根据程序集名称从[/程序目录/Bundles/模块A/Libs/*.dll]目录搜索,并将搜索到的程序集对应版本关联Bundle。
  3. 各Bundle下Libs目录程序集在加载中做了Bundle间的隔离,确保不同的Bundle引用的程序集间不会造成影响。即:如存在共享程序集请放置[/程序目录/Libs/]目录或在共享清单配置。

 

SSIO框架介绍


 

ServerSuperIO 简称 SSIO ,是一个 C# 跨平台物联网通讯框架。

一.SSIO的特点

  1. 轻型高性能通信框架,适用于多种应用场,轮询模式、自控模式、并发模式和单例模式。
  2. 设备驱动、IO通道、控制模式场景协调统一。
  3. 设备驱动内轩命令驱动器、命令缓存器、自定义参数和实时数据元素。
  4. 框架平台支持按设备命令优先级别进行调度,保证高级别命令及时发送。
  5. 一个设备驱动同时支持串口和网络两种通讯方式,可以监视IO通道数据。
  6. 一个设备驱动,在网络通讯时可以支持TCP Server和TCP Client两种工作模式。
  7. 内置显示视图接口,满足不同显示需求。
  8. 内置服务组件接口,可以自定义完成OPC服务、4-20mA输出、LED大屏显示、短信服务、以及多功能网关服务。
  9. 可以创建多服务实例,完成不同业务的拆分。

10. 支持跨平台部署,可以运行在Linux和Windows系统。

二.SSIO概述

   SSIO通信框架的设计思想是在SuperIO(SIO)基础上发展而来,并没有高大上的技术,主要是工作经验的积累,适合于不同应用场景的物联网的数据 采集与交互。SSIO和SIO并不是简单的对IO高性能的操作,而是设备驱动、IO通道、控制模式和实际硬件设备之间的协调机制,各方面之间无缝衔接和运 行,也是为了解决现实工作和应用场景的一些痛点。

  软硬件之间的数据交互,并且面临着复杂的现场环境:

(1)复杂的、多样的通讯协议。有标准的协议,例如:Modbus等,也有很多根据标准协议修改的协议格式、以及自定义协议格式,并且千差万别。对于不好的软件架构,疲于应对,增加设备或协议要对整个软件进行梳理,往往在此过程中出现新的问题或BUG。

(2)针对不同用户对软件界面或功能的要求有很大不同,使之满足不同用户的显示要求,可以自定义数据显示界面。那么就需要提供显示视图接口,与设备驱动进行交互。

(3)既然现场设备的数据被采集上来,那么就需要对其进行处理,不仅仅是保存、查询、报表等,还有:数据转发、数据输出(OPC、模拟量、大屏等)等。那么就需要提供服务性的接口,与设备驱动进行交互。

(4)通讯链路的多种性,对于同一个设备可能要支持RS232/RS485/RS422、RJ45、3G/4G等通讯方式,所以对于一个设备要对应多种通讯方式(串口和网络),也给我们的开发造成很大的障碍。

(5)设备驱动、IO通道和实际的现场硬件终端之间链路复杂,有可能:一个设备驱动对应一个IO通道、一个设备驱动对应多个IO通道、多个设备驱动对应一个IO通道等情况。

(6)既然设备与服务端进行数据交互,那么就应该对设备的通讯状态、IO状态、以及设备本身的状态进行监控,这样设备才处于可维护状态。

(7)软件各版本、以及软件与硬件之间的兼容性很差,管理起来错综复杂。在框架平台稳定的情况下,只需要更新设备驱动。

   为了解决以上诸多问题,开发一个软件框架,支持二次开发。在不对软件框架改动的情况下,能够很方便的接入设备、维护设备、集成设备、处理设备业务数据等。软件框架相对稳定,把容易变化的部分进行灵活设计。

三.控制模式

(1)轮询模式:当串口和网络通讯时都可以使用这种控制模式。当有多个设备 连接到通讯平台时,通讯平台会轮询调度设备进行通讯任务。某一时刻只能有一个设备发送请求命令、等待接收返回数据,这个设备完成发送、接收(如果遇到超时 情况,则自动返回)后,下一个设备才进行通讯任务,依次轮询设备。如下图:

 

(2)并发模式:只有网络通讯时可以使用这种控制模式。并发通讯模式是集中 发送所有设备的请求指令,框架是采用循环同步方式发送请求命令。还有进一步提高的机会,采用并行异步方式集中发送请求命令。硬件设备接收到指令后进行校 验,校验成功后返回对应指令的数据,通讯平台异步监听到数据信息后,进行接收操作,然后再进行数据的分发、处理等。如下图:

 

(3)自控模式:只有网络通讯时可以使用这种控制模式。自控通讯模式与并发 通讯模式类似,区别在于发送指令操作交给设备驱动本身进行控制,或者说交给二次开发者,二次开发者可以通过时钟定时用事件驱动的方式发送指令数据。硬件设 备接收到指令后进行校验,校验成功后返回对应指令的数据,通讯平台异步监听到数据信息后,进行接收操作,然后再进行数据的分发、处理等。

   自控通讯模式可以为二次开发者提供精确的定时请求实时数据机制,使通讯机制更灵活、自主,如果多个设备驱动使用同一个IO通道的话,时间控制会有偏差。如下图:

 

(4)单例模式:只有网络通讯时可以使用这种控制模式。在一个服务实例内只 能有一个设备驱动,相当于一个设备驱动对应着N多个硬件设备终端。更适合通讯的数据协议有固定的标准,以命令关键字处理不同的数据。适用于高并发的硬件终 端设备主动上传数据,服务器端根据数据信息进行处理和返回相应的数据。如下图:

 

 

四.跨平台Windows和Linux

(1)Windows运行效果

 

(2)Linux运行效果

 

 Office读写NPOI


NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。

使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。

 

posted @ 2017-05-12 14:32  名字什么都是浮云  阅读(333)  评论(0编辑  收藏  举报