# ClientServerProject **Repository Path**: WitGroup/ClientServerProject ## Basic Information - **Project Name**: ClientServerProject - **Description**: 一个C-S模版,该模版由三部分的程序组成,一个服务端运行的程序,一个客户端运行的程序,还有一个公共的组件,实现了基础的账户管理功能,版本控制,软件升级,公告管理,消息群发,共享文件上传下载,批量文件传送功能。具体的操作方法见演示就行。本项目的一个目标是:提供一个基础的中小型系统的C-S框架,客户端有三种模式,无缝集成访问,winform版本,wpf版本,asp.net mvc版本,方便企业进行中小型系统的二次开发和个人学习。同时网络组件方便的支持读写三菱和西门子PLC的数据,详细见Readme - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 68 - **Created**: 2018-05-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C-S架构的服务器客户端模版 ## Summary 一个基于中小型提炼的C-S开发框架,覆盖电脑端,web端,手机端的全平台系统模版,在大多数的一对多的系统设计中会包含一些常用的重复的功能代码,比如网络通信机制,客户端版本控制,账户控制管理,密码修改,公告管理,服务器配置,各种常用窗口等等,而且大多数的中小型系统只是需要到简单的权限管理即可。
本框架包含了四种客户端的模式,第一种常用的winform客户端,第二种为wpf客户端,第三种为asp.net mvc模式,第四种为安卓平台的客户端,也就是说你可以在winform和wpf客户端上选择一种模式,然后您的系统提供一些功能(诸如报表查看)到asp.net上去,然后提供一个手机端使用的Android App,如果服务器假设在云端,所有的人都可以随时随地的进行交互,数据流通,所有的账户模型都是统一的,浏览器还方便一些只需要查看报表用户的人员不需要在部署客户端了。当然,客户端可以提供更加强大的功能。 ## Features included ## Environment ## Getting Started 安卓端的程序在文件夹AndroidTemplate中,请使用Android Studio打开该文件夹,并修改连接的服务器地址。(该模版还在完善中...) ## Quick Experience 如果觉得下载源代码比较麻烦,又想快速体验客户端功能,那就点击软件自动更新.exe下载程序,放置到任意位置,推荐桌面,双击安装程序,输入默认的账户密码即可体验完整的最新版本的客户端,当服务器的客户端版本更新时,你再打开本程序时也会自动升级。然后桌面的 **软件自动更新.exe** 就可以删除了。此处目前仅仅体验winform程序。 至于卸载软件,只要删除桌面的快捷方式和安装目录的文件即可,其他位置不会有任何的文件残留。 ## Secondary Development 基于本模版可以方便的进行二次开发,具体可以开发示例如下(如下是我个人的实践经验,欢迎补充): 二次开发时需要特别注意的是在项目 **CommonLibrary** -> **ProtocolSupport** -> **CommonProtocol.cs** 中的参数需要根据实际全部修改,注意事项已在文件里说明。 ## Contribute 如果你也喜欢这个项目,可以点击右上角的star或是fork,如果发现了一些BUG或是需要更改的地方也可以直接发起pull request,当然也可以联系技术支持QQ群来联系我本人,或是发送邮件,具体参考下面。 ## Contact ## Disclaimer ## HslCommunication.dll [![NuGet Status](https://img.shields.io/nuget/v/HslCommunication.svg)](https://www.nuget.org/packages/HslCommunication/)

本C-S项目的核心组件,该组件功能提供了一些基础功能类和整个C-S项目的网络支持,除此之外,该组件提供了访问三菱PLC和西门子PLC的数据功能。 关于这个库的项目介绍地址如下:

