论富客户端程序的webservice实现

声明:偶第一次在博客园写点东西,且水平处于菜鸟阶段,有不对的地方大家就当笑话看看好了~

也许富客户端本是针对基于浏览器的bs结构的程序而言的,我说的这样客户端也是需要安装的,也许和remoting差不多吧。不过我比较笨,remoting怎么也没弄明白,反到是对webservice很是喜欢,于是将自己写的程序加上webservice,由cs结构变成了bs结构了。
光说这些也不清楚,我结合最近一个项目中的实例来说下吧。

在公司做电梯项目的时候,因为需要在客户端发卡(类似于向公交卡中写入 信息的过程),且主程序是bs结构的,于是开始计划用activex控件来完成,但是偶对c++不感冒,且最近网络不安全,对控件(特别是浏览器控件)防范很多,于是只好另换别的方法,无意中看到了webservice,其实我以前也听说过webservice,但一直没亲自44,这次用过之后,才知道webservice是即容易学,有好用。捡到宝了,哈哈~

我简单说下webservice的用法:
1)在服务端用vs建立一个web服务项目,然后按照helloworld的样式写个你需要的函数,如名称为ConnectServer(),假定此函数的功能为测试服务器链接,正确返回2008,否则链接失败。
2)然后将服务端发布到本地iis的虚拟目录中如myweb,
3)建立一个客户端(应用程序),添加一个web应用,如:http://localhost/myweb/service1.asmx,名称:myservice这样就完成了webservce的引用了。
4)在调用的时候:myservice.service1 myse = new myservice.service1();
                              int result = myse.ConnectServer();
5)记得在int result前加一句mse.Url = myserviceUrl,这个地址放在你的客户端配置文件中就好了。
这样一个完整的webservice应用就完成了。

然后具体在我项目中,利用webservice获取卡片的信息,然后存储到本地,再调用本地的程序将数据写入卡片中,这样即免去了控件的烦恼,又实现了客户端及时的与服务器交互,呵呵,何乐而不为呢?
而且webservice是由iis维护的,可以为其设定特定的线程池,一下子就多线程及线程优化的任务推给了ms,哈哈~
btw:如果webservice要部署到远程服务器,请在webconfig中的system.web中添加<webServices>
      <protocols>
        <add name="HttpSoap"/>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
    </webServices>

Over。就写这么多了,再多偶也写不出来了,嘻嘻!

posted on 2007-08-13 14:52  咖啡色  阅读(355)  评论(0编辑  收藏  举报