`
izuoyan
  • 浏览: 9219405 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flash AS2 .NET数据访问模型

阅读更多

本文属张友邦(SpanZhang)原创,转载请注明出处。

Flash AS2在使用.NET进行数据访问的时候很方便,如果进行一定程度的包装,可以使得这个模型更加清晰和易于使用。下面是我在开发一个WEB RIA应用的时候开发出来的一套访问模型。

1、Flash端:
1.1、EventObject.as
import mx.events.EventDispatcher;
import mx.remoting.*;
import mx.rpc.*;

class span.EventObject {
public var addEventListener:Function;
public var removeEventListener:Function;
private var dispatchEvent:Function;

public function EventObject() {
EventDispatcher.initialize(EventObject.prototype);
}

private function dispatchDataEvent(strEventName:String, eventReturned:Object) {
var eventObj:Object = {type:strEventName, target:this, eventName:strEventName};

if (eventReturned.result != null) {
eventObj.eventParam= eventReturned.result;
eventObj.success= true;
}

if (eventReturned.fault != null) {
eventObj.eventParam= eventReturned.fault.faultstring;
eventObj.success= false;
}

dispatchEvent(eventObj);
}

private function dispatchSimpleEvent(strEventName:String, objEventParam:Object) {
var eventObj:Object = {type:strEventName, target:this, eventParam:objEventParam};
dispatchEvent(eventObj);
}
}

这个类是对Flash事件机制的进一步封装,以便简化实际使用中的调用程序。

1.2、DataProxy.as
import mx.events.EventDispatcher;
import mx.remoting.*;
import mx.rpc.*;

class span.DataProxy extends span.EventObject {
private var dataService:Service;
public function DataProxy() {
super();

var urlArray:Array = _root._url.split("/");
var strUrl:String = urlArray[2].toLowerCase();
dataService = new Service("http://" + strUrl + "/data/gateway.aspx", null, "data");
}

private function dummyFunction():Void{

}

private function invokeData(pendingCall:PendingCall, callbackFunction:String) {
if (callbackFunction == null || callbackFunction.length <= 0)
pendingCall.responder = new RelayResponder(this, "dummyFunction", "dummyFunction");
else
pendingCall.responder = new RelayResponder(this, callbackFunction, callbackFunction);
}
}

这个类是一个基本的数据代理接口,它是配置.NET的gateway地址的唯一地方。

1.3、HeartBeat.as
/*

Author: Span
Time: 11/16, 2006
Description: This component is designed as singleton for global use.

*/

import span.DataProxy;

class pub.HeartBeat extends span.DataProxy
{
privatestatic var heartBeat:HeartBeat;
private var timerId:Number;
private var isChecking:Boolean;

public static function instance():HeartBeat
{
if (heartBeat == null) heartBeat = new HeartBeat;
return heartBeat;
}

public function stopBeat():Void{
if (timerId > 0) {
clearInterval(timerId);
timerId = -1;

}

}

private function HeartBeat()
{
super();

isChecking = false;
doHeartBeat();
timerId = setInterval(this, "doHeartBeat", 10 * 1000);
}

private function doHeartBeat() {
if (isChecking) return;
isChecking = true;

invokeData(dataService.pub_heartBeat(), "doHeartBeatReturned");
}

private function doHeartBeatReturned(eventReturned:Object) {
if (eventReturned == null || eventReturned.result == undefined) {
dispatchSimpleEvent("heartBeatFailed");
}
else {
if (eventReturned.result == "1")
dispatchSimpleEvent("heartBeatSuccess");
else
dispatchSimpleEvent("heartBeatFailed");
}

isChecking = false;
}
}

这个类是一个应用类,它是数据访问的实现类。

2、.NET服务器端(C#)
2.1、Public.cs
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.UI.WebControls;
using System.Data.Common;
using System.Text;
using System.Web.SessionState;

namespace System
{
public enum NCENUM_LANG_TYPE //语言类型
{
zhcn= 0,
zhtw= 1,
en= 2
}

public enum NCENUM_FLASH_RESULT_TYPE
{
STRING= 0,
STRING_ARRAY= 1,
RECORDSET= 2,
RECORDSET_ARRAY= 3
}

public class Public
{
public static void ExecFlashSql(ref FlashGateway.Flash flash, string strSql, NCENUM_FLASH_RESULT_TYPE retType)
{
if (flash == null) flash = new FlashGateway.Flash();

flash.Result = null;

DataSet ds = ncDB.ExecDataSet(strSql);
if (ds == null || ds.Tables.Count <= 0) return;

switch (retType)
{
case NCENUM_FLASH_RESULT_TYPE.STRING:
{
if (ds.Tables[0].Rows.Count > 0)
flash.Result = ds.Tables[0].Rows[0][0].ToString();
}
break;

case NCENUM_FLASH_RESULT_TYPE.STRING_ARRAY:
{
DataRow dr = ds.Tables[0].Rows[0];
int colLen = ds.Tables[0].Columns.Count;
string[] result = new string[colLen];
for (int i = 0; i < colLen; ++i)
result[i] = dr[i].ToString();

flash.Result = result;
}
break;

case NCENUM_FLASH_RESULT_TYPE.RECORDSET:
{
if (ds.Tables[0].Rows.Count > 0)
flash.Result = ds.Tables[0];
}
break;

case NCENUM_FLASH_RESULT_TYPE.RECORDSET_ARRAY:
{
int tabLen = ds.Tables.Count;
DataTable[] result = new DataTable[tabLen];
for (int i = 0; i < tabLen; ++i)
result[i] = ds.Tables[i];

flash.Result = result;
}
break;
}
}
}
}

这个文件扩展了System命名空间,增加了Flash数据访问的相应支持。

2.2、HeartBeat.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Project
{
/// <summary>
/// Summary description for HeartBeat.
/// </summary>
public class HeartBeat : System.Web.UI.Page
{
protected FlashGateway.Flash flash = new FlashGateway.Flash();

private void Page_Load(object sender, System.EventArgs e)
{
Public.ExecFlashSql
(
ref flash,
"exec dbo.p_sm_heartBeat '" + Session.SessionID + "'",
NCENUM_FLASH_RESULT_TYPE.STRING
);
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}

分享到:
评论

相关推荐

    flash 与 asp交互简单实例AS3-ASP.NET

    在IT领域,Flash曾是构建...开发者需要理解AS3中的网络通信机制以及ASP.NET的Web开发模型,以便创建高效且可靠的交互系统。这个简单的实例只是冰山一角,实际开发中可能涉及到错误处理、数据安全、性能优化等更多方面。

    asp.net 中使用flash实现在线拍照

    在ASP.NET中集成Flash技术实现在线拍照功能,是一种常见的网页交互设计,特别是在需要用户上传个人照片或进行实时图像处理的应用中。以下将详细介绍这个过程涉及的关键知识点。 首先,我们需要了解ASP.NET的基础。...

    flash AS3 中文帮助文档

    AS3相较于AS2,进行了重大改进,包括类型系统强化、事件驱动模型、面向对象编程的支持等。文档中会详细介绍AS3的类库和API,包括DisplayObject容器体系,如MovieClip、Sprite,它们是构建图形和动画的基础;Event类...

    .Net flash control api

    在.NET环境中,这类API通常基于AS3(ActionScript 3)的编程模型,因为AS3是Flash Player支持的主要编程语言。开发者可以通过.NET的封装库来调用这些功能,无需直接编写AS3代码。例如,可能会有一个`FlashControl`类...

    asp.net+flash实现视频拍照

    在实际应用中,可能会使用AS3(ActionScript 3.0)版本的Flash,因为它提供了更好的性能和更现代的编程模型。同时,ASP.NET可能使用MVC(Model-View-Controller)架构,以提高代码的可维护性和可扩展性。 总结一下...

    FLASH AS3 loading 源文件 源代码

    在Flash AS3编程中,加载(Loading)是关键功能之一,允许开发者动态地在应用程序运行时引入外部资源,如图像、SWF文件、XML或文本数据。本资源包含了一个名为"loading_as3"的示例项目,其中包括了loading_as3.fla...

    flash as3中文API 帮助文档

    2. **核心类库**:AS3的核心类库包括` flash.display`、` flash.events`、` flash.geom`、` flash.text`等。`display`包包含了舞台上的图形元素,如`Sprite`和`MovieClip`;`events`包处理事件监听和派发;`geom`包...

    Flashas3播放器

    在Flash AS3播放器中,我们通常使用`flash.net.NetStream`类来处理FLV文件的加载和播放。 4. **SWF文件** `videoplayer.swf` 是编译后的Flash Player应用程序,它是所有源代码和资源的最终形态,可以在Web浏览器中...

    Asp.net使用flash记性网页在线拍照

    在ASP.NET中集成Flash进行网页在线拍照是一种常见的技术,它允许用户无需离开浏览器就能拍摄或上传照片。这个技术主要依赖于Adobe Flash Player插件,它提供了丰富的多媒体交互能力。以下是对这一技术的详细解释。 ...

    .net mvc中使用flash的图片上传技术.zip

    2. **设置跨域策略**:由于Flash的同源策略限制,你需要在服务器端配置CORS(Cross-Origin Resource Sharing)策略,允许Flash组件从不同的源发起请求。在ASP.NET MVC中,可以通过添加过滤器或自定义HTTP响应头来...

    Flex与.Net互操作

    2. 在.NET端创建Web服务或WCF服务,定义需要暴露的接口和数据类型,确保与Flex端的数据模型相匹配。 3. 在Flex端创建对应的代理服务,调用.NET服务,并处理返回的数据。 4. 为了处理.NET的自定义类型,可能需要在...

    Flash(AS3)和C#之间的相互函数调用(例子)

    本示例探讨了如何在Adobe Flash ActionScript 3 (AS3)与Microsoft C#之间实现函数的相互调用,这通常涉及到两种技术的集成,如Unity与Flash或独立Flash应用与桌面应用的交互。以下是关于这个主题的详细解释。 1. **...

    Plupload 上传.net MVC 上传示例

    .NET MVC是一个轻量级、可测试的Web应用程序框架,它采用模型-视图-控制器(MVC)设计模式,使开发人员能够更灵活地控制应用程序的结构和行为。 3. **集成步骤** - **安装Plupload**:首先,你需要从官方站点或...

    c#与flash通信

    在C#环境下,我们可以使用JavaScript桥接来实现与Flash的通信,因为Flash Player可以通过JavaScript与网页的DOM(文档对象模型)进行交互。但如果是桌面应用程序,如使用C#的Windows Forms或WPF,那么通信方式会有所...

    ActionScript3_jb51.net.rar

    4. **事件驱动模型**:AS3的事件模型是基于观察者模式的,使得用户交互和异步处理变得更加简单。 5. **更强大的API**:AS3提供了更强大的Stage3D图形渲染API,可以实现高性能的2D和3D图形处理。此外,还包含XML、...

    网页flash

    ASP.NET可以与Flash集成,通过服务器控件和HTTP请求/响应模型,将动态数据传递给Flash,例如通过XML或AMF(Action Message Format)进行数据交换。 虽然网页Flash在过去的辉煌时期扮演了重要角色,但随着HTML5的...

    VB与flash的双向交互

    在探讨“VB与Flash的双向交互”这一主题时,我们首先需要理解VB(Visual Basic)与Flash两种技术的基本概念以及它们如何实现数据和控制的相互传递。VB是一种由微软开发的事件驱动的可视化编程环境,它允许程序员通过...

    as3 视频播放器 纯as3

    3. **Video类和NetStream类**:在AS3中,`flash.media.Video`类用于显示视频内容,而`flash.net.NetStream`类负责处理视频数据的传输和解码。NetStream对象可以连接到服务器,加载视频文件,并控制播放。 4. **FLV...

    flex2-as3-cookbook

    ActionScript 3作为Flash Player和Adobe AIR平台的核心编程语言,相比于之前的版本AS2,具有更强的类型系统、更好的性能以及对面向对象编程的全面支持。AS3的这些提升使得Flex2成为了企业级应用开发的首选工具。 ...

    关于as3.0的帮助资料

    例如,`flash.net.URLLoader`用于加载网络资源,`flash.media.Sound`和`flash.media.Video`类则用于处理音频和视频。 综上所述,AS3.0中文帮助资料将涵盖这些核心概念和技术,帮助开发者深入理解和掌握这一强大的...

Global site tag (gtag.js) - Google Analytics