学习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文件中的名称空间改名)
代码仅供学习,由此出现的问题,本人不承担任何责任。
...全文
38 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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 为示例聊天

62,244

社区成员

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

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

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

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