Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)
Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)
产品介绍
云鹊用户授权系统是新一代的软件加密保护系统,功能全面,兼容性好,能快速集成及应用,拥有多项自主创新技术,为满足C/S框架网用户提出的需求,针对C/S系统开发框架新老用户量身打造。
软件授权系统体系架构图
软件授权注册系统组成
软件授权注册系统 – 终端用户连接策略
软件授权注册系统 – 管理员工具连接策略
软件授权注册系统 – VS2017 解决方案
软件授权系统管理员工具 - 系统登录界面
软件授权系统管理员工具 - 系统主界面
软件授权系统 - 源码赏析 - 管理员工具数据提供者
软件授权系统 - 源码赏析 - 调用CSFramework.WebApi接口
软件授权系统 - 源码赏析 - 数据访问层添加软件用户
软件授权系统 - 源码赏析 - 用户终端数据提供者
软件授权系统 - 源码赏析 - 用户终端输入注册码开始软件注册
扫一扫加微信
云鹊用户授权注册软件系统 V2.1 (2021-release)
适用软件:C/S系统、Winform桌面应用软件。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015,C#语言
数据库:Microsoft SQLServer 2008R2
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015,C#语言
数据库:Microsoft SQLServer 2008R2
云鹊用户授权系统是新一代的软件加密保护系统,功能全面,兼容性好,能快速集成及应用,拥有多项自主创新技术,为满足C/S框架网用户提出的需求,针对C/S系统开发框架新老用户量身打造。
系统功能
1) 软件用户管理(客户名单管理);
2) 注册码管理(包括生成注册码,授权类型:单个注册码、无限制授权、时间限制、使用次数限制、使用天数限制);
3) 软件功能菜单管理(导入菜单、自定义软件功能、分配权限);
4) 软件注册(用户端注册),支持两种连接方式(WCF服务器,CSFramework.WebApi服务器);
5) WCF服务器控制台;
6) 注册日志报表;
7) 软件使用活跃度报表;
8) 软件推广通知、产品升级说明(后续升级);
9) 查看证书详情;
10) 测试案例;
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) 支持添加自定义软件功能
软件授权系统体系架构图
软件授权注册系统组成
软件授权注册系统 – 终端用户连接策略
软件授权注册系统 – 管理员工具连接策略
软件授权注册系统 – VS2017 解决方案
软件授权系统管理员工具 - 系统登录界面
软件授权系统管理员工具 - 系统主界面
软件授权系统 - 源码赏析 - 管理员工具数据提供者
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
软件授权系统 - 源码赏析 - 调用CSFramework.WebApi接口
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
软件授权系统 - 源码赏析 - 数据访问层添加软件用户
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
软件授权系统 - 源码赏析 - 用户终端数据提供者
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
软件授权系统 - 源码赏析 - 用户终端输入注册码开始软件注册
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
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网