CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

WebServer重写:提建议者给分

楼主我一直在寻找()2006-05-16 10:01:47 在 .NET技术 / C# 提问

今天终于把WebServer重写写了;并且做一下简单性能与数据传送稳定性测试;  
  我重写WebServer的原因有以下几个:  
  1、不支持服务器事件(服务器不能望客户端主动发消息)  
  2、调WebServer方法不方便(必须进行WebServer引用;WebServer引用的目的就是生成一些客户端代码)  
  3、不能发送对象(不是完全不能;是不方便)  
  4、必须与IIS集成  
  5、服务端维护不方便  
  6、所有服务的调用都是PUBLIC的,不能进行权限控制(在方法内可以实现)  
   
  以上问题我已经解决了  
  1、用异步实现服务器事件  
  2、使用简单唯一接口调用;我实现了一个名字为POST的唯一接口;定义如下:  
  Public   Function   POST(ByVal   MethodFullPath   As   String,   ByVal   MethodName   As   String,   ByVal   Parameters()   As   Object,   ByRef   ReturnValue   As   Object)   As   Boolean  
  MethodFullPath:方法的相对虚拟路径如:system/user  
  MethodName:           方法名称如:Login  
  Parameters()   :   参数数组;能自动识别参数的类型;能自动把非简单类型进行序列化  
  ReturnValue     :返回值  
  3、使用序列化实现对象的发送与接收  
  4、使用HttpWebRequest:HttpWebResponse:HttpListener来实现服务器与客户端的通讯;并且完全兼容IIS;也就是说服务器端可以用HttpListener服务来做服务器;也可以用IIS做服务器;能够完全的嵌入ASP.Net中;单独实现了HttpWebRequest:HttpWebResponse:HttpListener;因为HttpWebRequest:HttpWebResponse:HttpListener在windows   XP   SP2   或windosw   2003   SP1前不能使用  
  5、服务器上的所有方法都使用插件模式;在不需要修改主程序的情况下任意修改加减类、方法  
  6、所有服务进行统一管理;设置权限。  
   
  性能与数据传送稳定性测试:  
  1、从服务器上提取一个表:30个字段、6万条数据共计45M;10秒搞定  
  2、把从服务器上提起的表发送到服务器;再返回来;40秒  
  3、从服务器上提取一个表:30个字段、1000条数据,2秒搞定  
   
  请大家拍拍板砖 问题点数:100、回复次数:36Top

1 楼kokubo_wing(假装父母富裕是违法行为)回复于 2006-05-16 10:05:41 得分 5

沙发,帮顶Top

2 楼zlkingdom(风之悲伤)回复于 2006-05-16 10:12:12 得分 5

写的已经很不错了,呵呵,真没什么好建议的了Top

3 楼cowbird()回复于 2006-05-16 10:13:50 得分 5

强Top

4 楼cobrastudio(老汉我)回复于 2006-05-16 10:15:56 得分 5

友情UP、Top

5 楼viena(维也纳N02)回复于 2006-05-16 10:16:38 得分 5

你自己重写的?走召弓虽!葱白~Top

6 楼我一直在寻找()回复于 2006-05-16 10:16:55 得分 0

对了还忘了一条:  
  7、方法的异常返回不方便;  
   
  解决  
  7、把插件中的异常进行序列化;返回到客户端。Top

7 楼我一直在寻找()回复于 2006-05-16 10:21:23 得分 0

RE:viena(EQ<0)   (   )    
  跟您解释一下:是用的.Net   2.0框架进行重写的。  
  过几天我开一个服务器;大家帮忙、测试测试。谢谢关注。Top

8 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-05-16 10:33:26 得分 5

WebServer?WebService?WebService   Server?Top

9 楼chendazhi(不务正业)回复于 2006-05-16 10:34:40 得分 5

 
  超牛B!  
   
  关注..........  
  Top

10 楼我一直在寻找()回复于 2006-05-16 10:38:06 得分 0

不好意思:写错了:  
  是重新实现了WebService  
  并且能方便的使用WebService   Server(自认为方便;见笑了)  
  Top

11 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-05-16 10:42:55 得分 5

感觉上WebService就是用SOAP这种傻瓜协议实现远程调用,可以直观的添加引用,并像调用本地方法一样的调用远程方法是他的优势,有复杂一些的应用偶就不考虑WebService了。Top

12 楼我一直在寻找()回复于 2006-05-16 10:54:53 得分 0

