Silverlight 游戏开发小技巧:动感小菜单1

网页应用受限于自我之浏览器范畴,不能够管豪华效果了展示,正是以这么,在网页上落地了众多灿烂之计划,虽然动感程度及桌面应用无法比拟,但是以UI上倒是生足了功夫,用户体验好说无以伦比,比如说小小的菜单,在桌面游戏还栖息于四态按钮的时节,网页应用还已入动感时代了,这次,使用Silverlight实现一个稍稍菜单,体验一下旺盛吧

正文转自:http://book.51cto.com/art/200906/129770.htm

图片 1

http://yeweiyun868.blog.163.com/blog/static/563784432011112985215397/

当鼠标移入的上,目标的图标就会见推广,形成一个台阶的效力,要实现这个力量,将需用自定义控件和StackPanel的学问。

7.9.2  采用SSL实现加密传输(1)

现在于一个Silverlight工程中补充加新控件,用来打造小周图标,你得未雨绸缪一些ICON作为资源,我这里运用了Silverlight
游戏开发小技巧:实现街霸4的选人界面的资源。

每当默认情况下,IIS使用HTTP协议为明形式传输数据,Web
Service就是下HTTP协议进行数据传的。Web
Service传输的多寡是XML格式的明白。没有应用其它加密方法,用户的要数据非常容易吃窃取,如何才会保障网被传递的这些关键数据也?

图片 2

SSL(Security Socket
Layer)的国语全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建用户以及服务器之间的加密通信,确保所传递消息的安全性,同时SSL安全机制是依赖数字证书来贯彻的。

为有利于控制,把UserContorl的大大小小设定也64×64,在LayoutRoot里面上加一个Image控件,起名为IconImage,这个我们见面当打定义属性被控制图的源于:

SSL基被公用密钥和亲信密钥,用户用公用密钥来加密数,但解密数据必须动相应的私人密钥。使用SSL安全体制的通信过程如下:用户与IIS服务器建立连接后,服务器会管数字证书与公用密钥发送给用户,用户端生成会话密钥,并据此公家密钥对会话密钥进行加密,然后传递给服务器,服务器端用自己人密钥进行解密,这样,用户端和服务器端就成立了平久安全通道,只有SSL允许的用户才能够跟IIS服务器进行通信。
注 
意 SSL网站不同让一般的Web站点,它应用的凡”HTTPS”协议,而无是通常的”HTTP”协议。因此它的URL(统一资源定位器)格式为”https://网站域名"。

IconCard.cs中代码写成如下:

下面教如何采取SSL来增进IIS服务器和Web Service的通信安全。

public partial class IconCard : UserControl
{
public IconCard()
{
// Required to initialize variables
InitializeComponent();
}
private int _iconindex = 1;
public int IconIndex
{
get { return _iconindex; }
set
{
_iconindex = value;
var uri = new Uri("/AppleMenu;component/Res/" + value + ".png", UriKind.Relative);
IconImage.Source = new System.Windows.Media.Imaging.BitmapImage(uri);
}
}
}

心想事成步骤如下。

此可采取IconIndex来安装具体显示哪一个图形Icon,同时这特性可以啊明天底选定事件做索引。

1.也服务器安装证书服务

自然矣,如果您进行了编译,可以当Blend中选定控件,找到扩展属性直接改动:

比方惦记采取SSL安全体制意义,首先得也Windows Server
2003网设置证书服务。进入”控制面板”,运行”添加或删除程序”,接着进入”Windows组件向导”对话框,如图7-13所出示。

图片 3

 
图7-13  Windows组件向导

今在MainPage中添加一个StackPanel命名为Group1,并将显示方式修改成为“水平”,里面加加有才做打的图标控件,

勾选”证书服务”选项,单击”下一样步”按钮。

图片 4

随即选择CA类型。这里选择”独立根CA”选项,如图7-14所著。单击”下同样步”按钮,为投机的CA服务器起名,并安装证书之有效期限,如图7-15所展示。

