散分:独立于微软的WebService、小型IIS,将BS通信模式搬进CS
重发,这次加了分,但是,抱歉,好像我只能散到100分。。。
很少上CSDN。用户名和密码老忘记,上一个用户名(zhou138168...)怎么也登陆不上去,无奈,只能重新注册一个马甲,上一次发了个帖子,标题是《代码自动生成、Com开发、串行化反串行化、UI等太多了》 也许有人还记得呵呵。
最近花了十天时间,写了个库,旨在将BS的优秀通信模式搬进CS,初步实现了HTTP1.1的常用,如Get ,Head,Post,支持文件的上传下载,支持Redirect。可做简单的Web 服务器。出发点是为了在CS模式下,通信更方便。最关键的是,有了这些,程序员可以很方便的在CS模式下,按照HTTP协议去完成通信工作。参考的标准是.net 2.0 相关类及JavaServlet,写了Vb6下的实现。
如下:
HTTPContent
HTTPContentDetail
HTTPContentDetails
HTTPFileCollection
HTTPPostedFile
HTTPRequest
HTTPRequestClient
HTTPRequestHeader
HTTPResponse
HTTPResponseHeader
HTTPServer
HTTPServlet
IHTTPServerEventListener
KeysCollection
NameValueCollection
Uri
WebServiceInvoke
WebServiceInvokeArg
WebServiceInvokeArgs
SoapClient
等,其中HTTPRequestClient,完全兼容微软XMLHttpRequest,这个可是Ajax的核心呀,当然了,我改进了同步调用的弊端。
另外的亮点,是基于此的WebService,如,一台服务器负责各客户端的登陆,注销,IP地址位192.168.1.2,另一个服务器提供图片的业务,如图片的下载现实和上传更新等。IP地址为 192.168.1.3,两个地方分别建立和注册两个WebService,如下:
服务端搭建WebServcie很简单:
Call RegisterWebService(New Server,"Server") '//192.168.1.2 Call RegisterWebService(New PicService,"PicService") '//192.168.1.3 '//这样,WebService就被搭建了。
Dim oServer As Object Dim intRet As Integer Set oServer = NewSoapClient("http://192.168.1.2:80/", "Server") intRet =oServer.Login(sUser,sPwd) if intRet = 0 then msgbox "登陆成功" elseif intRet =1 then msgbox "用户名不存在" elseif intRet =2 then msgbox "密码错误" end if '//仅示例用,具体逻辑可以自己定义。这样登陆的业务逻辑,就放到了 '//192.168.1.2 上执行,结果返回给客户端。根据同样的道理。您也可以写出 '//注销的代码。如果按照这样的逻辑,一个局域网聊天,或是文件共享的程序(飞鸽传书?),不用费多少代码,就可以实现了。
Dim oPicService As Object Dim oPic As StdPicture Dim bSucceed As Boolean Set oPicService= NewSoapClient("http://192.168.1.3:80/", "PicService") set oPic =oPicService.GetPic("MyName") '//检索并返回 MyName 的照片 Set Me.Picture=oPic bSucceed = oPicService.UpLoad("MyName","C:\1.bmp") '//将 "C:\1.bmp" 图片上传到服务器,并覆盖 MyName 位置, '//并且返回操作的结果。