护士站的客户端采用windows moblie,后台数据通过web service提供,在这次护士站的开发中,我负责的工作就是web service的开发。

首先介绍下什么叫web service,简单来说,web service相当于一种远程的函数调用。我们可以将后台处理好的数据,通过web service给客户端调用,这样的好处是可以实现跨平台、跨语言,做到代码重用,比如你用.net写的web service,也可以给用java写的客户端调用。web serivce传递数据时采用的是soap协议,数据在浏览器最终是渲染成xml的形式。

1、在编写护士站的web service时,给客户端返回的数据类型主要有两种:实体类类型、链表类型。

a、实体类类型:当客户端通过web serivce获取的数据类型为实体类类型时,必须要在web service服务端添加下面这些代码,客户端才能识别出这些实体类。

    [XmlInclude(typeof(SignCollection))]    [XmlInclude(typeof(ExecutiveOrder))]    [XmlInclude(typeof(NurseInfo))]    [XmlInclude(typeof(Patient))]    [XmlInclude(typeof(SoapSecurity))]    [XmlInclude(typeof(test))]    [XmlInclude(typeof(Ward))]    [XmlInclude(typeof(SignRecord))]

b、链表类型:当客户端通过web service获取的数据类型为链表时,客户端会自动将web service服务端的链表类型转换为数组类型。

2、在客户端获取web service的某种数据类型时,必须在该数据类型的前面加上引用web service时的命名空间,比如我在护士站引用web service时填写的命名空间为NurseService,当我想获取病区实体类对象时,必须得像下面这样写

1 NurseService.Ward=new NurseService.Ward();

3、权限验证,有权限的用户才能获取到web service返回的数据,否则返回空的数据,使用Soap标头实现权限验证。

a、首先自定义一个继承SoapHeader的类

public class SoapSecurity:SoapHeader

{
    public string UserName;
    public string PassWord;
}