面的Group2是另外一个效果,暂时不需管他,自定义的控件在Asset(资产)的Project(项目)中检索,如果没,则需要编译一下Crrl+Alt+B

 
图7-14  选择CA类型

图片 5

 
图7-15  设置CA信息

丰富到StackPanel方法吗蛮粗略,双击或者拖动都得,

最终指定证书数据库与证明数据库日志的职务,如图7-16所出示,单击”下一样步”按钮。

哼了,现在转入到后台受写代码吧,在Blend或VS中打开MainPage.cs,MainPage构造函数中添加如下代码:

 

for (int i = 0; i < 9; i++)
{
var c = Group1.Children[i] as IconCard;
if (c == null)
continue;
c.IconIndex = i;
c.RenderTransformOrigin = new Point(0.5, 0.5);
c.RenderTransform = new ScaleTransform() { ScaleX = 1, ScaleY = 1 };
} 
 
图7-16  指定证书数据库

即段代码的意是,从Group1这个控件被得到一个元素,转换元素变为IconCard控件,如果也null就不是,否则就好制定一个目录给她,而其的索引属性会帮我们反,这个操作而可参考者的内容在Blend里成功,而背后的代码是点名变换的主干点吧全方位控件的(50%,50%)位置,并且指定一个放缩变换为它,不要心急我们后面会用上。

为需要复制系统文件,所以要插入Windows的装置光盘,如图7-17所著。安装证书服务用停止当前底IIS运行,所以如果单击”是”按钮。

今日吃Group1添加一个鼠标的倒事件以及鼠标离开事件。

 
图7-17  复制系统文件
Group1.MouseMove+=new MouseEventHandler(Group1_MouseMove);
Group1.MouseLeave += new MouseEventHandler(Group1_MouseLeave);

末尾,显示得了关系服务之安装,单击”完成”按钮,如图7-18所出示。

又以鼠标移动及离开事件写副如下的代码:

 
图7-18  安装完成
void Group1_MouseLeave(object sender, MouseEventArgs e)
{
for (int i = 0; i < Group1.Children.Count; i++)
{
var c = Group1.Children[i] as IconCard;
if (c == null)
continue;
(c.RenderTransform as ScaleTransform).ScaleX = 1;
(c.RenderTransform as ScaleTransform).ScaleY = 1;
}
}
void Group1_MouseMove(object sender, MouseEventArgs e)
{
var pt = e.GetPosition(Group1);
int offest = (int)pt.X / 64;
if (offest >= Group1.Children.Count)
offest = Group1.Children.Count - 1;
else
if (offest < 0)
offest = 0;
double size = 1.5;
for (int i = offest; i < Group1.Children.Count; i++)
{
var c = Group1.Children[i] as IconCard;
if (c == null)
continue;
(c.RenderTransform as ScaleTransform).ScaleX = size;
(c.RenderTransform as ScaleTransform).ScaleY = size;
size -= 0.25;
if (size <= 1)
size = 1;
}
size = 1.5;
for (int i = offest; i >=0; i--)
{
var c = Group1.Children[i] as IconCard;
if (c == null)
continue;
(c.RenderTransform as ScaleTransform).ScaleX = size;
(c.RenderTransform as ScaleTransform).ScaleY = size;
size -= 0.25;
if (size <= 1)
size = 1;
}
}

 

立段代码虽然写的粗啰嗦,但是关押起连无困难,通过鼠标的X坐标位置取偏移点,计算出偏移位置上是第几只控件,然后倒退和升华的艺术设置任何控件的轻重缓急,这样虽可知下一个像样波浪的功能。

 

而今曾结,在底下的DEMO中,会看最后效果,以及因此接近方法召开出来的转动效果:)

 

本篇工程源代码下载地址如下:点击直接下载

 

图片 6

7.9.2  采用SSL实现加密传输(2)

正文作者:Nowpaper

2.配置SSL网站

推介Silverlight游戏开发博客:深蓝色右手

1)创建请求证书文件

