You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
7.8 KiB

15 years ago
  1. C# Driver Version 0.9 Release Notes
  2. Summary:
  3. Simplified and improved serialization
  4. (see IBsonSerializable and IBsonSerializer)
  5. Serialization support for more .NET classes (including Dictionary)
  6. Many bug fixes and usability enhancements
  7. Some classes now immutable (MongoServer, MongoDatabase, etc...)
  8. Other classes become immutable after Freeze is called
  9. Redesigned low level I/O classes (to simplify serialization)
  10. Improved compile time type safety
  11. BSON Library Changes:
  12. ArraySerializer
  13. is now a generic serializer
  14. serializers for 1-3 dimensional arrays
  15. BsonBuffer
  16. Read/WriteObjectId changed to match new ObjectId internal representation
  17. added Skip and SkipCString methods
  18. BsonClassMap
  19. added Freeze method (immutable once frozen)
  20. added SetIdMember method
  21. added UnmapField, UnmapMember and UnmapProperty methods
  22. BsonClassMapSerializer
  23. Support new GetDocumentId/SetDocumentId methods
  24. BsonDefaultSerializer
  25. GetSerializer method
  26. return serializers for 1-3 dimensional arrays
  27. return serializer for enums
  28. if invalid serialization options were provided use default options
  29. BsonDocument
  30. renamed Count to ElementCount
  31. BsonDocumentWrapper
  32. wrap nominalType also
  33. added CreateMultiple method
  34. BsonElement
  35. moved serialization logic to BsonValue
  36. BsonMemberMap
  37. added SetRepresentation method
  38. better error messages for missing get/set accessors
  39. BsonObjectId
  40. changed to match new ObjectId internal representation
  41. BsonReader (and BsonBinaryReader)
  42. added CurrentBsonType property
  43. removed HasElement and PeekBsonType (were causing duplicate reads)
  44. revised bookmark API (GetBookmark/ReturnToBookmark)
  45. element name and value can now be read separately
  46. (needed to unify DeserializeDocument/DeserializeElement)
  47. ReadObjectId changed to match new ObjectId internal representation
  48. added SkipName and SkipValue methods
  49. added ReadBsonType and ReadName methods
  50. added new array methods (ReadStartArray, ReadEndArray)
  51. separated Bookmark class from Context class
  52. BsonRegularExpression
  53. detects options in pattern (e.g. "/Hello/i")
  54. BsonSerializer
  55. Same changes as IBsonSerializer
  56. Added RegisterIdConvention (moved from BsonDefaultSerializer)
  57. BsonValue
  58. added serialization logic (moved from BsonElement)
  59. BsonWriter (and BsonBinaryWriter, BsonJsonWriter)
  60. element name and value can now be written separately
  61. (needed to unify SerializeDocument/SerializeElement)
  62. added WriteName method
  63. WriteObjectId changed to match new ObjectId internal representation
  64. added new array methods (WriteStartArray, WriteEndArray)
  65. Document ID detection and handling
  66. replaced DocumentHasIdMember, DocumentHasIdValue and GenerateDocumentId
  67. with GetDocumentId and SetDocumentId
  68. IBsonIdGeneratorConvention
  69. shortened to IIdGeneratorConvention
  70. IBsonSerializable/IBsonSerializer
  71. Document/Element distinction removed from serialization
  72. DeserializeDocument/DeserializeElement now just Deserialize
  73. SerializeDocument/SerializeElement now just Serialize
  74. IDiscriminatorConvention
  75. GetActualDocumentType/GetActualElementType combined into single GetActualType
  76. Improved Enum serialization
  77. added 64 bit representation
  78. forgiving deserialization automatically converts between numeric types
  79. doubles supported during deserialization (JavaScript related)
  80. New IdGenerators
  81. NullIdChecker
  82. ZeroIdChecker
  83. Nullable type serialization
  84. now uses a generic serializer
  85. ObjectId
  86. new internal representation:
  87. int: timestamp
  88. int: machine (only low order 3 bytes used)
  89. short: pid
  90. int: increment (only low order 3 bytes used)
  91. new representation is much more efficient (no shifting and masking)
  92. new representation serializes correctly to JavaScript clients
  93. only two bytes larger (and additional bytes are not on heap but embedded in object)
  94. PublicMemberFinderConvention
  95. ignore indexers
  96. ignore overridden properties (base class already serializes them)
  97. Serialization support for additional .NET classes
  98. legacy Dictionary classes
  99. generic Dictionary classess
  100. BitArray
  101. ByteArray
  102. Uri
  103. Version
  104. Driver Changes:
  105. Builders
  106. Most have a Null static property
  107. All have a new Wrap method (see marker interfaces)
  108. CommandResult (and subclasses)
  109. Subclass of BsonDocument
  110. Holds results of RunCommand
  111. Subclasses used to pick out details of results in a type safe way
  112. MongoCollection
  113. Improved compile time type safety
  114. Replaced TQuery with IMongoQuery
  115. Replaced TIndexKeys/Options with IMongoIndexKeys/Options
  116. Replaced TSortBy with IMongoSortBy
  117. Replaced TUpdate with IMongoUpdate
  118. Replaced TFields with IMongoFields
  119. Replaced TGroupBy with IMongoGroupBy
  120. Update methods now return a SafeModeResult
  121. Added FindOneById and FindOneByIdAs
  122. GetStats now returns CollectionStatsResult
  123. Implemented GetTotalDataSize and GetTotalStorageSize
  124. Fixed IdGenerator related bugs
  125. MongoCommandException
  126. CommandResult is now added to Data property
  127. MongoConnection
  128. Use IPEndPoint instead of MongoServerAddress
  129. new RunCommand internal helper method
  130. MongoConnectionPool
  131. use IPEndPoint instead of MongoServerAddress
  132. moved RequestStart/Done to MongoServer
  133. MongoConnectionSettings removed
  134. a similar class is MongoUrlBuilder
  135. MongoCursor
  136. Type is now MongoCursor<TDocument> not MongoCursor<TQuery, TDocument>
  137. SetFields parameter is now IMongoFields
  138. SetSortOrder parameter is now IMongoSortBy
  139. Added support to distribute reads to replica set secondaries when slaveok=true
  140. MongoDatabase
  141. Now immutable (e.g. can't change SafeMode once created)
  142. Route commands to primary even when slaveok=true
  143. RunCommand parameter now IMongoCommand
  144. RunCommand now returns CommandResult
  145. RunCommandAs used to return subclass of CommandResult
  146. GetStats now returns DatabaseStatsResult
  147. MongoDelete/Insert/Query/UpdateMessage
  148. Replaced TQuery with IMongoQuery
  149. Replaced TFields with IMongoFields
  150. Replaced TUpdate with IMongoUpdate
  151. MongoGridFS
  152. Immutable (e.g. can't change SafeMode once created)
  153. Replace TQuery with IMongoQuery
  154. New methods: AppendText, CopyTo, Create, CreateText, ExistsById, FindOneById, FindAll,
  155. MoveTo, Open, OpenRead, OpenText, OpenWrite, SetAliases, SetContentType, SetMetadata
  156. (note: not all implemented yet)
  157. MongoGridFSCreateOptions
  158. Used when creating new MongoGridFSStreams
  159. MongoGridFSFileInfo
  160. Added Aliases, ContentType and Metadata
  161. Implemented !=, ==
  162. Implemented GetHashcode, Equals (can be used as Dictionary key)
  163. MongoGridFSSettings
  164. Added Freeze method
  165. MongoGridFSStream
  166. Initial implementation of Stream interface to GridFS files
  167. MongoServer
  168. Now immutable (e.g. can't change SafeMode once created)
  169. MongoUrl is used as identity of server instance
  170. Support multiple connection pools (used when distributing reads to secondaries)
  171. Added support for connection modes: direct and replica set
  172. Added RequestStart/RequestDone (moved from MongoConnectionPool)
  173. RunAdminCommand parameter now IMongoCommnad
  174. RunAdminCommand now returns CommandResult
  175. RunAdminCommandAs used to return subclass of CommandResult
  176. MongoUrl
  177. Support new connection string options
  178. Immutable
  179. Implements GetHashcode and Equals (can be used as Dictionary key)
  180. MongoUrlBuilder
  181. Used to build MongoUrls
  182. Mutable
  183. New connection mode classes
  184. DirectConnector and ReplicaConnector
  185. classes encapsulate connection mode logic
  186. New marker interfaces
  187. These are used to give parameters strong types while still allowing
  188. many actual types to be used as arguments
  189. Each marker interface has a new subclass of BsonDocument
  190. Each marker interface has a new wrapper class
  191. Replaces unconstrained generic type parameters
  192. QueryFlags
  193. Enum values were all wrong (shifted one bit to the right)