Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)
![](http://www.csframework.com/images/article-type5.gif)
云鹊用户授权注册软件系统 V2.1 (2021-release)
![适用软件](http://www.csframework.com/images/header_system.png)
![运行平台](http://www.csframework.com/images/header_platform.png)
![开发工具](http://www.csframework.com/images/header_vs.png)
![数据库](http://www.csframework.com/images/header_db.png)
![云鹊用户授权注册软件系统v2.1|用户注册软件|软件注册系统|软件授权系统-C/S框架网 Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)](http://www.csframework.com/images/auth-center.jpg)
![](http://www.csframework.com/images/item1.gif)
云鹊用户授权系统是新一代的软件加密保护系统,功能全面,兼容性好,能快速集成及应用,拥有多项自主创新技术,为满足C/S框架网用户提出的需求,针对C/S系统开发框架新老用户量身打造。
![](http://www.csframework.com/images/item1.gif)
1) 软件用户管理(客户名单管理);
2) 注册码管理(包括生成注册码,授权类型:单个注册码、无限制授权、时间限制、使用次数限制、使用天数限制);
3) 软件功能菜单管理(导入菜单、自定义软件功能、分配权限);
4) 软件注册(用户端注册),支持两种连接方式(WCF服务器,CSFramework.WebApi服务器);
5) WCF服务器控制台;
6) 注册日志报表;
7) 软件使用活跃度报表;
8) 软件推广通知、产品升级说明(后续升级);
9) 查看证书详情;
10) 测试案例;
2021升级-新功能:
11) 授权系统服务端分离(支持数据库直连、WCF服务、WebApi服务器三种连接方式)
12) 前、后端全部采用接口设计、数据模型界面交互。
13) 重构两种接口服务:授权系统管理员工具服务、终端用户注册服务
14) 采用最新版CSFramework.DB数据库底层组件,支持多种数据库(MySQL/Oracle/MsSQL)
15) 优化用户界面,更美观、更专业
16) 重新设计主窗体功能菜单
17) 支持添加自定义软件功能
11) 授权系统服务端分离(支持数据库直连、WCF服务、WebApi服务器三种连接方式)
12) 前、后端全部采用接口设计、数据模型界面交互。
13) 重构两种接口服务:授权系统管理员工具服务、终端用户注册服务
14) 采用最新版CSFramework.DB数据库底层组件,支持多种数据库(MySQL/Oracle/MsSQL)
15) 优化用户界面,更美观、更专业
16) 重新设计主窗体功能菜单
17) 支持添加自定义软件功能
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-体系架构图](http://www.csframework.com/images/auth/auth-flow.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-系统组成](http://www.csframework.com/images/auth/auth-24.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-终端用户连接策略](http://www.csframework.com/images/auth/auth-25.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-管理员工具连接策略](http://www.csframework.com/images/auth/auth-26.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-VS解决方案](http://www.csframework.com/images/auth/auth-22.png)
![贴图图片-CSFramework软件授权系统VS解决方案](http://www.csframework.com/upload/image/CSFramework%E8%BD%AF%E4%BB%B6%E6%8E%88%E6%9D%83%E7%B3%BB%E7%BB%9FVS%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-系统登录界面](http://www.csframework.com/images/auth/auth-main.png)
![](http://www.csframework.com/images/item1.gif)
![云鹊用户授权注册软件系统-主界面](http://www.csframework.com/images/auth/auth-01.png)
![](http://www.csframework.com/images/item1.gif)
C# Code:
/// <summary>
/// 授权系统管理员工具 - 后端服务器连接策略(1. Ado直连数据库, 2.WebApi)
/// </summary>
public static class DataServiceAdminProvider
{
/// <summary>
/// 当前连接方式(策略接口)
/// </summary>
public static IDataServiceAdmin Current { get; set; }
/// <summary>
/// 初始化后端服务器连接策略
/// </summary>
/// <param name="connType">返回服务端连接类型(DbServer/WebApi)</param>
/// <returns></returns>
public static bool InitDataService(out string connType)
{
//标记是否初始化成功
bool isInit = false;
//读取INI文件信息
string file = Application.StartupPath + LicCommon.DEF_ADMINTOOL_CFG;
LicIniFile ini = new LicIniFile(file);
string type = ini.IniReadValue("Options", "ServerType");//服务器连接方式
string url = ini.IniReadValue("Options", "WebApiUrl");
string dbType = ini.IniReadValue("Options", "DatabaseType");
string connStr = LicEncoder.Decode(ini.IniReadValue("Options", "ConnectionString"), PrivateKey.P1, PrivateKey.P2);
//默认Ado直连数据库
if (String.IsNullOrWhiteSpace(type)) connType = DataServiceTypeAdminTool.DbServer.ToString();
//1.Ado直连数据库
if (type == DataServiceTypeAdminTool.DbServer.ToString() && !String.IsNullOrWhiteSpace(connStr))
{
DALLicenseTool DAL = new DALLicenseTool(connStr, dbType);
isInit = DAL.TestConnection();
if (isInit) DataServiceAdminProvider.Current = DAL;
}
//2.WebApi连接方式
if (type == DataServiceTypeAdminTool.WebApi.ToString() && !String.IsNullOrWhiteSpace(url))
{
DataServiceWebApiAdmin webapi = new DataServiceWebApiAdmin(url);
isInit = webapi.TestConnection();
if (isInit) DataServiceAdminProvider.Current = webapi;
}
connType = type;
return isInit;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 授权系统管理员工具 - 后端服务器连接策略(1. Ado直连数据库, 2.WebApi)
/// </summary>
public static class DataServiceAdminProvider
{
/// <summary>
/// 当前连接方式(策略接口)
/// </summary>
public static IDataServiceAdmin Current { get; set; }
/// <summary>
/// 初始化后端服务器连接策略
/// </summary>
/// <param name="connType">返回服务端连接类型(DbServer/WebApi)</param>
/// <returns></returns>
public static bool InitDataService(out string connType)
{
//标记是否初始化成功
bool isInit = false;
//读取INI文件信息
string file = Application.StartupPath + LicCommon.DEF_ADMINTOOL_CFG;
LicIniFile ini = new LicIniFile(file);
string type = ini.IniReadValue("Options", "ServerType");//服务器连接方式
string url = ini.IniReadValue("Options", "WebApiUrl");
string dbType = ini.IniReadValue("Options", "DatabaseType");
string connStr = LicEncoder.Decode(ini.IniReadValue("Options", "ConnectionString"), PrivateKey.P1, PrivateKey.P2);
//默认Ado直连数据库
if (String.IsNullOrWhiteSpace(type)) connType = DataServiceTypeAdminTool.DbServer.ToString();
//1.Ado直连数据库
if (type == DataServiceTypeAdminTool.DbServer.ToString() && !String.IsNullOrWhiteSpace(connStr))
{
DALLicenseTool DAL = new DALLicenseTool(connStr, dbType);
isInit = DAL.TestConnection();
if (isInit) DataServiceAdminProvider.Current = DAL;
}
//2.WebApi连接方式
if (type == DataServiceTypeAdminTool.WebApi.ToString() && !String.IsNullOrWhiteSpace(url))
{
DataServiceWebApiAdmin webapi = new DataServiceWebApiAdmin(url);
isInit = webapi.TestConnection();
if (isInit) DataServiceAdminProvider.Current = webapi;
}
connType = type;
return isInit;
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
![](http://www.csframework.com/images/item1.gif)
C# Code:
/// <summary>
/// 添加软件用户
/// </summary>
/// <param name="lic"></param>
/// <returns></returns>
public bool CustomerRegister_Add(CSLicense lic)
{
ModelResponse R = DoApi(lic, "api/do/post", "CustomerRegister_Add", _baseUrl);
return (R != null && R.Code == 0);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 添加软件用户
/// </summary>
/// <param name="lic"></param>
/// <returns></returns>
public bool CustomerRegister_Add(CSLicense lic)
{
ModelResponse R = DoApi(lic, "api/do/post", "CustomerRegister_Add", _baseUrl);
return (R != null && R.Code == 0);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
![](http://www.csframework.com/images/item1.gif)
C# Code:
/// <summary>
/// 添加软件用户
/// </summary>
/// <param name="lic"></param>
/// <returns></returns>
public bool CustomerRegister_Add(CSLicense lic)
{
sys_ProductUser user = DataConverter.ToDataModel(lic);
DbDataUpdate data = new DbDataUpdate(this.db);
return data.AddObject<sys_ProductUser>(user, new string[] { "isid" });
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 添加软件用户
/// </summary>
/// <param name="lic"></param>
/// <returns></returns>
public bool CustomerRegister_Add(CSLicense lic)
{
sys_ProductUser user = DataConverter.ToDataModel(lic);
DbDataUpdate data = new DbDataUpdate(this.db);
return data.AddObject<sys_ProductUser>(user, new string[] { "isid" });
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
![](http://www.csframework.com/images/item1.gif)
C# Code:
/// <summary>
///
/// 后端服务器数据提供者(授权系统用户终端使用)
///
/// 后端服务器连接策略(1.WCF授权中心, 2.WCF代理服务器,3.WebApi服务器)
/// </summary>
public class DataServiceClientProvider
{
/// <summary>
/// 创建数据提供着实例
/// </summary>
/// <param name="connType">连接类型</param>
/// <param name="url">服务器地址</param>
/// <returns></returns>
public static IDataServiceClient Create(LicConnectType connType, string url)
{
//终端用户连接WCF授权中心(外网)
if (LicConnectType.LicenseServer == connType)
return new DataServiceWcfClient(url);
//终端用户连接 WCF本地代理授权服务器(内网)
if (LicConnectType.LocalProxyServer == connType)
return new DataServiceWcfClientProxy(url);
//终端用户连接WebApi服务器(内网或外网)
if (LicConnectType.WebApiServer == connType)
return new DataServiceWebApiClient(url);
//默认为=LicenseServer
return new DataServiceWcfClient(url);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
///
/// 后端服务器数据提供者(授权系统用户终端使用)
///
/// 后端服务器连接策略(1.WCF授权中心, 2.WCF代理服务器,3.WebApi服务器)
/// </summary>
public class DataServiceClientProvider
{
/// <summary>
/// 创建数据提供着实例
/// </summary>
/// <param name="connType">连接类型</param>
/// <param name="url">服务器地址</param>
/// <returns></returns>
public static IDataServiceClient Create(LicConnectType connType, string url)
{
//终端用户连接WCF授权中心(外网)
if (LicConnectType.LicenseServer == connType)
return new DataServiceWcfClient(url);
//终端用户连接 WCF本地代理授权服务器(内网)
if (LicConnectType.LocalProxyServer == connType)
return new DataServiceWcfClientProxy(url);
//终端用户连接WebApi服务器(内网或外网)
if (LicConnectType.WebApiServer == connType)
return new DataServiceWebApiClient(url);
//默认为=LicenseServer
return new DataServiceWcfClient(url);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
C# Code:
/// <summary>
/// 授权中心服务器连接类型(终端用户使用)
/// </summary>
public enum LicConnectType
{
/// <summary>
/// 主服务器
/// </summary>
LicenseServer = 0,
/// <summary>
/// 本地代理服务器
/// </summary>
LocalProxyServer = 1,
/// <summary>
/// WebApi授权服务器
/// </summary>
WebApiServer = 2,
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 授权中心服务器连接类型(终端用户使用)
/// </summary>
public enum LicConnectType
{
/// <summary>
/// 主服务器
/// </summary>
LicenseServer = 0,
/// <summary>
/// 本地代理服务器
/// </summary>
LocalProxyServer = 1,
/// <summary>
/// WebApi授权服务器
/// </summary>
WebApiServer = 2,
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
![](http://www.csframework.com/images/item1.gif)
C# Code:
/// <summary>
/// 软件注册
/// </summary>
/// <param name="connType">服务器连接类型</param>
/// <param name="uri">服务器地址</param>
/// <param name="licenseNo">软件客户识别码</param>
/// <param name="registerNo">注册号码</param>
/// <param name="HID">设备识别码</param>
/// <returns></returns>
public ModelRegisteResult Register(LicConnectType connType, string uri, string licenseNo, string registerNo, string HID)
{
IDataServiceClient client = DataServiceClientProvider.Create(connType, uri);
return client.Register(licenseNo, registerNo, HID);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 软件注册
/// </summary>
/// <param name="connType">服务器连接类型</param>
/// <param name="uri">服务器地址</param>
/// <param name="licenseNo">软件客户识别码</param>
/// <param name="registerNo">注册号码</param>
/// <param name="HID">设备识别码</param>
/// <returns></returns>
public ModelRegisteResult Register(LicConnectType connType, string uri, string licenseNo, string registerNo, string HID)
{
IDataServiceClient client = DataServiceClientProvider.Create(connType, uri);
return client.Register(licenseNo, registerNo, HID);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
![C/S框架网|原创精神.创造价值.打造精品](http://www.csframework.com/images/our03.gif)
扫一扫加微信
![C/S框架网作者微信](http://www.csframework.com/images/wechatcode.jpg)
![C/S框架网|原创作品.质量保障.竭诚为您服务](http://www.csframework.com/images/CS框架网提供高效优质服务.jpg)
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网