设若想为Web Service使用SSL安全体制,首先用用Web
Service配置为网站。然后也该网站创建请求证书文件。

逐一单击”控制面板”→”管理工具”按钮,运行”Internet
信息服务(IIS)管理器”,在管理器窗口被进行”网站”目录,用鼠标右键单击要以SSL的Web
Service网站,在弹出的飞速菜单中选择”属性”命令,在网站属性对话框中切换到”目录安全性”选项卡,如图7-19所出示,

 

 
图7-19  网站属性

 

下一场单击”服务器证书”按钮,弹出”IIS证书向导”对话框。

在”IIS证书向导”对话框中选取”新建证书”选项,单击”下一致步”按钮,如图7-20所著。

 

 
图7-20  服务器证书

挑选”现在备选证书请求,但稍后发送”选项。单击”下一样步”按钮,如图7-21所出示。

 
图7-21  证书向导

于”名称”输入框中为该证取名,然后在”位长”下拉列表中选取密钥的位长(默认为1024,长度越长保密性越好,但性能会越差)。单击”下一样步”按钮,如图7-22所显示。

 
图7-22  设置证书名称

安单位信息,如图7-23所出示,然后单击”下同样步”按钮。设置公共名称,如图7-24所展示。

 
图7-23  设置单位信息
 
图7-24  设置公共名称

 

注 
意 公共名称必须输入为看站点的域名,例如要惦记就此地方https://www.maticsoft.com看Web
Service,则此处必须填写为”www.maticsoft.com”,否则用唤起用了非安全之证明,导致站点无法访问。并且切记,www.maticsoft.com和www.maticsoft.com:8001 带端口的顾也是见仁见智的,如果设置的是www.maticsoft.com,则网站设置为www.maticsoft.com:8001来走访也是力不从心利用的。

然后,单击”下一致步”按钮,设置国家地方,如图7-25所出示。

 

 
图7-25  设置国家地区

 

安装证书的单位、部门、站点公用名称与地理信息,一路单击”下一样步”按钮。

最终指定要证书文件之保留位置。这样便完事了要证书文件之创建。

 

7.9.2  采用SSL实现加密传输(3)

2)申请服务器证书

完了上述设置后,还要管创建的伸手证书文件提交给关系服务器。

在服务器端的IE浏览器地址栏中输入”http://localhost/CertSrv/default.asp”。

以”Microsoft  证书服务”欢迎窗口被单击”申请一个关系”链接,如图7-26所出示。

属下当关系申请类型受到单击”高级证书申请”链接,如图7-27所出示。

 

 
图7-26  申请证书
 
图7-27  选择证书类型

然后以高档证书申请窗口中单击”使用base64编码的CMC或PKCS#10……”链接,如图7-28所示。

 
图7-28  选择编码

 

连片下去当初辟的窗口中,打开刚刚生成的”certreq.txt”文件,将内部的始末复制到”保存的报名”中,如图7-29所展示。

 

 
图7-29  提交证书申请

单击”提交”按钮,显示”证书挂于”页面,如图7-30所展示。

 

 

 
图7-30  证书挂起

 

 

 

 

7.9.2  采用SSL实现加密传输(4)

3)颁发服务器证书

交付证明申请以后,还用披露服务器证书。依次选择”开始”→”设置”→”控制面板”,双击”管理工具”,再双击”证书颁发机构”,在开辟的对话框中精选”挂于的提请”选项,如图7-31所展示。

 

 
(点击查看大图)图7-31  挂起的申请

 

找到刚才申请之证书,然后用鼠标右键单击该项,在弹出的全速菜单中选择”所有任务”→”颁发”命令,如图7-32所出示。

披露成功后,选择”颁发的关系”选项,双击刚才颁发的证书,在弹出的”证书”对话框中之”详细信息”标签页中,单击”复制到文件”按钮,如图7-33所显示。

 

 
图7-32  颁发证书
 
图7-33  复制到文件

