AgileEAS.NET SOA中间件平台更新日志 2015-04-28
一、前言
AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。
AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。
AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。
二、2015-04-28更新日志
1.调整Socket通信框架的某些细节设计,调整消息/消息处理器注册机制:
/// <summary>
/// 注册消息。
/// </summary>
/// <typeparam name="TMessage">消息类型。</typeparam>
void AddMessage<TMessage>() where TMessage : IMessage;
/// <summary>
/// 注册消息。
/// </summary>
/// <typeparam name="TMessage">消息类型。</typeparam>
/// <typeparam name="THandler">消息处理器类型。</typeparam>
void AddMessage<TMessage, THandler>()
where TMessage : IMessage
where THandler : IMessageHandler<TMessage>, new();
/// <summary>
/// 注册消息处理器。
/// </summary>
/// <typeparam name="TMessage">消息类型。</typeparam>
/// <param name="hander">消息处理器。</param>
[Obsolete("5.0之后不在支持,请使用AddMessage。")]
void AddHander<TMessage>(IMessageHandler<TMessage> hander) where TMessage : IMessage;
原有AddHander<TMessage>方法调整为两个新的方法AddMessage<TMessage>,调用更为优雅。
2.修复Socket在服务器环境下长时间大并发运行会无端找不到IP地址的Bug。
3.修改Socket消息总线,增加总线是否在线等功能。
4.WinClient集成消息通信功能,增加程序集EAS.Communications.dll,将即时通信与WinClient容器进行深度整合。
5.WinClient增加单一位置登录功能,即某一个账号只能在某一个终端登录,如果在其他终端登录,将会剔出原有登录终端:
#region 程序集 EAS.WinClient.dll, v4.0.30319
// E:AgileLabAgileEAS.NET5.0Complete4.0EAS.WinClient.dll
#endregion
using EAS.Explorer;
using System;
namespace EAS.WinClient
{
// 摘要:
// AgileEAS.NET平台WinClient程序对外接口。
public class Application
{
public Application();
// 摘要:
// 允许使用即时通讯。
public static bool AllowIM { get; set; }
//
// 摘要:
// 是否允许踢人。
public static bool AllowKicking { get; set; }
// 摘要:
// 缓存预热。
public static void CachePrepare();
//
// 摘要:
// 配置系统资源。
//
// 参数:
// resource:
// 资源实例。
public static void ConfigResource(IResource resource);
//
// 摘要:
// 配置系统时间函数。
//
// 参数:
// timeFunc:
// 时间函数。
public static void ConfigTimeFunc(Func<DateTime> timeFunc);
//
// 摘要:
// 正常启动。
public static void Start();
//
// 摘要:
// 启动平台。
//
// 参数:
// assemblyName:
// 调试启动。
public static void Start(string assemblyName);
//
// 摘要:
// 启动平台。
//
// 参数:
// assemblyName:
// 调试启动。
//
// needLogin:
// 需要登录。
public static void Start(string assemblyName, bool needLogin);
//
// 摘要:
// 启动平台。
//
// 参数:
// assemblyName:
// 调试启动。
//
// needLogin:
// 需要登录。
//
// LoginID:
// 登录ID。
//
// Password:
// 密码。
public static void Start(string assemblyName, bool needLogin, string LoginID, string Password);
//
// 摘要:
// 启动平台。
//
// 参数:
// assemblyName:
// 调试启动。
//
// needLogin:
// 需要登录。
//
// organization:
// 组织机构。
//
// LoginID:
// 登录ID。
//
// Password:
// 密码。
public static void Start(string assemblyName, bool needLogin, string organization, string LoginID, string Password);
//
// 摘要:
// 启动升级。
public static void Upgrade();
}
}
请在自己的主启动程序之中决定是否要启用剔除登录功能:
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
WaitCallback updateCallBack = (s) =>
{
EAS.Windows.Application.Upgrade();
};
System.Threading.ThreadPool.QueueUserWorkItem(updateCallBack);
DllRegisterServer();
EAS.WinClient.Application.AllowKicking = true;
EAS.WinClient.Application.Start();
同时,要求必须在配置文件之中配置好Socket消息总线:
<!--消息总线-->
<object name="MessageBus" assembly="EAS.MicroKernel" type="EAS.Sockets.Bus.SocketBus" LifestyleType="Singleton">
<property name="Url" type="string" value="socket.tcp://127.0.0.1:6636/"/>
</object>
消息总线的Socket链接地址和端口必须为AgileEAS.NET SOA 中间件SOA服务器,并且开启Socket服务功能。
5.调整了领域模型设计器的代码插件展示细节。
6.调整了领域模型设计器插件管理功能。
7.领域模型设计器增加了界面设计插件机制,充许开发者制作自己的设计器插件,完成特别的功能:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EAS.Design
{
/// <summary>
/// 元数据设计器插件。
/// </summary>
public interface IDesignAddIn
{
/// <summary>
/// 插件名称。
/// </summary>
string Name
{
get;
}
/// <summary>
/// 执行插件。
/// </summary>
/// <param name="workProject">当前项目。</param>
void Start(Project workProject);
}
}
实现自己的插件,必须实现IDesignAddIn接口,必须要引用EAS.Metadata.dll,在Start方法里面写自己的插件逻辑,领域设计器传入当前进行设计的项目,开发好自己的插件之后,打开插件管理功能进行加载:
8.GR报表设计器增加了退出设计器时的保存提醒功能。
9.调整完善了计划任务功能(计划任务引擎和管理UI)。
10.解决Lua脚本在没有安装VC11运行库环境不能运行的Bug。
11.账户管理增加了在线状态以及在线位置功能。
12.账号表增加了LINESTATE字段:
ALTER TABLE EAS_ACCOUNTS ADD LINESTATE INT DEFAULT(0)
四、联系我们
为完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。
AgileEAS.NET SOA中间件平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。
我的技术团队成员都是合作多年的老朋友,因为这个平台是免费的,所以也没有什么收入,都是由程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友。
团队网站:http://www.agilelab.cn,
AgileEAS.NET网站:http://www.smarteas.net
官方博客:http://eastjade.cnblogs.com
QQ:47920381,AgileEAS.NET
QQ群:113723486(AgileEAS SOA 平台)/上限1000人
199463175(AgileEAS SOA 交流)/上限1000人
212867943(AgileEAS.NET研究)/上限500人
147168308(AgileEAS.NET应用)/上限500人
172060626(深度AgileEAS.NET平台)/上限500人
116773358(AgileEAS.NET 平台)/上限500人
125643764(AgileEAS.NET探讨)/上限500人
193486983(AgileEAS.NET 平台)/上限500人
邮件:james@agilelab.cn,mail.james@qq.com,
电话:18629261335。
- html5 jqueryrotate插件实现旋转动画
- 为什么要使用String
- Android网络编程(十一)源码解析Retrofit
- android Material Design详解
- android EventBus详解(三)
- Android绘制优化(一)绘制性能分析
- android EventBus详解(二)
- [置顶] android EventBus详解(一)
- 开源组件photoView学习
- ViewPagerIndicator+viewpager指示器详解
- 实现去哪儿来回机票选择的view
- 解决水平ListView在ScrollView中出现的滑动冲突
- Android逆向分析(2) APK的打包与安装背后的故事
- Activity之间传递大数据问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ffmpeg视频处理神器学习基础笔记
- 5分钟就能做一个Excel动态图表,你确定不学学?(纯gif教学)
- 使用Logstash接收Netflow日志并发送到syslog服务器
- Flask搭建ES搜索引擎(二)
- Java 通过RestHighLevelClient 使用ES的date_histogram 根据年月日做统计
- Debug HashMap
- NSum及股票系列
- 从0开始搭建编程框架——主框架和源码
- C++拾取——使用stl标准库生成等差、等比数列的方法
- C++拾取——使用stl标准库实现排序算法及评测
- 机器人实践课程镜像分享及使用说明(Arduino+ROS1+ROS2+Gazebo+SLAM+...)
- ROS 2 Foxy Fitzroy遇见Ubuntu 20.04
- ROS Noetic Ninjemys遇见Ubuntu 20.04
- Kustomize ConfigMapGenerate自动生成ConfigMap中的坑
- ThreadLocal的使用及原理