学习ASP.NET+XML无刷新聊天室的另一源码(AyloChat)

sumanden 2003-06-05 12:32:51
看了lostinetdotcom(思考=储存+选择+变异)的聊天室有感,就把网上最早出现的ASP.NET结合XML做的无刷新聊天室(http://2002.cncode.com/list.asp?id=53)下载了下来,这个东东只提供了DLL,无法学习,故决定将其反编译,现反编译成功,全部源码URL为:http://eu.webmatrixhosting.net/sumanden/sumandenchat.txt
(因此空间不提供rar、zip等打包文件的存放,故不能提供示例,不过使用请参考http://2002.cncode.com/list.asp?id=53下载后的示例,将你编译后的dll覆盖原来的dll,另需要注意的是:名称空间我已由AyloChat改为sumandenChat,请将service1.asmx文件中的名称空间改名)
代码仅供学习,由此出现的问题,本人不承担任何责任。
...全文
34 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2003-06-05
  • 打赏
  • 举报
回复
http://test.saurik.net/anakrino/Anakrino9.zip
注意:此软件放置的上级目录不能为中文或包含有空格,否则会出错。
佛祖的木鱼 2003-06-05
  • 打赏
  • 举报
回复
兄弟是用的什么软件反编译的?可否共享?
antherzhou@21cn.com
anna_aiya 2003-06-05
  • 打赏
  • 举报
回复
收藏
「已注销」 2003-06-05
  • 打赏
  • 举报
回复
AyloChat是一个非常简单的聊天程序,不是一个正式的聊天室程序,需要增加很多的功能。
不过用来学习的话,还是非常有意义的,有兴趣的朋友可以在它的上面进行扩展,增加功能,补充不足。
wuyu1980 2003-06-05
  • 打赏
  • 举报
回复
wuyun1980@sina.com
thanks
llnet 2003-06-05
  • 打赏
  • 举报
回复
tsw123@163.com please
llnet 2003-06-05
  • 打赏
  • 举报
回复
lostinetdotcom(思考=储存+选择+变异),把你的代码发我一份完整的,学习学习,致敬!
lostinetdotcom 2003-06-05
  • 打赏
  • 举报
回复
janc是我做的仿照WebService的东西。
本来很早前的版本是ASP下的Sarc 意思是Simple Asp Remote Call
上一年我把它更改为Jac意思是JScript Asp Call。那时就有Jac聊天室和留言版了。
我在自己的工作中也用到它。可惜写法不够简单。所以也抛弃了。

因为今年学了dotnet,所以我把它弄成asp.net版的 Janc 。
意思是 JScript Asp.Net Call 。

它是 Web Service 的仿制的本地话产品 。
它不是要做成标准,而是能在站内提供简单的方法来实现服务器程序的调用


我的聊天例子的Chat.Janc.Ashx里的内容是:
<janc session="readonly">
<object name="ChatService">
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="InitRoom" />
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="GetDateTime"/>
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="KeepOnline" />
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="Leave" />
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="ListOnline" />
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="ListMessage"/>
<method type="ChatWeb.ChatService" assembly="ChatWeb" name="SendMessage"/>
</object>
</janc>

它实际上是由 Lostinet.Janc.JancHandlerFactory进行处理的。

客户端使用 <script src="Chat.Janc.Ashx?type=script"></script> 时,会下载特殊的脚本。
例如view-source:http://www.lostinet.com/jancchat/chat.janc.ashx?type=script 上的代码。

它负责:
1.把服务器的类型定义转换到客户端去。
2.负责把客户端的调用影射到服务器去。执行服务器的代码。
然后返回结果或异常交给客户端处理。

实际上使用Janc来做远程调用是非常简单的。。
无非就是定义一个 xxx.janc.ashx , 然后就是使用 <script src="xxx.janc.ashx?type=script"></script>

loulanlouzhu 2003-06-05
  • 打赏
  • 举报
回复
很想知道janc是个什么样的玩意!?跟ms的wenservice。htc有啥区别!?
lostinetdotcom 2003-06-05
  • 打赏
  • 举报
回复
我看了看http://eu.webmatrixhosting.net/sumanden/sumandenchat.txt里的代码。。
和我做的那个有一定对比:

1.锁
AyloChat应该是用VB.NET写的。因为由头到尾,它都是使用Application.Lock和Unlock。要注意这是全局的琐。即使是不同的房间的通信都会公用一个锁。
JancChat的锁有四种。其中全局锁同步对象有两个:OnlineRooms和MessageTables,主要是同步一下新OnlineTable和新MessageTable的添加。琐的时间级短。
另外两种是具体房间的OnlineTable和MessageTable,那样不同的房间不会出现共同的锁而产生的性能问题。

2.储存
AyloChat的数据是使用Application来储存的。这样很容易引起和其他程序发生的冲突。
因为全是名字相关的,而且所有房间的消息放在一起,所以查找速度不一定快。
JancChat的数据是静态字段OnlineRooms和MessageTables存放的Hashtable和DataTable。不同的房间有自己的数据。所以不会因为房间的增加而影响性能。
另外,消息的筛选是完全根据DataTable.Rows上的index来循环,用时间值来终止循环的。

3.记录
AyloChat本身不支持聊天记录。
JancChat可以往数据库记录聊天的信息。数据库Cluster主键字段直接为消息的时间。
查询时直接根据时间筛选,那也只是扫描主键的一部分。
即使数据库有100万条记录,也不会影响性能。
(之前放出来的数据库里记录已经我循环发送一晚放上去的13万条记录)

4.在线
AyloChat人物进出是服务器进行判断的。
JancChat人物进出是客户端自行判断的。

5.修改,扩展
AyloChat基于WebService,要修改其代码,数据类型限制得很死。而且不支持服务器异常的客户端影射处理(这主要看WebService.htc)。
JancChat基于Janc,它提供同步调用和异步调用两种方案。支持服务器异常到客户端的影射。
支持boolean,datetime,int,string这几种基类型传送。
支持dotnet Array或IList到客户端JScript的Array的元素相互影射。
支持dotnet struct,[Serializable]类型到JScript脚本Object的属性相互影射。
(
举个简单的例子,服务器的方法是 Point Add(Point p1,Point p2){return new Point(p1.X+p2.X,p1.Y+p2.Y);}
那么客户端的脚本调用就是:
var cp1=new Object();
cp1.X=3;
cp1.Y=4;
var cp2=new Object();
cp2.X=11;
cp2.Y=12;
var pr=ServerObj.Add(cp1,cp2);
alert(pr.X+":"+pr.Y);
)

JancChat的主要工作在客户端完成。服务器端只是起调度的作用。
例如要做一个屏蔽某些人的发言,配置屏蔽列表是客户端的工作。
只需要在接收信息时筛选出要屏蔽的人的消息不处理就是。


。。
hgknight 2003-06-05
  • 打赏
  • 举报
回复
这么张扬?
小心源代码作者找你算帐:)
xwy2258588 2003-06-05
  • 打赏
  • 举报
回复
thanks
学习
lostinetdotcom 2003-06-05
  • 打赏
  • 举报
回复
那个聊天室的代码我看过。
主要是依靠webservice.htc提供的服务来进行和服务器的WebService来进行通信的。
「已注销」 2003-06-05
  • 打赏
  • 举报
回复
http://eu.webmatrixhosting.net/sumanden/chat.aspx 为示例聊天
第1章 登录验证模块 1 1.1 开发站点前的配置 1 1.1.1 创建Web站点 1 1.1.2 使用站点安全工具配置身份验证模式 2 1.1.3 配置站点的数据存储方式 4 1.1.4 定制自己的数据存储方式 4 1.2 最普通的登录方式 6 1.2.1 用户注册功能 6 1.2.2 用户的登录功能 7 1.2.3 修改密码功能 8 1.2.4 在登录页面中添加注册导航功能 8 1.2.5 显示登录用户名和用户状态功能 8 1.2.6 根据用户登录身份显示不同效果页功能 9 1.3 基于角色的登录方式 10 1.3.1 在应用程序中启用角色 10 1.3.2 创建角色 10 1.3.3 创建角色访问规则 11 1.3.4 赋予用户角色权限 11 1.3.5 验证角色的登录 12 1.4 匿名用户的授权管理 12 1.5 小结 13 第2章 缓存管理模块 14 2.1 数据库缓存依赖的优点 14 2.2 开始使用缓存 15 2.2.1 开启应用程序的缓存功能 15 2.2.2 配置缓存依赖的数据库 15 2.2.3 为SQL Server启用缓存通知 16 2.3 控件级数据缓存功能 16 2.3.1 添加时间戳和数据 16 2.3.2 观察缓存数据的变化 18 2.4 页面级数据缓存依赖功能 18 2.4.1 配置页面的缓存属性 18 2.4.2 完善模块中两个功能的导航 19 2.5 小结 20 第3章 个性化设置模块 21 3.1 简单类型的个性化设置功能 21 3.1.1 设置个性化的项目 21 3.1.2 配置个性化信息 22 3.1.3 个性化用户登录站点 22 3.1.4 保存个性化设置 22 3.1.5 显示个性化设置 23 3.2 复杂类型的个性化设置功能 23 3.2.1 设计复杂个性化的项目 24 3.2.2 配置复杂项目 25 3.2.3 保存复杂项目的设置 25 3.2.4 获取复杂项目的设置并显示 26 3.3 匿名用户的个性化设置功能 27 3.3.1 启用匿名用户的个人配置属性 28 3.3.2 设计匿名用户的登录功能 28 3.3.3 将匿名用户的个性化设置移植到已验证用户 30 3.4 完善系统对3个功能的导航 31 3.5 小结 31 第4章 投票模块 32 4.1 一个简单的投票系统 32 4.1.1 设计投票功能的数据存储方式 32 4.1.2 投票项目管理功能 33 4.1.3 投票功能 37 4.1.4 图形化显示投票结果功能 38 4.2 防止重复投票技术 40 4.2.1 利用Session对象 40 4.2.2 利用Cookies对象 41 4.2.3 验证IP和登录时间 41 4.2.4 小范围调查 42 4.3 一个完整的投票系统 42 4.3.1 投票系统的功能模块 42 4.3.2 投票系统的数据库架构 43 4.3.3 数据库中数据之间的关系 43 4.3.4 投票主题管理 44 4.3.5 投票项目管理 52 4.3.6 投票功能管理 54 4.3.7 投票系统后台权限管理 59 4.4 小结 60 第5章 RSS模块 61 5.1 RSS的定义 61 5.2 RSS的作用 61 5.3 RSS的订阅原理 62 5.3.1 RSS的工作原理 62 5.3.2 RSS订阅工具的使用 63 5.4 在网站内加入RSS功能 65 5.4.1 使用Microsoft提供的RSS工具包 65 5.4.2 一个简单的RSS阅读器 66 5.4.3 一个复杂的RSS阅读器 67 5.4.4 让站点提供订阅功能 69 5.5 小结 70 第6章 在线编辑模块 71 6.1 在线编辑的原理 71 6.2 编辑器的界面 71 6.3 一个简单的在线编辑器 72 6.3.1 在线编辑窗口的界面设计 72 6.3.2 在线编辑的功能实现 73 6.3.3 在线编辑的运行效果 74 6.4 多功能在线编辑器的介绍 74 6.4.1 FreeTextBox编辑器 74 6.4.2 FCKEditor在线编辑器 76 6.5 小结 79 第7章 在线支付模块 80 7.1 在线支付介绍 80 7.1.1 在线支付的安全保障 80 7.1.2 在线支付的优点 80 7.2 在线支付的流程 81 7.3 使用支付宝实现在线支付 81 7.3.1 支付宝接口概述 81 7.3.2 支付宝接口服务下载 81 7.4 使用支付宝实现在线支付的实例 82 7.4.1 在项目中加入支付宝程序 82 7.4.2 设计订单提交功能 82 7.4.3 获取支付成功后的返回信息 84 7.4.4 设置支付过程中的通知 88 7.4.5 实现订单到支付宝的提交 90 7.5 小结 92 第8章 电子邮件模块 93
源码总计100多兆,所以分五次下载。 第1章 论坛模块   第2章 博客模块   第3章 播客   第4章 网络硬盘   第5章 在线考试模块   第6章 网站备忘录   第7章 电子邮件发送与接收模块   第8章 在线短消息模块   第9章 网站统计分析   第10章 图书馆管理系统(权限分配)   第11章 会员注册登录模块   第12章 会员密码找回模块   第13章 基于XML技术的留言本   第14章 上传与下载模块   第15章 图片资源管理模块   第16章 搜索引擎模块   第17章 网上问卷调查模块   第18章 RSS在线订阅与阅读模块   第19章 聊天室模块   第20章 购物车模块   第21章 在线银行支付模块   第22章 手机短消息管理平台   第23章 在线音乐模块   第24章 电子相册模块   第25章 投票系统模块   第26章 万能打印模块   第27章 数据备份与恢复模块   第28章 LINQ数据库访问技术   第29章 安全技术 631   29.1 Web.config加密与解密 631   29.1.1 认识Web.config配置文件 631   29.1.2 Web.config文件加密与解密的意义 633   29.1.3 使用SectionInformation类实现加密与解密 634   29.1.4 命令行工具aspnet_regiis.exe实现加密与解密 636   29.2 图文验证技术 638   29.2.1 图文验证技术概述 638   29.2.2 纯数字验证码 638   29.2.3 字母与数字混合验证码 640   29.2.4 纯汉字验证码 642   29.3 防盗链技术 644   29.3.1 盗链对网站的危害 644   29.3.2 防盗链的解决措施 645   29.3.3 图片资源防盗链下载 645   29.4 “支付宝”在线支付 648   29.4.1 支付宝接口概述 648   29.4.2 应用支付宝实现在线支付 648   第30章 服务类技术 657   30.1 Web Service实现天气预报 657   30.1.1 Web Service天气预报功能概述 657   30.1.2 介绍Web Service 657   30.1.3 创建一个简单Web Service 658   30.1.4 使用Web Service获取天气预报 661   30.2 社会标签(Tags)技术 663   30.2.1 社会标签简介 663   30.2.2 热门标签排行 664   30.2.3 标签的检索 665   30.3 在线客服 666   30.3.1 在线客服概述 667   30.3.2 QQ网站上自动生成代码 667   30.3.3 在线客服实现 669   30.3.4 将代码应用于网站中 669   30.3.5 客服后台管理 670   30.4 循环播放广告 672   30.4.1 循环播放广告功能概述 672   30.4.2 循环播放广告关键技术 672   30.4.3 浏览循环播放广告页面设计 673   30.4.4 广告位轮换管理页面设计 674   第31章 Ajax 677   31.1 Ajax概述 677   31.1.1 Ajax定义 677   31.1.2 Ajax运行原理 677   31.1.3 Ajax与Atlas的关系 677   31.2 搭建Ajax开发环境 678   31.2.1 Ajax开发环境下载与安装 678   31.2.2 AjaxControlToolkit下载与安装 679   31.2.3 创建Ajax空网站 681   31.3 Ajax开发典型应用 681   31.3.1 Ajax多样式验证 681   31.3.2 Ajax密码强度提示 682   31.3.3 Ajax智能匹配检索 684   31.3.4 Ajax实现许愿墙 686   第32章 高级应用技术 691   32.1 在线文本编辑器 691   32.1.1 在线文本编辑器的概述 691   32.1.2 制作简单的文本编辑器 691   32.1.3 应用FCKEditor在线文本编辑器 694   32.2 在线获取客户端网卡(MAC)地址 698   32.2.1 网卡(MAC)地址简介 698   32.2.2 为什么使用网卡(MAC)地址 698   32.2.3 获取网卡(MAC)地址关键技术 698   32.2.4 限制每台机器只能领取一个账号 699   32.3 处理PDF文档 701   32.3.1 PDF文档简介 701   32.3.2 配置iTextSharp组件 701   32.3.3 制作简单的PDF格式化工具 702   32.4 OWC生成图表 705   32.4.1 OWC简介 705   32.4.2 添加OWC组件 705   32.4.3 OWC绘制图形的关键技术 706   32.4.4 绘制3D柱型图 708   32.4.5 绘制3D饼型图 710 《ASP.NET开发典型模块大全》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术、全面地介绍了如何使用ASP.NET进行各领域的Web项目开发。全书共3篇分为32章,第1篇关键模块篇,覆盖网站开发的关键领域,内容涉及论坛、博客、播客、网络硬盘、电子邮件、在线考试、网站备忘录、在线短消息、网站访问量统计与分析、系统后台管理权限分配等网站关键模块;第2篇常见模块篇,覆盖网站开发的各个领域,内容涉及网站会员注册及登录、会员密码找回、留言本、上传与下载、图片资源管理、搜索引擎、网上问卷调查、RSS在线订阅、聊天室、购物车、在线银行支付、手机短消息管理、在线音乐、投票系统、万能打印、数据自动备份与恢复等常见模块;第3篇热点技术应用篇,解决网站开发在某个领域遇到的技术难题,内容涉及LINQ数据访问技术、安全技术、服务技术、Ajax、高级应用技术等。   本书附有配套光盘。光盘提供了书中所有案例的全部源代码,并经过精心调试,在Windows XP和Windows 2000下全部通过,保证能够正常运行。此外,光盘中还提供有编程词典试用版软件。   本书案例涉及领域广泛,实用性非常强。学习本书读者可以了解各个领域的特点,能够针对某一行业进行软件开发,也可以通过光盘中提供的模块源代码进行二次开发,以减少开发系统所需要的时间。本书适合各级软件开发人员学习使用,也可供大、中专院校师生学习参考。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