护士站之web service
护士站的客户端采用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相关推荐
- WCF,Net remoting,Web service概念(转)
WCF,Net remoting,Web service概念 今天看到WCF,说是整合了Net remoting,Web service...下面列一下概念. 一 WCF 概括地说,WCF具有如下的优 ...
- Amazon Web Service 雲端運算平台攻略 【3】:免費架WordPress部落格的虛擬主機
本文目的 如果你需要一個能自己管理控制的部落格平台,基本上需要的是租用一台伺服器加上安裝部落格軟體.本文要告訴你,如何運用Amazon的雲端平台AWS提供的一年免費Free Tier,來安裝使用屬於你 ...
- 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】
Amazon是全球雲端運算平台提供商的領頭羊之一.其雲端服務透過AWS(Amazon Web Services)網站 平台註冊.登入.使用.付費,單一入口相當便利. AWS平台提供了運算用的EC2 , ...
- 【转】WCF、Net remoting、Web service概念及区别
Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit ...
- WCF,Net remoting,Web service
一 WCF 概括地说,WCF具有如下的优势: 1.统一性 前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的 ...
- MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/ESA_DSQ/article/details/70176214 这是MODIS数据的简介和下载的最后 ...
- WebService 理论详解、JWS(Java Web Service) 快速入门
目录 WebService (web服务)概述 WebService 平台技术 WebService 工作原理 WebService 开发流程 常见 Web Service 框架 JWS(Java W ...
- 藉由GZipStream的壓縮,來減少Web Service的傳輸量
不知道有多少人有遇到跟我一樣的問題,就是Web Service的資料回傳量太大了,如果都是走區域網路的話,除非量很大,不然還感覺不太出來,可是,如果是透過ADSL的頻寬的話,那就很驚人了,以30MB的 ...
- 由GZipStream的压缩,減少Web Service的传输量
不知道有多少人有遇到跟我一樣的問題,就是Web Service的資料回傳量太大了,如果都是走區域網路的話,除非量很大,不然還感覺不太出來,可是,如果是透過ADSL的頻寬的話,那就很驚人了,以30MB的 ...
最新文章
- asp.net webform 复制窗体代码_逆向分析流氓软件自我复制以及防御思路
- C++实现学生成绩管理系统
- 文本编辑器中实现自定义编辑框中字体和大小的功能
- 网页html语言怎么看,怎样查看网页的css代码?
- Python《爬虫收集》
- 通信值勤维护管理条例_加强固定通信台站值勤管理与建设
- 教你在Zabbix环境下快速升级nginx版本!
- 一线互联网企业负载均衡和应用优化基础
- PAT乙级1005. 继续(3n+1)猜想 (25)
- linux下 VSCode快捷键
- HTML:Marked-js+Bootstarp简单实现Markdown文本编辑器
- Detecting Deep-Fake Videos from Appearance and Behavior
- 原生 android 手机,享受原汁原味的安卓:七款原生安卓系统手机推荐
- [WebGL入门]二十一,从平行光源发出的光
- python棋盘格_python实现张正友棋盘格标定法
- ssm电子族谱信息管理系统的设计与实现毕业设计-附源码161714
- 信息学奥赛一本通 1354:括弧匹配检验
- R6034 又来了.
- Callbacks API-EarlyStopping
- 「镁客·请讲」Video++董慧智:让AI融入消费级视频,我们打开了视频的“黑盒子”...
热门文章
- P-1 jQuery代码的写法简介
- 360免费wifi v5.3.0.1025 免费版
- Mindspore的快速上手
- centos7.8 开启mysql3306端口
- 基于ESP32搭建物联网服务器一(AP配网)
- vm-quick-start使用
- vue2.9 使用croppa实现图像裁剪并上传服务器 (croppa裁剪工具 + element 框架搭建)
- 计算机组成原理带进位加运算,计算机组成原理实验运算器进位.doc
- 签到体系设计:签到功能该怎么画
- PyG基于DeepWalk实现节点分类及其可视化