C#:WeChat聊天软件实例(WPF+WebSocket+WebApi+EntityFramework)

上传者: 39935495 | 上传时间: 2022-11-30 20:50:48 | 文件大小: 3.5MB | 文件类型: ZIP
为了防止客户端对数据库直接注入,所有使用WebApi作为中间媒介进行数据的转存,对外提供了User接口来做到登录,注册和重置,而在客户端方面,编写了UserHelper类作为DAL层的内容,而为了实现发送消息的功能,采用了WebSocket技术,因为在公网环境下,不可能做到一对一的Socket绑定,所以使用服务器作为媒介,客户端将消息发送给服务器,经服务器转发给目标 而对于客户端,也会开启一个监听线程去接收来自服务器的消息,经过CallBack进行分类显示.而聊天室的原理也就是存在一个UID为”HOST”的用户,而服务器检测到发送给HOST的消息后,会将该消息转发给除发送者以外的所有用户,这样就是聊天室的原理实现。 而在聊天信息的储存方面,通过一个叫做Bucket的结构进行储存,当用户发送信息的时候会在Bucket中存入一个Record对象,这个对象储存了信息发送者,信息接收者和信息主体,而监听服务器的线程接收到Message的消息后,也会创建一个Record存入Bucket(为防止多线程的访问冲突,用lock锁定对象),所以主页面上,绑定事件

文件下载

资源详情