弹有”证书导出向导”对话框,连续单击”下同样步”按钮,选择”Base64编码X.509″选项,如图7-34所展示。

 
(点击查看大图)图7-34  选择导出文件格式

 

单击”下一样步”按钮,并在”要导出的文书”对话框中指定文件称,最后单击”完成”按钮。

4)安装Web服务器证书

重入IIS管理器的”目录安全性”标签页,单击”服务器证书”按钮,弹出”挂于的证明请求”对话框,选择”处理挂于的恳求并设置证书”选项,单击”下一样步”按钮,如图7-35所展示。

 

 
(点击查看大图)图7-35  处理挂起的证书

点名刚才导出的服务器证书文件之岗位,如图7-36所显示。

 
(点击查看大图)图7-36  选择导出位置

随后设置SSL端口,使用默认的”443″即可,最后单击”完成”按钮。

 

 

 

7.9.2  采用SSL实现加密传输(5)

5)配置网站启用SSL通道

于网站属性”目录安全性”标签页中单击安全通信栏的”编辑”按钮,然后,勾选”要求平安通道(SSL)”选项,如图7-37所显示。

 

 
(点击查看大图)图7-37  启用网站SSL通道

 

忽视客户端证书:选择该选择可以允许用户无需提供客户端证书就不过看该站点。

收受客户端证书:选择该选择可以允许有客户端证书之用户展开走访,证书不是不可或缺的。具有客户端证书之用户可给射;没有客户端证书之用户可应用任何身份验证方法。

要求客户端证书:选择该选择则只是允许具备行客户端证书之用户展开连接。没有管用客户端证书之用户被拒绝访问该站点。选择该选择从而以讲求客户端证书前,必须挑选”要求平安通道(SSL)”选项。

末段单击”确定”按钮,即成功启用SSL了。在完成了针对性SSL网站的布置后,用户如果在IE浏览器被输入”https://网站域名"就能访问该网站。
注  意 

勾选上SSL后,必须用HTTPS来走访,而顾网站的端口也会见使用SSL端口,默认为443。

设当您拜站点的长河遭到起无法正常访问的景况,那么请检查服务器防火墙是否禁止对SSl端口443底访,这点于轻被忽视,当然你呢得以自己修改端口。

如若要未可知顾,出现提示”你打算从目录中推行 CGI、ISAPI
或其他可执行程序,但拖欠目录不同意实施顺序。HTTP错误403.1-禁止访问:执行访问被拒。”那么要检查网站主目录的行权,将履行权设置为纯脚本即可,如图7-38所出示。

 

 
图7-38  设置执行权限

 

6)客户端安装证书

万一IIS服务器设置了”要求客户端证书”,则其它机器要用户想经过HTTPS访问与调用该Web服务,就待将CA的根本证书导入到客户端证书的可信任机构被,客户端才好正常访问Web服务。

(1)选择”开始”→”运行”命令,在弹出的对话框中输入”mmc”,出现而图7-39所出示之界面。

 

 
图7-39  启动控制台

(2)选择”文件”→”添加/删除管理单元”命令,出现而图7-40所出示之界面。

 
图7-40  添加/删除管理单元

 

(3)单击”添加”按钮,在可用独立管理单元列表中精选”证书”选项,出现如图7-41所展示之界面。

(4)选择”计算机账户”选项,单击”下同样步”按钮,选择”本地电脑”选项,然后挨家挨户单击”完成”→”关闭”→”确定”按钮。

 

 
图7-41  添加证书管理单元

入时用户的证明管理单元,界面如图7-42所著。

 
(点击查看大图)图7-42  选择证书导入位置

入选”个人”下的”证书节点”选项,单击鼠标右键,在弹出的敏捷菜单中选择”所有任务”→”导入”命令,如图7-43所显示。

 
(点击查看大图)图7-43  导入证书

选我们刚刚颁发的服务器证书cert.cer,将该导入到村办的储存位置,导入后只要图7-44所展示。

 
(点击查看大图)图7-44  导入到证书

 

