又看到一高人的教程http://www.cnblogs.com/sban/ 特转载以做备注
基于flex4技术从零开发flex博客系统: 6 Using FluorineFx
http://www.cnblogs.com/sban/archive/2009/05/01/1447341.html
第六课:Using FluorineFx
Google app engine虽好,既支持python,又支持java,将来可能还会支持.net,php等语言。但是我不敢把宝全部押在GAE上,如果哪一天 appspot.com在国内被屏蔽了,我等开发也就歇菜了。为此,我计划让我的flexblog支持.net与php。今天就看一下如何用.net搭建一个remoting server。
一,.Net+FluorineFx开发环境搭建
我在GAE中用了WebORB for java做了remoting框架, 但是对于.net,我并不打算用WebORB for .net搭建remoting server。与WebORB for .net相比,FluofineFx的普及程度及名气更大一些。我倾向于使用后者。
1,下载Microsoft .NET Framework,安装
2,下载Visual Web Developer 2008 Express Edition,安装
3,下载FluofineFx,安装
4,下载SQL Server 2005 Express Edition及Microsoft SQL Server Management Studio Express,安装
以上4步是在本地布署基于.Net+FluorineFx的flex server端开发环境,安装步骤较为简单,不再一一叙述。当然,如果你已经有了Visual Studio,便不用再安装vwd express版本;如果已经有SQL Server标准版或企业版,也不用安装SQL Server 2005 Expres。数据库版本没有特别要求,sql2000应该也是可以的。我选用express版本,是因为它们全是免费的。
打开vwd,创建一个FluorineFx Asp.net web site,如下图所示:
配置iis,使http://localhost/指向gapp_flexblog项目的war目录;使http://localhost/dotnet/指向适才创建的web site根目录。打开浏览器,访问http://localhost/dotnet/Gateway.aspx, 验证配置是否成功,糟糕,爆出了如下error:
Parser Error Message: Could not load file or assembly ‘FluorineFx’ or one of its dependencies. 系统找不到指定的文件。 (D:/flex4-lessons/dotnet_web/web.config line 180)
Source Error:
Line 178:
Line 179:
Line 180:
这是由于网站项目未能正确添加FluorineFx.dll引用造成的。切到vwd,右键点击项目,选择Add Reference:
选择Fluorinefx.dll(该文件可在FluorineFx的安装目录下找到),添加。再次访问http://localhost/dotnet/Gateway.aspx, 页面一片空白,这便是正常了。至此,.Net+FluorineFx开发环境配置成功。
修改WEB-INF/flex/remoting-config.xml中destination为GenericDestination。
二,数据库与数据表的创建
打开SQL Server Management Studio,添加新数据库,名为flexblog。添加一个新表,名为Greeting,表结构如下:
创建Greeting的sql语句为:
USE [flexblog]
GO
/****** Object: Table [dbo].[Greeting] Script Date: 05/01/2009 00:21:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Greeting](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[user] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[greetingContent] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NOT NULL,
[date] [datetime] NOT NULL CONSTRAINT [DF_Greeting_date] DEFAULT (getdate()),
CONSTRAINT [PK_Greeting] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
该数据库并非打算只给.net用,为避免重复工作,php计划也使用该数据库。
三,数据模型与.Net Remoting接口
我采用EF(Asp.Net Entity Framework)做为数据模型框架,在App_Code下添加Asp.net Entity Data Model,命名为Model.edmx,命名空间采用sban.flexblog。按照向导一步一步创建,中间有一步让选择是否把connString 添加到web.config中,选择添加。这样web.config便有了如下配置:
EF整体来说,对CRUD的执行效率比ADO.Net, 比Linq to SQL要高很多。
在目录App_Code/sban/flexblog下,添加HelloWorld.cs,内容如下:
using System;
using System.Collections.Generic;
using System.Text;
using FluorineFx;
using System.Data.Linq;
using System.Linq;
namespace sban.flexblog
{
[RemotingService("flexblog remoting service")]
public class HelloWorld
{
private flexblogEntities entities = new flexblogEntities();
public bool greet2(string user, string content)
{
entities.AddToGreeting(new Greeting() { user = user, greetingContent = content, date = DateTime.Now});
entities.SaveChanges();
return true;
}
public bool deleteById(int id)
{
Greeting greeting = getGreetingById(id);
if (null != greeting)
{
entities.DeleteObject(greeting);
entities.SaveChanges();
return true;
}
return false;
}
public bool editGreeting(long id, string content)
{
Greeting greeting = getGreetingById(id);
if (null != greeting)
{
greeting.greetingContent = content;
entities.SaveChanges();
return true;
}
return false;
}
public Greeting getGreetingById(long id)
{
return (from g in entities.Greeting
where g.id == id
select g).AsEnumerable
}
public bool deleteAllGreetings()
{
var query = from g in entities.Greeting select g;
foreach (var g in query)
{
entities.DeleteObject(g);
}
entities.SaveChanges();
return true;
}
public IList
{
return (from g in entities.Greeting select g).ToList
}
}
}
该类用.net重写了Greeting应用所需的所有接口,其方法名称,返回类型,命名空间等与先前第四课中java代码完全相同。把站点 debug起来,地址为http://localhost:2037/dotnet_web/Gateway.aspx。修改 gapp_flexblog_client中Greeting.mxml文件,把RemotingObject的endpoint改为 http://localhost:2037/dotnet_web/Gateway.aspx。这个地址在读者的机器上有可能会不同。之所以用 debug模式,在于方便调试。修改过的Index.mxml的部分代码如下:
private function configRemoting() : void
{
_remotingObj.source = "sban.flexblog.HelloWorld";
_remotingObj.endpoint = "http://localhost:2037/dotnet_web/Gateway.aspx";
}
仅有endpoing不同而已。
把gapp_flexblog_client项目的输出目录定位在bin-debug目录下,并且在iis中设置http://localhost/指向该目录。运行基于.net的Greeting应用,效果与java版本相同:
本课最终源码:
1,gapp_flexblog_client项目源码与第5课同
2,FluorineFx Web Site源码:dotnet_web.zip
3,sql server数据库源码:flexblog-6.sql
sban 2009/4/29 于北京
本文为sban原创,作者保留所有权利,如需转载请保留作者及原文链接。
基于flex4技术从零开发flex博客系统
《基于flex4技术从零开发flex博客系统》
作者:sban
1,关于作者
作者是一位教育工作者,热爱flex技术,写了这个系列,晒出来与园友们交流。欢迎提出任何建议。作者在维护一个个人博客:http://blog.sban.com.cn/
2,策划
以一个初学者的视角,以一个探知者的口吻,讲叙如何一步一步,从零开始开发一个flex博客系统。
一点一点启迪读者发现问题,一步一步引导读者解决问题。
所涉及的技术包括flex4技术,ActionScript设计模式,服务端技术(java,.net,php等)。
内容以两条主线组织,一为篇章节,一为课。课穿插于篇章节之中。
3,如何阅读这个系列
这个系列文章的结构我是按两条主线组织的,一是篇章节,一是课。篇章节用于分类,是规则的,课则是按照难易程序依次进行的,课会穿插于各篇章节之间。初学者,可以按照课的顺序,依次阅读。每一课的开篇,有关于这一课的主要内容的说明,如果已熟悉,可以略过读下一课。
第一章 Greeting应用
本章通过一步一步建立一个Greeting应用,让用户对flex4,对Remoting,对GAE for java,对WebORB有一个初步的认知,激发读者学习的乐趣。
1.1. 第一课:开发环境配置与hello world 2009-4-13
Flex4与GAE for java快速开发环境配置,及静态的hello world应用。
1.2. 第二课:与servlet服务端交互 2009-4-19
与server端进行数据交互,实现动态的hello world应用。
1.3. 第三课:使用Remoting服务 2009-4-22
使用WebORB作为Remoting Server,用Remoting实现动态的hello world。
1.4. 第四课:数据存储 2009-4-26
升级简要的hello world,建立数据实体Greeting,并实现存储。
1.5. 第五课:数据存储之管理Greeting 2009-4-26
实现对Greeting的CURD功能。
第二章 其它服务端
2.1. 第六课:Using FluorineFx 2009-4-29
只需两个文件便可搭建一个Remoting Server,并支持Greeting客户端。
第三章 GAE for java
3.1. 第七课:Using JPA 2009-5-1
App engine java在数据存储方面不仅支持JDO,还支持JPA。
3.2. 第八课:Using JSP and JSTL 2009-5-12
App Engine java提供对JSP,JSTL的几乎完全支持。本课主要介绍如何在GAE for java中使用jsp及jstl。
第四章 Flex4 Introduction
本章介绍Flex4的新特性,包括FXG、Text Layout等,以及Flex4的整体架构。
第五章 Flex Blog开发示例
本章从零开发,一步一步引导读者如何用flex4开发一个博客系统。
第六章 ActionScript3设计模式
本章介绍在ActionScript3中常用的设计模式。以及常用的开发框架解析,如Cairngorm、PureMVC、Mate、Spring Actionscript等。
第七章 系统架构
本章介绍基于Adobe RIA平台,对于一个特定的项目,如何进行项目分析,采用何种技术,如何进行系统构架,团队如何协作开发。
第八章 重构
继续Flex Blog系统开发,实例讲解如何进行系统重构。
第九章 测试、规范与性能
本章介绍如何对Flex项目进行测试,如何优化性能。如何查找问题,如何制定规范避免问题出现。
转载请保留出处: DDV=敌敌畏 www.dplayer.net