[{"title":"( 98 个子文件 3.5MB ) C#:WeChat聊天软件实例(WPF+WebSocket+WebApi+EntityFramework)","children":[{"title":"WeChat","children":[{"title":"WeChat.sln <span style='color:#111;'> 3.11KB </span>","children":null,"spread":false},{"title":".vs","children":[{"title":"ProjectEvaluation","children":[{"title":"wechat.metadata.v2 <span style='color:#111;'> 220.25KB </span>","children":null,"spread":false},{"title":"wechat.projects.v2 <span style='color:#111;'> 5.36MB </span>","children":null,"spread":false}],"spread":true},{"title":"WeChat","children":[{"title":"FileContentIndex","children":[{"title":"d51de8e6-7cd7-430f-8f85-c1deae5488dd.vsidx <span style='color:#111;'> 60.29KB </span>","children":null,"spread":false},{"title":"dfec03c9-fdaa-4dd5-a164-bd508413f464.vsidx <span style='color:#111;'> 69.73KB </span>","children":null,"spread":false},{"title":"merges","children":null,"spread":false},{"title":"01c3cbfb-3e7f-4b6a-a658-c9ad78ce9877.vsidx <span style='color:#111;'> 71.54KB </span>","children":null,"spread":false},{"title":"read.lock <span style='color:#111;'> 0B </span>","children":null,"spread":false},{"title":"9a09bd81-6b36-4d30-a61b-983d33ec1f53.vsidx <span style='color:#111;'> 75.28KB </span>","children":null,"spread":false}],"spread":true},{"title":"config","children":[{"title":"applicationhost.config <span style='color:#111;'> 74.74KB </span>","children":null,"spread":false}],"spread":true},{"title":"DesignTimeBuild","children":[{"title":".dtbcache.v2 <span style='color:#111;'> 192.83KB </span>","children":null,"spread":false}],"spread":true},{"title":"v17","children":[{"title":".suo <span style='color:#111;'> 127.00KB </span>","children":null,"spread":false},{"title":".futdcache.v1 <span style='color:#111;'> 835B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"WeChat.WPF","children":[{"title":"Models","children":[{"title":"Bucket.cs <span style='color:#111;'> 1.15KB </span>","children":null,"spread":false},{"title":"UName.cs <span style='color:#111;'> 967B </span>","children":null,"spread":false},{"title":"Record.cs <span style='color:#111;'> 384B </span>","children":null,"spread":false},{"title":"Chat","children":[{"title":"IBody.cs <span style='color:#111;'> 85B </span>","children":null,"spread":false},{"title":"BaseModel.cs <span style='color:#111;'> 360B </span>","children":null,"spread":false},{"title":"MessageBody.cs <span style='color:#111;'> 138B </span>","children":null,"spread":false}],"spread":true},{"title":"User.cs <span style='color:#111;'> 409B </span>","children":null,"spread":false},{"title":"Group.cs <span style='color:#111;'> 677B </span>","children":null,"spread":false}],"spread":true},{"title":"Servers","children":[{"title":"FriendHelper.cs <span style='color:#111;'> 4.08KB </span>","children":null,"spread":false},{"title":"OnlineHelper.cs <span style='color:#111;'> 1.65KB </span>","children":null,"spread":false},{"title":"UserHelper.cs <span style='color:#111;'> 4.14KB </span>","children":null,"spread":false},{"title":"StaticResource.cs <span style='color:#111;'> 754B </span>","children":null,"spread":false},{"title":"Tools.cs <span style='color:#111;'> 641B </span>","children":null,"spread":false}],"spread":true},{"title":"UI","children":[{"title":"RelationWindow.xaml <span style='color:#111;'> 1.98KB </span>","children":null,"spread":false},{"title":"Reset.png <span style='color:#111;'> 168.06KB </span>","children":null,"spread":false},{"title":"ResetWindow.xaml <span style='color:#111;'> 3.56KB </span>","children":null,"spread":false},{"title":"Picture.png <span style='color:#111;'> 106.60KB </span>","children":null,"spread":false},{"title":"Button.png <span style='color:#111;'> 10.04KB </span>","children":null,"spread":false},{"title":"Add.png <span style='color:#111;'> 13.73KB </span>","children":null,"spread":false},{"title":"LoginWindow.xaml.cs <span style='color:#111;'> 2.15KB </span>","children":null,"spread":false},{"title":"ResetWindow.xaml.cs <span style='color:#111;'> 1.99KB </span>","children":null,"spread":false},{"title":"RegisterWindow.xaml <span style='color:#111;'> 3.84KB </span>","children":null,"spread":false},{"title":"RegisterWindow.xaml.cs <span style='color:#111;'> 2.16KB </span>","children":null,"spread":false},{"title":"MainBackgroud.jpg <span style='color:#111;'> 1.22MB </span>","children":null,"spread":false},{"title":"Search.png <span style='color:#111;'> 14.46KB </span>","children":null,"spread":false},{"title":"RelationWindow.xaml.cs <span style='color:#111;'> 3.32KB </span>","children":null,"spread":false},{"title":"ChatGroud.png <span style='color:#111;'> 256.43KB </span>","children":null,"spread":false},{"title":"LoginWindow.xaml <span style='color:#111;'> 3.47KB </span>","children":null,"spread":false},{"title":"MainWindow.xaml <span style='color:#111;'> 7.64KB </span>","children":null,"spread":false},{"title":"MainWindow.xaml.cs <span style='color:#111;'> 15.21KB </span>","children":null,"spread":false},{"title":"LoginBackgroud.png <span style='color:#111;'> 308.26KB </span>","children":null,"spread":false}],"spread":false},{"title":"App.xaml <span style='color:#111;'> 378B </span>","children":null,"spread":false},{"title":"GlobalUsing.cs <span style='color:#111;'> 873B </span>","children":null,"spread":false},{"title":"App.xaml.cs <span style='color:#111;'> 429B </span>","children":null,"spread":false},{"title":"AssemblyInfo.cs <span style='color:#111;'> 605B </span>","children":null,"spread":false},{"title":"Logo.ico <span style='color:#111;'> 894B </span>","children":null,"spread":false},{"title":"Settings.json <span style='color:#111;'> 132B </span>","children":null,"spread":false},{"title":"WeChat.WPF.csproj <span style='color:#111;'> 1.31KB </span>","children":null,"spread":false},{"title":"WeChat.WPF.csproj.user <span style='color:#111;'> 1.43KB </span>","children":null,"spread":false},{"title":"Properties","children":[{"title":"PublishProfiles","children":[{"title":"FolderProfile.pubxml.user <span style='color:#111;'> 654B </span>","children":null,"spread":false},{"title":"FolderProfile1.pubxml.user <span style='color:#111;'> 300B </span>","children":null,"spread":false},{"title":"FolderProfile.pubxml <span style='color:#111;'> 614B </span>","children":null,"spread":false},{"title":"FolderProfile1.pubxml <span style='color:#111;'> 599B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"WeChat.WebApi","children":[{"title":"Models","children":[{"title":"MailCodeModel.cs <span style='color:#111;'> 269B </span>","children":null,"spread":false},{"title":"Chat","children":[{"title":"IBody.cs <span style='color:#111;'> 88B </span>","children":null,"spread":false},{"title":"AddBody.cs <span style='color:#111;'> 92B </span>","children":null,"spread":false},{"title":"BaseModel.cs <span style='color:#111;'> 363B </span>","children":null,"spread":false},{"title":"MessageBody.cs <span style='color:#111;'> 141B </span>","children":null,"spread":false}],"spread":true},{"title":"VerifyCodeModel.cs <span style='color:#111;'> 276B </span>","children":null,"spread":false},{"title":"EMailMessageModel.cs <span style='color:#111;'> 226B </span>","children":null,"spread":false}],"spread":true},{"title":"Servers","children":[{"title":"Mail","children":[{"title":"MailBuilder.cs <span style='color:#111;'> 3.02KB </span>","children":null,"spread":false},{"title":"MailPlatform.cs <span style='color:#111;'> 3.36KB </span>","children":null,"spread":false}],"spread":true},{"title":"DBContextFactory.cs <span style='color:#111;'> 626B </span>","children":null,"spread":false},{"title":"ExternWebApiBase.cs <span style='color:#111;'> 2.09KB </span>","children":null,"spread":false},{"title":"Address","children":[{"title":"Address.cs <span style='color:#111;'> 388B </span>","children":null,"spread":false}],"spread":true},{"title":"SMS","children":[{"title":"JsonMessage.cs <span style='color:#111;'> 329B </span>","children":null,"spread":false},{"title":"JsonOverage.cs <span style='color:#111;'> 322B </span>","children":null,"spread":false},{"title":"HttpClient.cs <span style='color:#111;'> 19.91KB </span>","children":null,"spread":false},{"title":"SMessage.cs <span style='color:#111;'> 2.73KB </span>","children":null,"spread":false}],"spread":true},{"title":"Config","children":[{"title":"Models","children":[{"title":"MailPlatformSetting.cs <span style='color:#111;'> 340B </span>","children":null,"spread":false},{"title":"ConnectionSetting.cs <span style='color:#111;'> 256B </span>","children":null,"spread":false}],"spread":true},{"title":"JsonReader.cs <span style='color:#111;'> 356B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"efpt.config.json <span style='color:#111;'> 1.36KB </span>","children":null,"spread":false},{"title":"WeChat.WebApi.csproj.user <span style='color:#111;'> 556B </span>","children":null,"spread":false},{"title":"Program.cs <span style='color:#111;'> 948B </span>","children":null,"spread":false},{"title":"WeChat.WebApi.csproj <span style='color:#111;'> 656B </span>","children":null,"spread":false},{"title":"Controllers","children":[{"title":"UserController.cs <span style='color:#111;'> 8.51KB </span>","children":null,"spread":false},{"title":"ControllerBaseEx.cs <span style='color:#111;'> 4.90KB </span>","children":null,"spread":false},{"title":"SocketController.cs <span style='color:#111;'> 5.03KB </span>","children":null,"spread":false},{"title":"FriendController.cs <span style='color:#111;'> 5.62KB </span>","children":null,"spread":false},{"title":"OnlineController.cs <span style='color:#111;'> 1.58KB </span>","children":null,"spread":false}],"spread":true},{"title":"GlobalUsing.cs <span style='color:#111;'> 1.34KB </span>","children":null,"spread":false},{"title":".config","children":[{"title":"dotnet-tools.json <span style='color:#111;'> 164B </span>","children":null,"spread":false}],"spread":true},{"title":"appsettings.Development.json <span style='color:#111;'> 127B </span>","children":null,"spread":false},{"title":"platform.json <span style='color:#111;'> 300B </span>","children":null,"spread":false},{"title":"connection.json <span style='color:#111;'> 141B </span>","children":null,"spread":false},{"title":"ORM","children":[{"title":"Models","children":[{"title":"TbRelation.cs <span style='color:#111;'> 226B </span>","children":null,"spread":false},{"title":"TbUser.cs <span style='color:#111;'> 470B </span>","children":null,"spread":false},{"title":"TbApiLog.cs <span style='color:#111;'> 609B </span>","children":null,"spread":false},{"title":"TbAccount.cs <span style='color:#111;'> 345B </span>","children":null,"spread":false},{"title":"TbChatLog.cs <span style='color:#111;'> 528B </span>","children":null,"spread":false}],"spread":false},{"title":"DB_WeChatContext.cs <span style='color:#111;'> 4.51KB </span>","children":null,"spread":false}],"spread":false},{"title":"appsettings.json <span style='color:#111;'> 151B </span>","children":null,"spread":false},{"title":"Properties","children":[{"title":"PublishProfiles","children":[{"title":"FolderProfile.pubxml.user <span style='color:#111;'> 570B </span>","children":null,"spread":false},{"title":"FolderProfile.pubxml <span style='color:#111;'> 853B </span>","children":null,"spread":false}],"spread":false},{"title":"launchSettings.json <span style='color:#111;'> 842B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明