CF.Serialization
.NET Compact Framework BinaryFormatter
|
CF.Remoting.Client & CF.Remoting.Server
.NET Compact Framework Remoting |
|
- Source & binary level compatible with the full .NET Framework
- Lightning fast, ultra compact, low memory & CPU requirements
- BinaryFormatter, Serialization Surrogates, Dataset, DataTable serialization and
more...
- Release (build 4.0.9.0105)
|
|
- Source & binary level compatible with the full .NET Framework
- Lightning fast, ultra compact, low memory & CPU requirements
- Well-known, Singleton, TcpChannel with BinaryClientFormatterSink and BinaryServerFormatter
Sink
- ChannelServices, LifetimeServices, Sinks, Proxy generators and more…
- Secure & Compression Channel Sinks
- Release (build 4.0.9.0105)
- Want to see a robot powered by CF.Remoting?
Go ahead!
|
v4.0 is here! CF.ASP.NET for .NETCF is coming soon
How do I get started?
Please
register with us first to be able to access
downloads, then get the product installer (60 day
trial license is built-in) which will give you a chance to try out all of the functions
supplied in our libraries. Explore our examples and see for yourself how easy it
is to use.
For additional details please see this
article.
How do I get and apply the license I have just purchased?
All licenses are available for electronic delivery 24/7. Logon to your account,
navigate to
downloads section and look for the license
marked with "My" prefix to get the license content. The license should be an integral
part of your application and be placed into an assembly that makes calls to BinaryFormatter,
ClientBase<>, TcpClientBase or TcpServerChannel constructors. Include the license
file you receive as an embedded resource. To do so add a link to/or include AsGoodAsItGets.Serialization.lic
and/or AsGoodAsItGets.Remoting.lic file(s) into your compact framework project,
select Build Action in its properties as Embedded Resource to embed the product
license.
What version(s) of the Compact Framework can I target by using your libraries?
V4.x of our products contains binaries to support v2.0 SP1 or SP2 and v3.5 of the
.NET Compact framework, v3.x is for .NET CF SP1 or SP2 only.
Do you conform to IFormatter interface?
Yes we do. Please take a look at provided documentation.
What other interfaces do you conform to?
We conform to pretty much all of the interfaces found in System.Runtime.Serialization
namespace (related to binary serialization). We position our solution as drop in
replacement for full .NET framework formatter on Compact Framework. You will get
implementation of most popular classes, such as BinaryFormatter, FormatterServices,
FormatterConverter, SerializationInfo, ObjectManager, SurrogateSelector and others.
We recommend you to take a look at provided documentation and examples to see for
yourself what is implemented and what is not.
How big your serialization library is?
It is about 125 KB of highly optimized C# code that includes implementation of binary
serialization related classes found in System.Runtime.Serialization, System.Runtime.Serialization.Formatters
and System.Runtime.Serialization.Formatters.Binary namespaces of full .NET framework.
Additionally, we have included implementation of most popular binary surrogates
into it: DataSet, DataTable, Generics Dictionary, Hashtable, Type and DBNull. Needless
to say that they can be used to serialize/deserialize data streams made on full
.NET framework, so you can serialize your dataset on Desktop with standard BinaryFormatter
provided by Microsoft, transfer it to the device via Web Service, file, network
or other media, read it with our formatters and process it, according to your business
logic.
How fast your serialization library is?
We use quite aggressive serialization techniques to make out formatters the fastest
available. Our performance tests indicate that CF.Serialization, BinaryFormatter
is about twice faster in serialization/deserialization of the DataSets in comparison
to standard Xml serialization available on Compact Framework. The following conditions
were applied to get these test results:
- DataSet with two tables, some relations.
- Table1 - ParentTable: 10000 (ten thousand rows), 2 (two) columns (int, string).
- Table2 - ChildTable: 3 (three rows), 2 (two) columns (int, string).
- Microsoft .NET Compact Framework v2.0 sp1 @ Windows Mobile 2003 SE.
- PDA Symbol MC-50 @ 400MHz, Intel PXA270.
|
Component |
Average time to read (sec.) |
Average time to write (sec.) |
File size (KB) |
|
AsGoodAsItGets CF.Serialization, BinaryFormatter |
8 |
4 |
260 |
|
Standard DataSet XML Serialization included in Compact Framework |
15 |
7 |
976 |
Why should I consider your product, are not there free alternatives?
Well, please make sure they provide you with practically 100% source code level
and binary content level compatibility with full .NET framework. With our libraries
you can leverage your current desktop development skill set when creating mobile
applications. There is no need to learn object model offered by a 3rd party, you
might already know it if you have used BinaryFormatter to serve your serialization
needs. You can also reuse the same business logic and data access code that you
use in your desktop applications. This makes an application faster to develop and
lowers your maintenance cost. Double check if your alternative supports serialization
of complex cyclic object graphs, multidimensional arrays in compact binary form,
and serialization surrogates that are compatible with full .NET framework. As a
rule of thumb they do not, we do.
How do I share serializable types between full (Desktop) and Compact Frameworks?
We recommend you to have an intermediate assembly containing all of the types you
are planning to share between your desktop and device applications. The assembly
should be targeting your device (otherwise, you risk to deploy quite a bit of the
full .NET framework assemblies on your device) and references to it (assembly) added
to your desktop application.
You can always use methods of SerializationBinder class or RegisterTypeBindingRedirect
and RegisterAssemblyBindingRedirect methods of FormatterServices class supported
in our libraries to get the keys to the type loading, but shared assembly approach
could make your life a way easier.
The same conception should be used for the types shared between your device applications.
Can your libraries be used in Visual Basic?
Abso-VB-lutely! And we do have customers using our products in Visual Basic solutions.
We have got to admit, the site, info and examples are a bit of C# centric. We are
working hard to improve Visual Basic support; examples in particular, so please
visit us to play with VB and CF.Serialization.
What features are expected to be included in CF.Remoting.Client?
Well-known, TcpChannel with BinaryFormatter sink, ChannelServices and more.
How fast the CF.Remoting is?
It is lightning fast in comparison to Web Services (WS) and/or Windows Communication
Foundation (WCF) client(s) available on Compact Framework. Our tests indicate the
call rate for simple method accepting/returning a string at about 80-100 calls per
second, which is at least 50 times faster than WS calls in the same environment.
On full framework CF.Remoting framework is at about the same call rate versus Microsoft’s
implementation.
Because of the binary serialization we employ to serialize and communicate to your
desktop remoting servers, you will save on bandwidth too. Compare an average 1KB
per Web Service call to about 200 bytes per the same call for remoting.
Can I host remoting services on device?
Absolutely. Please see provided examples called RegEdit and ServerEvents for details
on how to implement remoting servers right on your device. Our libraries contain
the implementation of TcpServerChannel with BinaryFormatter sink to support this
functionality.
What is expected CF.Remoting library size?
The core of CF.Remoting functionality will add up about 215KB onto your device plus
the size of remoting proxy code generated by our wizards (remoting client only).
The number includes CF.Serialization, surrogates and remoting infrastructure support.
Have your questions answered -
support@gotcf.net.