7)SSL的优点和缺点

长:它对Web服务提供的数据完整性没有外影响,当值返回给客户时,值还是维持原样,并从未因为在传过程中行使了加密技术而发生变化。

症结:它对站点的完全性能有影响,因为她需展开过多加解密的多寡处理。

 

 

7.9.3  访问IP限制

除去上述两种植办法外,还有一样种比较简单的求证措施,就是经对来自IP的检讨来进展验证,我们就同意指定IP的服务器来拜访,保证点对碰的安,我们可以Web
Service的道吃投入对IP的检讨。

(示例位置:光盘\code\ch07\WebService1)

bool ValidateIP(int UserID, out string exceptionInfo)  
{  
    exceptionInfo = "";  
    string uip = HttpContext.Current.Request.UserHostAddress;  
    Common dal = new Common();  
    List<string> ips = dal.GetPermitIp(UserID);//得到该用户ID所允许的IP列表  
    if (ips == null || ips.Count == 0)  
    {  
        exceptionInfo = "调用Web服务的客户端IP未被允许,无法访问!";  
        return false;  
    }  
    if (ips.Contains(uip)) //允许IP列表中包含该IP  
    {  
        return true;  
    }  
    exceptionInfo = "调用Web服务的客户端IP未被允许,无法访问!";  
    return false;  
} 

当实际Web方法里调用该措施检查用户访问者是否是盖我们允许的IP进行走访的,以保安全。

瑜:简单,防止非指定客户机器访问。

缺陷:IP是可以伪造的;维护IP地址表比较繁琐。且只称吃固定IP访问者的情。

总之,上面几乎种植艺术才是一个略的演示,讲解了什么样通过编程和部署的方法拒绝没有法定证明单据的客户端访问Web
Service来保护你的Web
Service。在公的安康模型中求的错综复杂级别相应由而的买卖需求决定。可以是同一种植或几乎种植证明机制的结缘。当然并无是有着的Web应用程序都待地方的平安模式,尤其是当你的Web
Service可以随心所欲使用的时节,并不需要上面的安康体制处理。

 

7.10  Web Service开发中得留意的问题(1)

1.接口是自从说明的

接口的名、参数和返回值应该同样收押就是理解这接口大概是胡用之。当然接口描述文档肯定是必备的,但这些描述文档的品质谁知道哪啊,谁起空天天翻在文档写东西呢,又来哪个会背着下去也?所以给人眼前平亮的接口命名绝对值得,这吗是有代码书会告诉您应当遵循的同漫长规则。

2.劳动接口粒度要相宜

Web
Service服务接口粒度太小了,那纯粹是无考虑XML解析性能了。一般新手容易犯这病,简单地将看似的艺术暴露出开劳动接口,这样实在是拿原来在
local的调用放到了remote,除此之外几乎从不另外好处。粒度太要命,会让使用者带来众多麻烦,因为以Web
Service中,粒度很老的劳动一般都需过多参数来映射该服务应有尽有的动静。

3.接口参数要尽可能简单

只有发一个参数的服务接口,往往无可知满足工作需要。但过多之参数为加强了失误的几乎率,增加了测试的资本。所以,参数恰到好处为优。

4.要是提供对接口参数和返回值的校验

严格来说,对接口参数与返回值的说明也理应算是Web
Service接口声明的均等有。增加对参数和返回值的校验,有利于减少调用者的困惑,系统受什么的参数,返回值是呀格式都了如指掌。但是及时亟需一个分外好的衡量,否则调用者会以为你暴露的办法充分为难用,因为限太多了。比较不错之网应是宽进严出的,目标用户更多越应该专注及时或多或少。要于宽进严出和完善校验之间做好平衡确实大麻烦的。简单的法是,对而暴露的接口自己举行测试,在测试的过程中体会这个度。一般的话要自己发都难过,那人家是绝不见面因此之。

5.接口底返回值应该是大概的语言无关之

