Apache Chemistry DotCMIS 0.2
============================

Apache Chemistry DotCMIS is a Content Management Interoperability Services (CMIS)
client library for the .NET framework 3.5 or higher.

See http://chemistry.apache.org/dotnet/dotcmis.html for more information.

See http://chemistry.apache.org/dotnet/getting-started-with-dotcmis.html for code samples
and DotCMISDoc.chm for the API documentation.


This is the second release of DotCMIS. All CMIS operations and both bindings have 
been implemented. The API is complete and is not supposed to change in following releases. 
The most frequently used operations have been successfully tested against a small number 
of repositories from different vendors.

However, the current test coverage is not sufficient to identify all kinds of problems and
compatibility issues. The code base will be tested and improved in the following releases. 
If you find a problem, please let us know: https://issues.apache.org/jira/browse/CMIS


Change log 
----------

DotCMIS 0.2:

- Web Services compatibility has been improved. 
- AtomPub content encoding and link cache have been improved.
- Content-Disposition header has been added to the AtomPub setContentStream operation.
- Compression option has been added to the AtomPub binding.
- Timeout settings have been added to both bindings.
- Another GetObject() convenience method has been added to ISession.
- Several bug fixes.


Known stumbling blocks
----------------------

- The Web Services binding only works with HTTPS. 
  The .NET framework does not allow calls with UsernameTokens over plain HTTP.

- Not all CMIS Web Services endpoints are compatible with the .NET framework for 
  a number of reasons.
  
- Content is buffered in main memory when the Web Services binding is used. 
  That can cause problems with huge documents. 
  The maxium document size can be controlled with the SessionParameter.MessageSize 
  parameter. The default is 4 MB. The absolute maximum is 2 GB.

=> Use the AtomPub binding whenever possible! 
   It causes less trouble, is faster, streams and can deal with documents of any size.
  
  
Strong-Name signing
-------------------

The DLL included in this release is signed with a public/private key pair that is also 
included in this package. This allows you to deploy it to the global assembly cache (GAC) 
and to make changes to the DotCMIS source code without recompiling your application.
However, since the private key is publicly available, this strong name cannot be trusted.
If a trust relationship between your application and the DotCMIS DLL is important to you, 
you have to rebuild the DLL from the source code and sign it yourself.