SOAP这种协议是比较简单;我个人感觉简单的东西有他的好处;稳定,操作方便,有这些就足够有理由来使用他了。  
  “有复杂一些的应用偶就不考虑WebService了”对您的这个说法我不同意;现在的SOA大家都知道吧;应该是未来的主要方向吧,他用的就是WebService。并且IBM,SUN,HP等大公司都用它来做SOA,应该不像你说的这样不好用;  
  请问Ivony()   :您讲的复杂一些的应用大概都是一些什么应用,能讲来听听吗。Top

13 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-05-16 11:09:23 得分 5

复杂的应用是指要求复杂而不是数据复杂,数据复杂的应用反而WebService更合适。  
   
  例如高安全性(远程登录),高并发数(一分钟上万个请求)。Top

14 楼我一直在寻找()回复于 2006-05-16 11:19:00 得分 0

那就对了;我的目标就是实现数据复杂的应用;  
  对WebService谈“高安全性(远程登录),高并发数”就好比对步枪谈怎么打飞机。  
  因为HTTP协议的安全性、效率本来就不是特高,在它上面实现的WebService的安全性与HTTP是处在同一级别的;而效率一定低于HTTP。  
  谢谢关注。Top

15 楼asurasa70(暴风)回复于 2006-05-16 11:24:33 得分 5

WebService的返回值有的时候真的很浪费,如果返回值(比如返回1或0)非常简单的话不如直接用response.writeTop

16 楼我一直在寻找()回复于 2006-05-16 11:29:16 得分 0

您说的没错:但是有时候为了编程的统一性以及规范性我们就不得不用WebService了,但是我曾经测试过;1024个字符与1个字符发送的速度基本一样;跟硬件的特点有关;1024个字符基本能满足SOAP协议。  
  谢谢关注。  
  Top

17 楼qfkfw(空军一号)回复于 2006-05-16 11:35:49 得分 5

厉害  
  Top

18 楼我一直在寻找()回复于 2006-05-16 19:54:30 得分 0

那位大侠还能点什么建议。先谢了。Top

19 楼SiteManage(SiteManage)回复于 2006-05-17 00:47:23 得分 5

想象一下WS的调用步骤:  
  请求是Soap协议,   一个xml文件(就是你的方法里入参)  
  Soap协议里面有什么东西呢?    
  1.   请求的URL地址,   对应于你的   MethodFullPath    
  2.   SoapAction   对应于你的   MethodName  
  3.   SoapMessage   对应于你的   Parameters  
   
  微软是怎么将soap的xml转换为对象的呢?   是用XmlSerializer  
  微软怎么在IIS中处理这个请求的呢?   是一个叫做   WebServiceHandlerFactory,   其中会返回一个叫做   WebServiceHandler的对象,   实现了IHttpHandler  
   
  所以你所做的事,   其实是在重新发明轮子(很抱歉,   不是故意打击你),   这个轮子经过你的修改之后,   要执行两次序列化/反序列化  
   
  下面的两个事情,   也许对你有用:  
   
  1.   请你试着在WebService的方法调用中,   捕获到原始的Soap消息,   这个是客户端请求所发出的一个xml文件,   看看你能做些什么.  
   
  2.   微软有一篇文章,   叫做   不用IIS实现WebService,   你可以在MSDN网站中找到,   是中文的  
  Top

20 楼我一直在寻找()回复于 2006-05-17 13:46:54 得分 0

谢谢SiteManage(SiteManage)   的评论:  
   
  我承认微软的Webserver服务写的特别方便;我是使用过一段时间感觉不是特灵活;微软的Webserver是挺方便的。  
   
  我一个月前就捕获到原始的Soap消息了,我的SOAP消息跟他的是一样;并且我还反汇编了WebService以及SOAP协议的实现,我发现不管我怎么样都得不到我想要的东西;因为许多我需要的东西他都是friend的我不能得到;   微软的“不用IIS实现WebService”我已经仔细研究过了;他的前提是必须是XPSP2或者Server2003SP1以上;再说用HttpListener来实现他在本质上与IIS没有大的区别;我有点不太明白;微软的SOAP协议我看过了他也是在服务器端用XmlSerializer序列化,然后在客户端进行反序列化,我也是;您说的“要执行两次序列化/反序列化”我怎么就没有发现呢。  
  我重写他的开始的原因是他不能主动发送消息;更不能吧一个客户端的消息发送到另外一个客户端去;(比如有人下了一个订单,能查看订单的人立刻就能收到,而不需要自己去查询,订单处理完成后管生产的立刻能收到订单。)  
  请问SiteManage(SiteManage)我上面说的在微软的WebService中能实现吗;可能是我比较浮浅请您赐教。  
  另外:WebService访问权限怎么控制(不在方法中进行权限检查)  
  还有:在非XPSP2或者Server2003SP1上并且没有IIS的情况下怎么实WEBService.  
  Top