[http://www.cnblogs.com/dathlin/p/7703805.html](http://www.cnblogs.com/dathlin/p/7703805.html) 在Nuget控制台输入下面的指令即可安装,或者使用VS2017的Nuget包管理器来方便的下载组件,如果不清楚怎么使用Nuget可以参考网上教程。

Install-Package HslCommunication

# 整个系统的架构设计如下 #### 核心架构的设计机制 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design1.png)
#### 系统的登录设计
  1. 状态检查,检测服务器的维护状态设置,如果处于维护中,则显示不能登录系统原因。
  2. 账户检查,服务器对登录账户全面检查,用户名是否存在,密码是否正确,是否允许登录,并对登录ip,时间,频次进行记录。
  3. 版本检查,服务器返回最新的版本号,客户端检测后根据自己的需求选择是否启动更新程序。
  4. 参数下载,上述所有检查通过以后,进行运行数据的初始化,比如将公告数据传送到客户端,您也可以添加自己的数据。采用json数据进行封装,客户端解析的时候请参照示例。
  5. 上述所有检测通过之后,启动客户端的主界面程序。但凡有一项检测失败,或者参数下载失败,均不允许登录,并且提示相关错误。
![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design2.png) #### 系统的权限角色模型设计 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design7.png) #### 系统的异常处理模型设计 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design3.png) #### 系统的账户头像设计 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design6.png) #### 系统的其他工具设计 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design4.png) #### 一个基于此模版的示例项目设计模型 ![](https://github.com/dathlin/ClientServerProject/raw/master/img/Design5.png) # 服务器端程序界面如下: ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server.png) ###### 下述服务器端的功能说明均来自服务器的菜单点击 1. 服务器端的版本控制,更新新的版本号,按照实际需求来更新您的版本号,门牌为【设置】-【版本控制】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server1.png) 2. 服务器端的维护状态控制,比如系统维护阶段,不允许所有客户端登录,门牌为【设置】-【维护切换】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server2.png) 3. 消息群发,您也可以在代码中自动触发群发,代码参考此处的手动群发,门牌为【设置】-【消息发送】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server3.png) 4. 账户管理,客户端的界面和这个一致,该管理属于底层的json数据管理,任意更改数据,门牌为【设置】-【账户管理】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server4.png) 5. 关于本系统,框架版本号以本github发布的版本号为准,门牌为【关于】-【关于软件】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统服务端模版/screenshots/server5.png) 6. 一键断开,如遇到紧急情况,或是切换维护之前,可以选择强制关闭所有的客户端。门牌为【设置】-【一键断开】


# 客户端的程序界面 ###### 登录窗口 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client1.png)
###### 登录主界面(此处点击了关于菜单) ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client2.png) ###### 更改公告,此处没有设置权限过滤,门牌为【管理员】-【更改公告】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client3.png) ###### 日志查看,本系统集成了非常实用的日志功能,所有的网络组件均支持日志的记录,方便调试。门牌为【管理员】-【日志查看】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client4.png) ###### 远程更新,成功部署本系统后,支持远程客户端的版本更新,此功能应开发人员拥有。门牌为【管理员】-【远程更新】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client5.png) ###### 密码更改,当账户需要更改密码时,需要对密码进行验证。门牌为【设置】-【修改密码】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client6.png) ###### 更新日志,当客户端更新了新的版本后,初次运行程序时就会自动弹出如下窗口,具体的更新内容应该写入到文件中。手动门牌为【关于】-【更新日志】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client7.png) ###### 反馈意见,人性化的软件允许用户支持提交修改建议,功能使用反馈等。门牌为【关于】-【意见反馈】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client8.png) ###### 快速注册账号,支持管理员快速注册账号,该界面允许更改。门牌为【管理员】-【注册账号】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client9.png) ###### 共享文件,本系统支持一个小型的文件共享,包含了上传下载删除过滤。门牌为主界面的【文件数量】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client10.png) ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client12.png) ###### 本系统集成了一个小型的简单群聊天系统,缓存消息200条。门牌为主界面的【设置】-【留言板】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client13.png) ###### 监视服务器的对象内存消耗,门牌为【管理员】-【开发中心】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client14.png) ###### 修改账户的头像,门牌为【设置】-【我的信息】-点击头像 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client15.png) ###### 我的账户信息及个人文件,门牌为【设置】-【我的信息】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client16.png) ###### 统一的系统配置界面,门牌为【管理员】-【系统配置】 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client17.png) ##### 中英文双语支持,目前仅先适配我的信息和系统配置界面 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端模版/screenshots/client18.png)
# Wpf版客户端的程序界面 ###### 登录窗口 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端Wpf/screenshots/client1.png) ###### 主窗口,还未实现文件功能 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端Wpf/screenshots/client2.png) ###### 主窗口的暗色主题 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端Wpf/screenshots/client3.png) ###### 主题选择界面 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端Wpf/screenshots/client4.png) ###### 共享文件界面 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统客户端Wpf/screenshots/client5.png) ###### 其他功能界面使用了winform的窗口技术,此处不在赘述。
# Web版客户端的程序界面 ###### 登录界面,背景图片可以自定义 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统浏览器模版/screenshots/browser1.png) ###### 主界面,很多功能还在完善中 ![](https://github.com/dathlin/ClientServerProject/raw/master/软件系统浏览器模版/screenshots/browser2.png)
# Android 客户端模版(还在完善中...) ![](https://github.com/dathlin/ClientServerProject/raw/master/img/andriod1.png) ![](https://github.com/dathlin/ClientServerProject/raw/master/img/andriod2.png)
# License: ###### Copyright (c) Richard.Hu. All rights reserved. ###### Licensed under the MIT License. ###### WeChat:工业智能软件开发项目组