b、然后在web service中声明这个自定义类,并且写一个函数来操作该自定义类来完成验证。

 1 public class NurseService : System.Web.Services.WebService 2 { 3         public SoapSecurity security=new SoapSecurity();     //Soap标头对象 8         public bool Validate() 9         {10             bool flag = false;11             try12             {13                 NurseInfo ni = new NurseDao().IsLogin(security.UserName, security.PassWord);   //判断是否有权限14                 if (ni.UserName!=null && ni.PassWord!=null)    //返回的实体类不为空,表示验证正确15                 {16                     flag = true;17                 }18             }19             catch (Exception e)20             {21                 log_debug.Debug(e.Message + "" + e.StackTrace);     //记录异常日记22             }23             return flag;24         }25      26 }27        

c、在需要验证的WebMethod前面加上[SoapHeader("security", Direction = SoapHeaderDirection.In)]。······security为上面自定义类的实例

 1         [WebMethod(Description = "根据护士Id获取该护士的所有病人")] 2         [SoapHeader("security", Direction = SoapHeaderDirection.In)] 3         public List<Patient> GetPatientByNurseId(string nurseId) 4         { 5             List<Patient> patients = new List<Patient>();   //声明链表patients保存返回的病人数据 6  7             try 8             { 9                 if (Validate())   //有权限时才将数据绑定到链表patients中,否则返回一个空的链表10                 {11                     patients = new NurseDao().GetPatientByNurseId(nurseId);    //保存返回的病人数据12                 }13             }14             catch (Exception e)15             {16                 log_debug.Debug(e.Message + "" + e.StackTrace);     //记录异常日记17             }18 19             return patients;20         }

d、此时在客户端要想获得调用WebMethod的权限,必须要声明SoapSecurity对象,并且该对象的属性值要符合一定的条件

1 ns.SoapSecurityValue = new SoapSecurity();2 ns.SoapSecurityValue.UserName = 登陆界面.userName;3 ns.SoapSecurityValue.PassWord = 登陆界面.passWord;

转载于:https://www.cnblogs.com/qiao2011/archive/2012/03/24/2416006.html

护士站之web service相关推荐

  1. WCF,Net remoting,Web service概念(转)

    WCF,Net remoting,Web service概念 今天看到WCF,说是整合了Net remoting,Web service...下面列一下概念. 一 WCF 概括地说,WCF具有如下的优 ...

  2. Amazon Web Service 雲端運算平台攻略 【3】:免費架WordPress部落格的虛擬主機

    本文目的 如果你需要一個能自己管理控制的部落格平台,基本上需要的是租用一台伺服器加上安裝部落格軟體.本文要告訴你,如何運用Amazon的雲端平台AWS提供的一年免費Free Tier,來安裝使用屬於你 ...

  3. 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】

    Amazon是全球雲端運算平台提供商的領頭羊之一.其雲端服務透過AWS(Amazon Web Services)網站 平台註冊.登入.使用.付費,單一入口相當便利. AWS平台提供了運算用的EC2 , ...

  4. 【转】WCF、Net remoting、Web service概念及区别

    Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit ...

  5. WCF,Net remoting,Web service

    一 WCF 概括地说,WCF具有如下的优势:     1.统一性     前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的 ...

  6. MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ESA_DSQ/article/details/70176214 这是MODIS数据的简介和下载的最后 ...

  7. WebService 理论详解、JWS(Java Web Service) 快速入门

    目录 WebService (web服务)概述 WebService 平台技术 WebService 工作原理 WebService 开发流程 常见 Web Service 框架 JWS(Java W ...

  8. 藉由GZipStream的壓縮,來減少Web Service的傳輸量

    不知道有多少人有遇到跟我一樣的問題,就是Web Service的資料回傳量太大了,如果都是走區域網路的話,除非量很大,不然還感覺不太出來,可是,如果是透過ADSL的頻寬的話,那就很驚人了,以30MB的 ...

  9. 由GZipStream的压缩,減少Web Service的传输量

    不知道有多少人有遇到跟我一樣的問題,就是Web Service的資料回傳量太大了,如果都是走區域網路的話,除非量很大,不然還感覺不太出來,可是,如果是透過ADSL的頻寬的話,那就很驚人了,以30MB的 ...

最新文章

  1. asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路
  2. C++实现学生成绩管理系统
  3. 文本编辑器中实现自定义编辑框中字体和大小的功能
  4. 网页html语言怎么看,怎样查看网页的css代码?
  5. Python《爬虫收集》
  6. 通信值勤维护管理条例_加强固定通信台站值勤管理与建设
  7. 教你在Zabbix环境下快速升级nginx版本!
  8. 一线互联网企业负载均衡和应用优化基础
  9. PAT乙级1005. 继续(3n+1)猜想 (25)
  10. linux下 VSCode快捷键
  11. HTML:Marked-js+Bootstarp简单实现Markdown文本编辑器
  12. Detecting Deep-Fake Videos from Appearance and Behavior
  13. 原生 android 手机,享受原汁原味的安卓:七款原生安卓系统手机推荐
  14. [WebGL入门]二十一,从平行光源发出的光
  15. python棋盘格_python实现张正友棋盘格标定法
  16. ssm电子族谱信息管理系统的设计与实现毕业设计-附源码161714
  17. 信息学奥赛一本通 1354:括弧匹配检验
  18. R6034 又来了.
  19. Callbacks API-EarlyStopping
  20. 「镁客·请讲」Video++董慧智:让AI融入消费级视频,我们打开了视频的“黑盒子”...

热门文章

  1. P-1 jQuery代码的写法简介
  2. 360免费wifi v5.3.0.1025 免费版
  3. Mindspore的快速上手
  4. centos7.8 开启mysql3306端口
  5. 基于ESP32搭建物联网服务器一(AP配网)
  6. vm-quick-start使用
  7. vue2.9 使用croppa实现图像裁剪并上传服务器 (croppa裁剪工具 + element 框架搭建)
  8. 计算机组成原理带进位加运算,计算机组成原理实验运算器进位.doc
  9. 签到体系设计:签到功能该怎么画
  10. PyG基于DeepWalk实现节点分类及其可视化