21 楼zhaochunyu0104(春雨)回复于 2006-05-17 18:42:24 得分 5

关注   markTop

22 楼RUN_(奔跑)回复于 2006-05-18 10:37:37 得分 5

牛就一个字Top

23 楼copico(北北)回复于 2006-05-18 10:39:54 得分 5

可以注册中文名了?Top

24 楼hotact(袋鼠)回复于 2006-05-18 11:26:11 得分 5

高手,是否能分享代码。  
   
  另外既然是webservice,那你怎么控制安全性,以防别人知道了接口胡乱调用。Top

25 楼我一直在寻找()回复于 2006-05-18 22:55:04 得分 0

谢谢大家关注:  
          分享代码暂时可能性不大;但是过段时间等测试完成后我可以免费提供给大家使用。  
  其实我对WebServices重写只是我一个框架中一个模块;等我的框架全部完成后100%定可以免费提供给大家使用。我的框架是想申请风险投资的,所以不能跟大家分享代码,请大家原谅,以后提供大家使用时发现BUG或者提出功能需求可以终身得到我们的免费电话技术支持。  
          对于框架我以后会慢慢的告诉大家,我发布本贴的目的是想看看我的东西到底怎么样,  
   
  RE:copico(一路向北)    
  我的号是在2001年注册的;现在不能注册中文名了。Top

26 楼gameboy766(古巴)回复于 2006-05-19 08:36:55 得分 5

高手Top

27 楼GXY2005(民工甲:杀富济贫,打土豪分田地)回复于 2006-05-19 09:25:59 得分 5

1、不支持服务器事件(服务器不能望客户端主动发消息)  
  ----------------------------------------  
  我想知道这个问题的解决办法,能否提示下??Top

28 楼GXY2005(民工甲:杀富济贫,打土豪分田地)回复于 2006-05-19 09:31:34 得分 5

1、用异步实现服务器事件  
  不懂,请不吝赐教,谢谢!Top

29 楼我一直在寻找()回复于 2006-05-19 09:33:20 得分 0

连接别关闭;也就是HTTP连接一直是开的;有事件时直接向客户端Write.  
  好像在微软的WebService中执行完一个服务后连接是关闭的.Top

30 楼我一直在寻找()回复于 2006-05-19 09:36:58 得分 0

TO:GXY2005(不好!我看見豬在天上飛)    
  好像在微软的框架中没有客户端管理;就算你有消息也不知道发给谁,(可能能够,是我不知道)Top

31 楼我一直在寻找()回复于 2006-05-19 09:42:07 得分 0

在我将要做的框架中有单独客户端管理;也有单独的事件管理;并且客户端是分组的;这样我只要把我想发送的事件给事件管理管理器就可以了.Top

32 楼Zine_Alone(☆小飞☆)回复于 2006-05-20 21:53:54 得分 5

不错了,上次用JAVA写个WEBSERVICE   JDBC连AS400   的DB2数据库     再用.NET这边调用,慢得要死了,一不小心就超时~~~不知是驱动问题还是什么~.     100   W级数据.Top

33 楼我一直在寻找()回复于 2006-05-20 23:12:29 得分 0

to:Zine_Alone(一个人的日子)  
  100   W数据我感觉应该分页传比较稳定点。Top

34 楼duxianghe( dux++ )回复于 2006-06-24 22:23:19 得分 0

楼主开个空间单独讨论吧,很有意义Top

35 楼duxianghe( dux++ )回复于 2006-06-24 22:24:36 得分 0

楼主有自己的论坛没有?  
  我很感兴趣Top

36 楼AdonisVB(Adonis)回复于 2007-01-19 23:48:17 得分 0

WWF(Microsoft   Windows   Workflow   Foundation)中文社区:http://www.wwfcn.netTop

相关问题

关键词

得分解答快速导航

  • 帖主:我一直在寻找
  • kokubo_wing
  • zlkingdom
  • cowbird
  • cobrastudio
  • viena
  • Ivony
  • chendazhi
  • Ivony
  • Ivony
  • asurasa70
  • qfkfw
  • SiteManage
  • zhaochunyu0104
  • RUN_
  • copico
  • hotact
  • gameboy766
  • GXY2005
  • GXY2005
  • Zine_Alone

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo