<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Through My Lenses &#187; cf</title>
	<atom:link href="http://www.ericstoike.com/wp/tag/cf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ericstoike.com/wp</link>
	<description>A look into the world as I see it...</description>
	<lastBuildDate>Mon, 16 Jan 2012 19:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<copyright>Copyright &#xA9; Through My Lenses 2011 </copyright>
	<managingEditor>eric@gvfootball.com (Through My Lenses)</managingEditor>
	<webMaster>eric@gvfootball.com (Through My Lenses)</webMaster>
	<image>
		<url>http://www.ericstoike.com/wp/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Through My Lenses</title>
		<link>http://www.ericstoike.com/wp</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>A look into the world as I see it...</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Through My Lenses</itunes:author>
	<itunes:owner>
		<itunes:name>Through My Lenses</itunes:name>
		<itunes:email>eric@gvfootball.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.ericstoike.com/wp/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>#360Flex Notes &#8211; &#8220;Flex, CF, and LCDS Magic&#8221; &#8211; Nick Kwaitkowski</title>
		<link>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/</link>
		<comments>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/#comments</comments>
		<pubDate>Wed, 20 May 2009 21:03:46 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[360flex]]></category>
		<category><![CDATA[cf]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[lcds]]></category>
		<category><![CDATA[magic]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=738</guid>
		<description><![CDATA[Magic you say? 4 lines of code to get data from app server to clients CF &#8211;&#62; Adobe CF 7+ works but 8+ has LCDS baked in. No Railo/BlueDragon/etc. LCDS &#8211;&#62; middleware app designed to move data Flex &#8211;&#62; 2.0.1+ Data &#8211;&#62; any serializable data including DB, LDAP, email, FTP, mapping software, web services, etc. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Magic you say?</strong><br />
4 lines of code to get data from app server to clients</p>
<p>CF &#8211;&gt; Adobe CF 7+ works but 8+ has LCDS baked in. No Railo/BlueDragon/etc.<br />
LCDS &#8211;&gt; middleware app designed to move data<br />
Flex &#8211;&gt; 2.0.1+<br />
Data &#8211;&gt; any serializable data including DB, LDAP, email, FTP, mapping software, web services, etc.</p>
<p>LCDS &#8211; expensive? yes and no.<br />
BlazeDS is light, open source version without data management<br />
LCDS ES &#8211; J2EE app that Adobe sells that includes all the features of BlazeDS, plus DM, NIO messaging, etc.<br />
LCDS ES Single CPU License (was Express Edition) &#8211; free version that works on 1 CPU and will not cluster. Can be used for dev/testing/production environments. based into CF8 download. MSU has done 3-400 clients on this free version.</p>
<p>Flex SDK &#8220;Next&#8221; will be offering client side data management. Why should I care?<br />
great for small data but not much else.<br />
no data sync, data caching, or conflict resolution</p>
<p><strong>Data Management</strong><br />
pass data to LCDS and let it handle passing it to the client. You can control how it passes including pagination and data sync.<br />
LCDS assumes its the only one interacting with the DB.</p>
<p><strong>Data Messaging</strong><br />
allows flex clients to communicate with each other without tying up resources on the app server<br />
over TCP, HTTP polling, etc.</p>
<p><strong>Data Proxying</strong><br />
you can proxy your web sevice or remoting calls through the LCDS to help get around restrictions in firewalls and policies</p>
<p><strong>Example of data management</strong><br />
2 clients. change data on one and see the changes on another. reduce the chances of clients having conflicting data. Revert is built-in with hardly any code.</p>
<p><strong>Coding the Flex Side</strong><br />
create a new collection to store the data<br />
create a value object so the data serializes properly<br />
utilize the DataService MXML tag and call the fill function</p>
<p><strong>Why it works?</strong><br />
data is packaged up into value objects or packages of data<br />
each VO is tracked separately as to who is viewing, editing, etc.<br />
users then subscribe to a set of data<br />
LCDS will &#8216;listen&#8217; to any changes made to the data in the client<br />
if the collection that holds the data is changed, LCDS will take change, change VO in memory, send change to app server and update clients<br />
when an update is sent to other clients, it will check its local copy to make sure it hasn&#8217;t changed. if it has, it will issue &#8220;conflict&#8221; event and allow the client to choose.<br />
on the client, 95% of work is handled by collection class<br />
handles updating LCDS with changes and notifying other visual components of the change<br />
when a dataGrid broadcast the change event, the collection hears, updates its own data and passes on the change.</p>
<p><strong>Blackbox of LCDS</strong><br />
config files in wwwroot<br />
master is services-config.xml<br />
other files include channel info (services), messaging config (messaging), DM (data-management) and flash remoting (remoting)</p>
<p><strong>Channels</strong><br />
Default Channels:<br />
my-cfamf &#8211;&gt; does AMF endpoints. binary over HTTP. firewalls might break it but normally a good way to go.<br />
cf-polling-amf &#8211;&gt; works well with nasty firewall. every X seconds ask server if there is new data<br />
air-rtmp (Nick will provide downloads) &#8211;&gt; direct connection through tcp socket which stays open. offloads some i/o from your application server. port 2050<br />
cf-rtmp &#8211;&gt; port 2048<br />
port range recommendation: typically stay around 2048. that is registered by Adobe for RTMP. above 1024 because below that is well defined ports. it will all depend on the client firewalls.</p>
<p><strong>Destinations</strong><br />
a destination needs an endpoint which is used to encapsulate your data based on server.<br />
multiple channels are allowed as fall backs. if the first is not available, the next in the list is used after a &#8220;reasonable amount of time&#8221;. limit of 16 channels.</p>
<p><strong>Properties</strong><br />
component: cfc that does the data handling<br />
scope: how long the data lives<br />
access: remote (default) corresponds to the access of the cfc<br />
property-case: change the case of functions/variables<br />
metadata: identity &#8211; normally ID of the table ie PARKNAME, query-row-type &#8211; path to value object</p>
<p>Documentation in default file contains all the options/values.</p>
<p><strong>Lots of channel options</strong><br />
AMF typically run over HTTP. Tend to be slower or designed for one time polls and can be combined with HTTPS.<br />
RTMP typically run over 2048. real-time, quick, easy but firewalls have been known to block on occasion.</p>
<p>Don&#8217;t worry about selecting a single channel. Normally RTMP and then polling is a good option.<br />
Each destination can define channels which it wants to use<br />
Each destination is just a name but must be unique to the server.</p>
<p><strong>CF Fun!</strong><br />
final part of this puzzle is the CF side. could be any language by why? <img src='http://www.ericstoike.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
traditional CRUD<br />
fill() &#8211; think of this as the get all<br />
get() &#8211; this is to get a single item<br />
sync() this performs create, delete, and update<br />
count() &#8211; this needs to return the number of records for pagination, finding updates, etc</p>
<p><strong>Unsolicited Updates</strong><br />
one of the coolest features is the fact that you can push unsolicited updates to clients<br />
examples: non-flex client update data, customer buys something from your store, or new email comes in</p>
<p><strong>Creating unsolicited updates</strong><br />
3 easy steps:<br />
create event gateway of type &#8220;DateManagement&#8221;<br />
create some sort of VO<br />
pass this VO to the event gateway &#8211; the update will be pushed to your clients.</p>
<p>With FB/RDS, there is a wizard for creating the value object/cfc. Flex 4 will include more wizards.</p>
<p><strong>Examples of uses:</strong><br />
CRUD for DB<br />
Directory watcher<br />
collaborative doc management<br />
email client<br />
collaborative GIS app</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#360Flex Notes &#8211; &#8220;Building real time applications with Blaze DS/LCDS&#8221; &#8211; Dan Blackman</title>
		<link>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/</link>
		<comments>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/#comments</comments>
		<pubDate>Wed, 20 May 2009 19:57:13 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[360flex]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[cf]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[lcds]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=733</guid>
		<description><![CDATA[The why?!? CF request/response applications Flex RIA persisted data is not refreshed automatically stateful approach to managing data &#8211; no more sessions refreshed through manual client interactions or AS Flex Real-time Apps persisted data is refreshed via interactions w/ server stateful approach w/ server side sync refreshed through polling, long polling, or RTMP data management [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The why?!?</strong><br />
CF request/response applications<br />
<strong>Flex RIA</strong><br />
persisted data is not refreshed automatically<br />
stateful approach to managing data &#8211; no more sessions<br />
refreshed through manual client interactions or AS<br />
<strong>Flex Real-time Apps</strong><br />
persisted data is refreshed via interactions w/ server<br />
stateful approach w/ server side sync<br />
refreshed through polling, long polling, or RTMP<br />
data management service &#8211; life cycle service &#8211; provides data sync between clients</p>
<p><strong>Intro to LCDS</strong><br />
consists of: flex messaging service, flex data management, flex proxy service, and remote object service</p>
<p><strong>Push vs Pull</strong><br />
pull is client asks server for data<br />
push is server actually pushing data to client</p>
<p><strong>Types<br />
Simple AMF</strong> &#8211; stateful approach<br />
<strong>RTMP</strong> &#8211; real time messaging protocol<br />
maintains persistent connection<br />
allows real time<br />
uses java-nio facilities<br />
<strong>Polling</strong><br />
flex client sends requests for messages periodically</p>
<p><strong>Configuring channel/destination</strong><br />
-CFGateway: messages sent between cf8/flex<br />
-JMS Adapter: allows to use both JMS/Flex clients to communicate<br />
-AS Adapter: flex default allows only flex clients to participate in communication</p>
<p><strong>Channels</strong><br />
my-cf-amf<br />
cf-polling-amf<br />
cf-long-polling-amf<br />
cf-streaming-amf<br />
cf-rtmp</p>
<p>Examples using LCDS (chat) and then CFGateway (Facebook notifications)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.199 seconds -->

