`
tansitongba
  • 浏览: 503774 次
文章分类
社区版块
存档分类
最新评论

Silverlight 2.5D RPG游戏技巧与特效处理:(十九)基于WCF的注册与登录

 
阅读更多

最后还剩下游戏入口部分,Silverlight是客户端插件,因此首选WCF作为它与服务器端数据库的桥接。撇去UI方面华丽的动态角色创建与选择不再多说,本节的重点便是在教程Demo的基础上整合进基于WCF的注册与登陆等操作,使之最终成为一款相对完整而五脏俱全的RPG作品。

依旧钟情于LINQ,因此LINQ to SQL成为我操作数据库的首选。强烈建议大家首先参考这篇文章:数据库LINQ TO SQLSilverlight中的应用(WCF) ,其中的所有细节都已阐述得相当详细。如果你的电脑中存有之前的Demo源码,那么接下来你可以按照下面的步骤跟着我一步步从零开始搭建游戏的登陆部分,真真切切的体会WCF技术在Silverlight中的常规应用。

第一步:依照游戏中角色注册、创建、相关信息及登录等需求设计数据库,并编写好相应可能会用到的增删改查等存储过程(本节Demo源码中附带了名为FS3.sql的数据库文件,表和存储过程都在其中)

第二步:在Silverlight的寄主Web项目中右键->添加新项目->LINQ to SQL映射类,这里我取名为L2S.dbml

第三步:打开VS视图中的服务器资源管理器,右键添加SQL连接到FS3(SQL版本最好2005以上)后将其中的表和存储过程等均拖到L2S.dbml的设计窗口中形成大家再熟悉不过的映射:

第四步:此时便可编写WCF操作类了,Silverlight的寄主Web项目中右键->添加WCF服务,取名为WCFService.svc

需要特别注意的是带返回类型的存储过程需要修改其相应属性为表实体,否则后面的逻辑查找不到:

第五步:编写具体操作逻辑,搞过WCF开发的朋友此处可完全忽略,超级简单;没搞过的也很容易看懂,具体就不多说啦,直接列代码:

[ServiceContract(Namespace="")]
[AspNetCompatibilityRequirements(RequirementsMode
=AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults
=true)]
publicclassWCFService{
[OperationContract]
publicvoidDoWork(){}

///<summary>
///添加新用户(添加过程中字符型超出限制长度则自动截取)
///</summary>
///<returns>新用户的ID,0则表示失败</returns>
[OperationContract]
publiclongInsertUser(stringuserName,stringpassword,stringrealName,stringidCard,stringeMail,stringaddress){
using(L2SDataContextdc=newL2SDataContext()){
returnConvert.ToInt64(dc.p_InsertUser(userName,password,realName,idCard,eMail,address,"","").ReturnValue);
}
}

///<summary>
///用户资料验证
///</summary>
///<paramname="userName">用户名</param>
///<returns>0表示不存在</returns>
[OperationContract]
publicintCheckUserExist(stringuserName){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_CheckUserExist(userName);
}
}

///<summary>
///用户登陆验证
///</summary>
///<paramname="userName">用户名</param>
///<paramname="password">密码</param>
///<returns>0表示不匹配</returns>
[OperationContract]
publicintUserLogonValidate(stringuserName,stringpassword){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_CheckUserLogon(userName,password);
}
}

///<summary>
///检查角色是否已存在
///</summary>
///<paramname="name">角色名</param>
///<returns>0表示不存在</returns>
[OperationContract]
publicintCheckRoleExist(stringname){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_CheckRoleExist(name);
}
}

///<summary>
///检查用户创建的角色数量
///</summary>
///<paramname="userName">用户名</param>
///<returns>角色数</returns>
[OperationContract]
publicintGetUserRoleNum(stringuserName){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_GetUserRoleNum(userName);
}
}

///<summary>
///添加新角色
///</summary>
///<returns>新角色的ID,0则表示失败</returns>
[OperationContract]
publiclongInsertRole(stringuserName,stringname,byteavatar,bytesex,byteoccupation,byteroleLevel,longexperience,longmapID,stringlastIP,stringremarks){
using(L2SDataContextdc=newL2SDataContext()){
returnConvert.ToInt64(dc.p_InsertRole(userName,name,avatar,sex,occupation,roleLevel,experience,mapID,lastIP,"").ReturnValue);
}
}

///<summary>
///根据用户名获取该用户的所有角色
///</summary>
///<paramname="userName">用户名</param>
///<returns>创建的所有角色</returns>
[OperationContract]
publicList<Role>GetRoleByUserName(stringuserName){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_GetRoleByUserName(userName).ToList<Role>();
}
}

///<summary>
///删除角色记录
///</summary>
///<paramname="roleName">角色名</param>
///<returns>失败0,成功1</returns>
[OperationContract]
publicintDeleteRole(stringroleName){
using(L2SDataContextdc=newL2SDataContext()){
returndc.p_DeleteRole(roleName);
}
}

}

第六步:也是最后一步,在RPGEffectsDemo项目中右键添加服务引用(Service References),然后检索到WCFService.svc完成即可。接着发布网站,并在服务器端配置好IIS,整个流程到此结束。

参照如上步骤搭建的WCF框架,如果服务器(IIS)或数据库相关数据参数发生变动则仅需修改以下两个文件:ServiceReferences.ClientConfigWeb.config,具体位置如下,参数很好理解,尤其是搞过这方面开发的朋友更无须多说:

一切OK后,以游戏登陆时输入用户名与密码的窗体为例,我们可通过类似以下的代码创建WCF连接以及处理相应逻辑:

WCFServiceClientwcfServiceClient=newWCFServiceClient();
wcfServiceClient.UserLogonValidateAsync(userName.Text.Trim(),GlobalMethod.Encrypt(pwd.Password));
wcfServiceClient.UserLogonValidateCompleted
+=(wcfs1,wcfe1)=>{
if(wcfe1.Result!=0){
LoginManager.UserName
=userName.Text.Trim();
if(Login!=null){Login(this,null);}
}
else{
LoginManager.loading.Hide();
LoginManager.loginTip.Show(GetLanguagePackContent(
11),LoginTipMode.TipOnly);
}
wcfServiceClient.CloseAsync();
};

ASP.NET页面设计类似,游戏中比如语言选择、版本说明、登陆、注册、角色创建、角色选择、物品窗口、属性窗口等每个窗体我们都可以单独的控件类文件存在,并为它们内部的每个需要交互的按钮设置对应的事件以实现与其他对象的交互消灭耦合:

另外,Demo使用了动态多国语言设计,众所周知同一词汇在不同语言书写中存在长度差异,因此语言包中还应在需要的地方添加上OffsetFontSize参数以使得界面看上去更协调整洁:

Silverlight动态多国语言设计模式对于WebGame来说可轻松实现玩家跨国交互和竞技,可谓真正能实现网游国际化的RIA技术;这才是Silverlight页游即将为世界所缔造的网游领域新的蓝海!第四次游戏革命:网页网游全球一体化。试想不同民族、不同国籍的玩家在一款游戏中同场竞技或SNS中相互交流,尤其是亚洲,中、港、台、日、韩、越、泰等周边国家的游戏玩家齐聚一堂,共享世纪网游大作,那将是一件多么伟大而具有划时代意义的历史记忆!不远了,多少前辈曾经为了这个梦想而奋斗青春,当微软为了Silverlight能兼更强劲的GPU而收购NVIDIA,当Silverlight 5正式版浩瀚问世之时,那才是网游世界新的春天!

XNA已成为Silverlight.XNA,无可厚非Silverlight必将成为微软未来平台统一与兼容的首选~!兼具高开发效率、优秀用户体验及跨平台等诸多优势最具潜力的RIA技术,未来将与HTML5共舞,优势互补一统所有网络应用。

本系列源码请到目录中下载

在线演示地址:http://silverfuture.cn

分享到:
评论

相关推荐

    silverlight+wcf n维拼图游戏

    【银光+N维拼图游戏:Silverlight与WCF技术的完美融合】 本文将深入探讨一个基于Silverlight和WCF技术构建的n维拼图游戏的实现细节。Silverlight是微软推出的一种富互联网应用程序(RIA)平台,它允许开发者创建...

    silverlight+Wcf实现登录

    通过以上步骤,我们可以构建一个基于Silverlight和WCF的登录系统,它结合了Silverlight的富用户体验和WCF的灵活通信能力,为用户提供了一个高效、安全的登录界面。在实际项目中,这种组合经常被采用,特别是在企业级...

    silverlight通过wcf处理word问题

    本文将详细介绍如何利用Silverlight与WCF来解决这些问题。 #### 二、背景知识简介 ##### 2.1 Silverlight简介 Silverlight是Microsoft推出的一种用于创建Web应用程序的框架,它能够在多种浏览器上运行,支持丰富的...

    silverlight及WCF在IIS上发布技巧

    以下是一些关于"Silverlight及WCF在IIS上发布技巧"的重要知识点: 1. **Silverlight应用程序部署**: - 首先,确保IIS服务器已安装并配置了ASP.NET支持,因为Silverlight应用通常基于.NET框架。 - 将Silverlight...

    silverlight与WCF通信简单例子

    总结来说,Silverlight与WCF的通信涉及服务的创建、客户端代理的生成、跨域策略的设置、服务方法的调用以及错误处理等多个方面。掌握这些知识,有助于开发者构建功能丰富的、与后台服务紧密协作的富互联网应用程序。

    silverlight与wcf互相通讯

    Silverlight与WCF之间的通信是Web应用程序开发中的一个重要技术,特别是在构建富客户端应用时。Silverlight,微软推出的RIA(Rich Internet Application)框架,允许开发者创建具有丰富用户界面和交互性的Web应用。...

    如何利用Silverlight与WCF通信

    这就是Silverlight与WCF通信的基本步骤。 在实际开发中,WCF服务可能包含更复杂的操作,例如数据传输、事务处理、安全性和错误处理等。同时,Silverlight应用程序可能需要处理各种UI交互、数据绑定和异步编程。理解...

    silverlight wcf服务登录界面

    在这个场景中,“Silverlight调用WCF服务登录界面”意味着我们将使用Silverlight来设计一个用户登录界面,并通过WCF服务与后端数据库进行通信以验证用户凭据。以下是对这个主题的详细解释。 首先,让我们理解...

    Silverlight启用安全连接与WCF交互

    首先,让我们了解Silverlight与WCF服务的通信基础。WCF是.NET框架中用于构建服务导向应用程序的核心组件,它支持多种传输协议和消息编码。Silverlight通过使用WCF客户端代理类与服务进行通信,这些代理类是由`...

    silverlight调用wcf服务跨域解决方案 demo

    1.文件夹SilverlightFrmWcf : winform程序托管wcf服务Silverlight调用wcf 跨域解决方案 (1)解决方案frmWcfService:winform程序托管wcf服务 (2)Silverlight项目调用wcf解决方案 2.文件夹SilverlightWCFDemo: iis...

    D:\医保\wcf测试\RestService.zip

    标题中的“D:\医保\wcf测试\RestService.zip”是一个文件路径,表明我们要讨论的是一个位于电脑D盘医保文件夹下,名为“wcf测试”的子目录中的压缩包文件,名为“RestService.zip”。这个文件可能包含了与WCF...

    (1):WCF概要-WCF课件

    ### WCF概要知识点 #### 一、WCF简介 - **定义**:Windows Communication Foundation (WCF) 是 Microsoft .NET Framework v3.0 的一部分,它作为一个统一的编程模型,用于构建分布式和可交互操作的应用程序。 - **...

    创建一个简单的WCF程序:WcfServices、WcfServices2

    **创建一个简单的WCF程序:WcfServices与WcfServices2** Windows Communication Foundation(WCF)是.NET Framework中用于构建分布式应用程序的一种强大的服务导向架构。它允许开发人员创建跨平台的、安全的、可靠...

    Silverlight + WCF 数据压缩

    Silverlight与WCF结合使用时,可以通过压缩数据来优化性能,特别是对于大量数据交换的应用场景,如实时数据流、大数据报告等。 在实现 Silverlight 和 WCF 的数据压缩时,通常有以下步骤: 1. **选择压缩库**:在...

    基于WCF服务框架与Silverlight的Web应用研究

    基于WCF服务框架与Silverlight的Web应用研究

    在IIS上部署Silverlight+WCF项目教程

    "在IIS上部署Silverlight+WCF项目教程" 本教程旨在指导用户如何在IIS上部署Silverlight+WCF项目,并解决可能遇到的问题。 首先,需要在IIS上配置好Silverlight+WCF项目的环境。具体来说,需要在IIS中添加以下MIME...

    问题代码 Silverlight调用控制台宿主WCF Demo

    首先,我们需要理解Silverlight与WCF服务之间的交互。在常规的Web应用中,Silverlight作为客户端运行在用户的浏览器中,而WCF服务则作为服务器端运行,提供数据和功能接口。为了使两者能够通信,开发者通常会配置WCF...

    基于wcf的学生管理系统

    《基于WCF的学生管理系统》是一个使用ASP.NET、WCF(Windows Communication Foundation)和C#技术构建的简单学生信息管理系统,数据库采用SQL Server 2005。这个项目对于初次接触WCF技术的学习者来说,是一个很好的...

    Silverlight捕捉WCF异常

    在IT行业中,Silverlight是一种基于.NET Framework的浏览器插件,用于创建丰富的、交互式的Web应用程序。而WCF(Windows Communication Foundation)是微软提供的一种全面的服务层框架,用于构建可互操作的分布式...

    (11):联合安全-WCF课件

    ### 构建WCF面向服务的应用程序:联合安全 #### 一、引言 随着信息技术的发展,企业级应用越来越依赖于服务导向架构(SOA)来提高业务灵活性和服务重用性。Windows通信基础(WCF)作为一种面向服务的通信框架,为企业...

Global site tag (gtag.js) - Google Analytics