目前,Web瘦客户端的表现形式在互联网应用中占有举足轻重的地位,但是随着机器硬件的快速发展以及用户对网络应用的交互式体验的感受不断增加,现在的Web展现技术已经令人们感到难于满足当前的需要,主要体现在:页面中的数据显示区域难以充分捕获用户的操作,也不具备丰富的逻辑功能来响应和处理这些操作,因而用户不易通过有效的交互来动态地查看数据,只能利用HTTP一次一刷新的方式,使得用户不得不等待页面的响应。而AJAX采用异步传输数据的方式,可以让用户在浏览页面时不用刷新整个页面,但是AJAX开发难度高,需要不同的语言背景,而且对浏览器的支持也不一样,很难达到统一兼容,无形中增加了开发的复杂性和测试的难度。
同时,当前的软件复用模式只是代码,对象以及组件复用,程序代码或设计语言之间耦合度很高,不能很好地实现跨平台、跨语言的复用,开发周期长,效率低下。
为解决上述问题,本文在微软的Visual Studio 2008开发工具下讨论和设计Silverlight与WCF应用。前期的开发环境必须要安装.NET FrameworkSPI补丁。
1.WCF与Silverlight介绍
1.1 WCF服务框架简介
WCF是微软基于SOA推出的.NET平台下的框架产品。SOA全称为Service-Oriented Architecture,即面向服务的体系架构,是基于“软件变服务”的思想。它内部的所有功能属性等都是通过描述语言加以定义,同时将这些功能属性以接口的形式暴露给要调用的程序。这样可以实现跨操作平台,跨语言,并且与硬件无关,是一种粗粒度的体现。它将技术层面的复用提高到业务逻辑的复用,按需求划分服务,来满足不同客户的需求。
在WCF下开发SOA变得相当方便,它是创建和运行分布式系统的新型面向服务的编程模型,整合了例如:NET Remoting、ASMX、WSE和MSMQ等分布式技术。可以支持的协议包括HTTP、TCP、跨进程以及自定义、安全模式、自定义等多种标准与模式。
WCF通过暴露终结点(EndPoint)的方式,将要实现的业务数据传给调用程序。Endpoint由地址(Address)、绑定(Binding)和契约(Contract)组成。地址指定服务位于何处,绑定说明服务所能理解的通信协议,契约说明服务提供的操作及数据交换格式。WCF框架示意图如图1所示。
图1 WCF基础框架
1.2 SilverHght富客户端简介
Silverlight是一个跨浏览器、跨客户平台的技术,能够开发出具有专业图形、音频和视频的Web应用程序,增强了用户体验。Silverlight相当于一个小型的.NET Framework,可以充分调用客户端机器的处理运算能力,使得Web页面展示如同C/S端程序一般,并且实现了无刷新,带来了更多的用户视觉与操作体验。
2.应用架构设计
根据具体情况可以选择设计不同的架构方案,在经典的三层架构(数据访问层,业务逻辑层,界面展示层)中加入一层WCF服务层。使服务层介于业务逻辑层与界面展示层之间。基于软件即服务的思想,通过WCF服务层接口向界面层传输数据。如图2所示,其中ABC分别代表地址、绑定和协议,用以公开数据。
图2 WCF+Silvedight整合应用架构图
在此,数据库不受架构限制可以适用SQLServer 2005、Oracle、Access等数据库,利用ORM映射或是手动编写实体类,构建实体模型。然后根据业务需要编写业务逻辑层的代码。并通过WCF传递业务层数据。
此架构优势主要体现在:
(1)基于面向服务的思想,采用WCF服务架构降低系统组件间的耦合度,复用度高。
(2)B/S较之C/S架构容易开发部署,易于维护,降低了开发成本和维护成本。
(3)Silverlight技术比传统的web应用更能调用客户端处理能力,界面展现能力强,具有C/S端的优势,无刷新易于交互等。
3.代码实现
本文以一简单的学生管理为例,简要介绍其代码实现。利用微软的ADO.NET Entity Framework创建实体模型,这样生成的实体模型(EFModel,设计如图3所示)也就同时自动实现了数据访问层,减少了代码量。现在把主要精力放在业务逻辑层和WCF服务层的实现上。首先,建立业务逻辑层BusinessLayer,并在其中新建StudentManager类用于实体模型的增、删、改、查。业务逻辑层已经构建完毕,再新建一个WCF服务层项目,命名为WCFContraet,定义具有ServiceContract属性的接口IStudentService,以及具有OperationContract属性的Add、Delete等数据操作方法。接口定义完毕,下面需要具体实现接口的类,接着创建WCFService层,部分代码如下:
public cla88 StudentService:WCFContract.IStudentService
{
public void Add(Student obj)
{
using(StudentManager sm=new StudentManager())
}
sm.Add(obj);
{
}...
public List<Student>getAll()
{
using(StudentManager sm=flew Student_Manager())
{
return sm.getAll();
}
}
}
图3 WCF+Silvedight架构实现代码设计
到此WCF服务类基本创建完毕,下面就是WCF的配置部分和启动代码。因为本文是用Silverlight作为Web展现层,所以WCF的通讯协议用basicHttp—Binding。App.config配置如下:
<endpoint address="binding =”basicHttpBinding"contract
="WCFContraet.IStudentService">
</endpoint>
<host>
<baseAddresses>
<add baseAddress=”http://*/WCFContract/StudentService/"/>
</baseAddresses>
</host>
WCF的启动可以选择Form形式的启动,也可以是控制台形式的,主要代码如下:
ServiceHost host;
host=new ServieeHost(typed(WCFservice.StudentService));
host.Open();
创建Silverlight项目(SLWeb),并为它添加WCF的服务应用,服务自动生成了与之前配置的EndPoint相同的Client代理类,在界面展示层直接调用就可以了。
4.结束语
本文通过WCF与Silverlight相结合的思路,使得Web应用可以充分利用客户端机器资源,实现界面无刷新,分布式处理,拥有丰富的互操作能力以及复用度高等特点,显著提高了程序开发效率和用户的体验性,因而在当前的互联网应用中具有很好的实用价值和研究意义。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/