听到了许多总人口问怎么回到DataSet之类的繁杂类型,尤其是玩.NET的丁,也许是VS.NET对封装DataSet提供了过分宏观的支撑吧。但对于XML来说,把其他复杂对象映射到XML文档都是艰难的。就哼于将三维向二维投影一样,复杂性增加了也好是一点半点。在XML中终究所有的品种且是字符串,要想发挥其他类,就使补加额外的辨证。可以望rpc/encode方式WSDL文档的complexType部分,自行体会。

6.谨慎地废除来异常

对Web
Service中的其余特别且应有展开对应的处理。可以简单地归结为以下简单种情况。

第1种状态是接口返回值是大概类型,比如bool型,就true和false两种植情形,不弃来特别怎么收拾?选择有有限种植,一凡是废除来十分,二凡反接口,返回int用1和0针对承诺true和false,用-1对准承诺系特别。

第2种状况是接口返回值是纵横交错对象,可以透过参数out string
exceptionInfo来返回异常信息。

7.接口假如尽可能采用更新的正式

如何为同一坏定义的接口能服务得还好还悠久?从技术标准者来说有少碰:不提前,不落后。超前,支持其的工具集不见面极其长,估计谁也未思为来单看起很得意而哪位都用非了底东西;落伍,眼前有着的家伙大概都支持,不过明天即令不自然了,技术提高如此快,不可知将团结劳动够呛吧。尽量利用更新的正规的意是在匪退步的功底及一旦来前瞻性。举个简单的例子,今天复采取rpc/encode方式就显示不合时宜了,虽然它在前少年好盛行,可今天犹早已不提倡用了,明天或大家就是都记不清了。就算你当时更新了公的接口,客户也可能就变了供应商了。

8.如留意标准的通用性

虽说都是相同的正儿八经,但正式发两样之版,而且就算是与一个版本的业内,不同之家伙实现起来吧或来细微差别的。如果用户是一定的尚好说,采用些工具绑定的性状也从来不什么。但要接口用户不是特定的人群,那就设顾了,在行使某同规范标准时毫不为此实现工具所特有的事物,否则很有或导致客户的分神,导致只发生老少一些客户会应用你提供的接口。多一个客户就差不多一致分钱啊,兄弟,干嘛跟钱过不去?

9.禁用HTTP POST/GET协议

除非另外指定,否则.NET将待将Web服务绑定到3栽协议:HTTP/POST、HTTP/GET和SOAP。之所以说”试图”,是因依靠让劳动的参数和归路,HTTP/GET协议或未可用。.NET生成的WSDL文件拿活动包含绑定这3种协议的通令,客户程序可以自由选择使用啊种协议以及劳务通信。

若在Web.config文件被入下列内容,就好去对HTTP/POST和HTTP/GET协议的绑定:

<webServices>  
    <protocols>  
        <remove name="HttpPost" />  
        <remove name="HttpGet" />  
    </protocols>  
</webServices> 

何以而避通过HTTP/POST和HTTP/GET协议引出Web服务也?主要的2只因素是安全性及互操作性。HTTP/GET的安全性不使SOAP,而且由于HTTP/GET常见于Web链接,怀有恶意的人数或许采用它实施招摇撞骗,使他人在无形中被之所以好之安康标识调用Web服务,却还以为自己在单击Web链接。

纵使互操作性而言,SOAP是广泛应用的Web服务通信专业,而HTTP/GET和HTTP/POST不是。因此,对于.NET生成的WSDL文档中默认包含的HTTP/GET和HTTP/POST绑定,许多自动生成代理服务器的工具不见面明白。因此,如果您的Web服务不是免绑定到HTTP/GET和HTTP/POST协议不可,最好取消这有限栽绑定。

 

7.10  Web Service开发被得留意的题目(2)

10.用TcpTrace查看SOAP请求/应答消息

对于开发Web服务以之丁来说,调试可能是桩异乎寻常的难事,因为无论是.NET
SDK还是VS.NET,都未曾提供工具来查客户端和服务器之间的SOAP消息。

如果.NET和非.NET的客户端、服务器端的相过程出现了问题,要想找有题目的发源,拥有查看SOAP消息之能力就越来越重大,因为这看似题目屡屡与SOAP消息之格式有关(例如”消息受到蕴含了SOAPAction吗?”)。

tcpTrace(www.pocketsoap.com/tcptrace)是一个翻看这类似信息交换过程的优良工具,它通过设置一个客户端与服务器端之间的隧道工作。启动tcpTrace时,它会要求输入目标URL和端口号,以及tcpTrace监听的地面端口号。这样,你不怕得经设置代理stub的URL属性,把stub指为此当地端口(例如localhost:8080)。tcpTrace能够记录有的请求和应答HTTP消息。

tcpTrace的一个受制是,它在消息流程中所处之职位决定了她不克为此来查通过SSL发送的信息。如果您只要翻通过SSL发送的SOAP消息,只能修一个定制的ISAPI过滤器。

11.简化接口设计

当众有关N-层应用设计之阐述中,简化接口设计这无异企划而诀可以说凡是随处可见。但是,对于Web服务这么的分布式计算环境来说,简化接口设计之机要更加突出。

当规划分布式应用时,出于性能与可伸缩性的考虑,应当确保客户端以及劳务器端之间的调用尽可能地丢失。减少网络调用不仅方便减少通信支出(如果一味所以1个SOAP消息可以达到目标,就绝对不用发3个信息),降低网络流量,而且提高了利用的特性。显然,这一切都是开发者梦寐以求的对象。那么简化的接口到底有哪特征也?

率先来拘禁一个复杂接口的事例:

namespace ChattyService  
{  
    public class ChattyService : WebService  
    {  
        private string username;  
        private string password;  
        public string Username  
        {  
            [WebMethod]  
            set 
            {  
                username = Username;  
            }  
        }  
        public string Password  
        {  
            [WebMethod]  
            set 
            {  
                password = Password;  
            }  
        }  
        [WebMethod]  
        public bool Logon()  
        {  
            //验证身份  
            return true;  
        }  
    }  
} 

当斯事例中,username和password是有限个属性,调用logon()方法之前率先必须安装这半单特性。有一个题目光看这段代码不太爱注意到,这即是username和password都当做Web方法引出。这就是说,每次对性能的get/set操作都见面导致一个对准劳动的调用。

遵简化接口设计之渴求,改进后的代码如下:

namespace ChattyService  
{  
    public class ChattyService : WebService  
    {  
        [WebMethod]  
        public bool Logon(string Username, string Password)  
        {  
            //验证身份  
            return true;  
        }  
    }  
} 

本,username和password成了logon()方法的参数。修改后的代码的长在,它将登录操作对服务器的3赖调动用下降到了1潮。另一方面,如果参数的个数太多,这个方法恐怕看起十分无像样。这时,可能要把办法的参数整理成几只复杂类型,例如,把username和password
两个参数封装到一个credential(证书)对象吃。

12.幸免采用ASP.NET会说话状态

.NET贯彻的对话状态管理功能解决了它的先辈ASP
3.0在的广大题材,例如请求串行化等,但据存有受制。应当认识及,.NET的对话状态管理作用不是特地为Web服务条件受到之对话状态而设计的,而是为以限重新常见的ASP.NET应用中管理会话状态而规划的,它凭借让HTTP
Cookie(有一样栽通过改写URL实现的未待Cookie的模式,但未适用于Web服务)。

Cookie是HTTP独有的。在Web上,所有的浏览器都支持HTTP,所以Cookie非常适合在Web应用被应用。但是,在Web服务遭遇应用Cookie却将服务范围到了HTTP协议及。另一方面,SOAP协议的运作是单身为传输协议的,因此若拿Web服务使用范围到HTTP协议及,那么下之油滑也用备受限制,一旦要是透过非HTTP的导协议(例如SMTP)提供劳务,事情虽会转移得老麻烦。

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图