|
Showing posts with label community. Show all posts
Showing posts with label community. Show all posts
Tuesday, August 21, 2012Moving towards openness
Remember the days when every website wanted to maintain its own database of users and related data? To download some restricted content you have to register there, provide a password, successfully forget it after a couple of minutes and use "Restore password" feature every time you visit the website later.
The same kind of website was our corporate X-tensive.com website. Moreover, our support website was configured to work with users from x-tensive.com only. Until... Until we rejected the model above and switched to OpenID authentication scheme and made all versions of DataObjects.Net available for download without registration. The same change was applied to support.x-tensive.com — now anyone who has OpenID may log in and post an issue/feedback. Having that done, we closing user registration area on x-tensive.com as now it doesn't have any sense, however, all user accounts will be preserved and users may sign in in their x-tensive.com profile as usual. Note for owners of DataObjects.Net licenses: we launched new customer area, don't miss it. All your license-related data is migrated from x-tensive.com to get.dataobjects.net website.
Labels:
announcements,
community,
licensing,
support,
website
Saturday, August 11, 20129-th anniversary, new prices, community edition and much more
Hello everybody!
Today we are celebrating the fact that 9 years ago the first version of the award-winning, revolutionary ORM named DataObjects.Net was released. Due to this we are launching our new edition & pricing policy, new customer area and we are hoping that you'll like it. DataObjects.Net 4.5.4 finalThe main change in this version in addition to all listed in RC 1 & RC 2 is Community edition support. Download it from official website or from NuGet repository.Community editionMany users requested Community Edition of DataObjects.Net with full set of features and with possible limitation of number of persistent types. Well, here it is, the Community edition is rolled out today. It has the following characteristics:
Professional editionProfessional edition is available for $150 and includes 2 hardware licenses. Comparing to the previous pricing scheme (500 euro), the price cutting is more than 65%. Moreover, 3 items are available for $120 each and 5 items - just for $100.Get Professional edition. Ultimate editionUltimate edition also gets its new shiny price, from now it is available only for $1500 instead of 2500 euros. The edition provides the unlimited number of hardware licenses. Ultimate edition contains access to the source code no more.Get Ultimate edition. Access to source codeWe extracted 'Access to source code' feature to a separate package to make it available to all our customers, not only for Ultimate edition owners as it was earlier. So anyone, even an owner of Community edition has a chance to dive deep in DataObjects.Net white and black magic. The price for the package is set to $500. The source code is available in download area of our website.Get access to source code. New customer areaWe are inviting you to the new customer area that we have built for you for better and easier license management. No more registration, we migrated to OpenID authentication scheme. We added license sharing feature, so your developers won't bother you with anything concerning licenses and hardware locks, you may share the license with all of them.The area can be accesses by clicking on 'My Account' link in the main menu: ![]() Soon you'll receive our invitation e-mail. We need you to log in the area to get your licenses associated with your account. Don't forget to periodically check your mailboxes! Join the celebration! Thank you! Links:
Labels:
announcements,
community,
licensing,
pricing,
website
Wednesday, January 11, 2012DataObjects.Net Extensions, part 2. Reprocessible tasks
This is the second part of the series of posts about DataObjects.Net Extensions, created and maintained by Alexander Ovchinnikov, the author of LINQPad provider for DataObjects.Net.
The first part was about batch server-side update and delete operations and this one is dedicated to reprocessible operations support. Reprocessible operationsIn multi-threaded environment, especially under high load there are pretty good chances of deadlocks, update conflicts, unique constraint violations, etc. Obviously, such cases must be correctly handled and this is where reprocessible tasks take up the challenge.Which tasks are reprocessable?
Domain.Execute(session =>
{
// Task logic
});
Note Action<Session> argument. This is required to have the ability to join current Session or open a new one. However, this sort of declaration doesn't provide any way to manage conditions of reproccesibility and the transaction isolation level to follow.
Overloads of the Domain.Execute extension method with full list of arguments provide such options:
void Execute(IsolationLevel isolationLevel,
IExecuteActionStrategy strategy,
Action<Session> action);
T Execute<T>(IsolationLevel isolationLevel,
IExecuteActionStrategy strategy,
Func<Session, T> action);
An implementor of IExecuteActionStrategy is capable of how to react to exceptions thrown, how many attempts to execute the task to make and so on.
Task execution strategiesThere are dozens of ways how to execute the tasks, that's why the strategy is an interface; you may want to implement your own strategy for some specific scenarios. However, DataObjects.Net Extensions contains several ready-to-use strategies for the most common cases:
HandleReprocessableExceptionStrategyThe strategy is used to handle any ReprocessibleException, which in turn is a erroneous situation that can be recovered by rolling back active transaction and reprocessing all actions in a new one. This strategy is applicable for the majority of scenarios and is recommended as a default one.Domain.Execute(
ExecuteActionStrategy.Reprocessable,
session =>
{
// do some stuff
});
The default instance of HandleReprocessableExceptionStrategy can be accessed via ExecuteActionStrategy.Reprocessable static property. Default number of attempts is 5.
HandleUniqueConstraintViolationStrategyThe strategy is used to handle either ReprocessibleException or UniqueConstraintViolationException as latter one doesn't inherit ReprocessibleException. The strategy extends HandleReprocessableExceptionStrategy and might be especially helpful in scenarios "Add or Update entity".Domain.Execute(
ExecuteActionStrategy.UniqueConstraintViolation,
session =>
{
var counter = session.Query.SingleOrDefault<Counter>(ID);
if (counter == null) {
counter = new Counter(session, ID);
}
counter.Value++;
});
The default instance of HandleUniqueConstraintViolationStrategy can be accessed via ExecuteActionStrategy.UniqueConstraintViolation static property. Default number of attempts is 5.
NoReprocessStrategyThis strategy doesn't support reprocessing. It should be used in scenarios where reprocessing is not desirable or might lead to erroneous results, for example, a task operates with non-transactional objects or services:Domain.Execute(
ExecuteActionStrategy.NoReprocess,
session =>
{
// on transaction rollback results of these methods can't be reverted
SendMail();
CreateAFile();
DeleteAFile();
// database-related actions
});
The default instance of NoReprocessStrategy can be accessed via ExecuteActionStrategy.NoReprocess static property.
Custom reprocessible strategiesTo utilize your own reprocessible strategy, use this pattern:Domain.Execute(
new MyFancyReprocessibleStrategy(),
session =>
{
// some actions
});
The implementation of custom reprocessible strategy might be based on ExecuteActionStrategy class which is the base class for the above-mentioned strategies and is included into DataObjects.Net Extensions or can be made from scratch.
Enjoy the power of DataObjects.Net Extensions, employ server-side batches and task reprocessing in your projects. P.S. How to install the extension is described in the first part.
Labels:
announcements,
community,
extensions,
feature
Wednesday, June 22, 2011DataObjects.Net on Twitter
Hello everybody,
Finally DataObjects.Net reached Twitter. =) Follow us for the latest news and updates. Follow @DataObjectsNet
Labels:
announcements,
community
Wednesday, June 15, 2011SalesPoint sample database for MySQL
This is an addition to the previous post, for those who prefer using MySQL instead of Microsoft SQL Server. Malisa Ncube made a conversion of salespoint.sql file from DataObjects.Net 4.5 Beta 2 package to MySQL syntax and very generously published in his blog.
You will also find there some moving impressions about the SalesPoint sample running on MySQL because he is the official 'father' of MySQL driver for DataObjects.Net. Thanks, Malisa! Wednesday, June 08, 2011Report about Uganda .NET Usergroup
Malisa Ncube has written a nice post about the event that took place on Friday, 27th May 2011. Malisa presented DataObjects.Net on the meeting and demonstrated how DataObjects.Net fits into Microsoft technology stack.
Don't miss the downloadable presentation. The link is located in the end of his report. Really nice one!
Labels:
community
Tuesday, June 07, 2011DataObjects.Net Entity Designer update
Talented Peter Šulek announced the major update of the Entity Designer project.
The update includes list of bug fixes along with the new important features like POCO/DTO generation support, optional DataContract and DataMember attributes generation, redesigned "Add association" dialog and much more.
Read complete announcement in Peter's blog. So, grab the bits and start playing with the tool. Any feedback is highly appreciated. The sooner the designer is tested in various scenarios, the sooner it will be released in production. So, DataObjects.Net community members, participate! Help making the tool perfect.
Labels:
announcements,
community
Wednesday, April 27, 2011DataObjects.Net Contribution Program Rocks!
Hello All!
Today I'm proudly presenting one more participant of the program — Mr. Alexander Ovchinnikov! Alexander is the one who created DataObjects.Net Driver for LINQPad tool. Loud ovation! Let's find out how the power of LINQPad & DataObjects.Net can be utilized: First of all, download LINQPad and install it. Secondly, download the driver. It is named "LINQPadDriver.lpx" and is located in Bin\Latest directory of "Binaries for .NET 4.0" package, build 7475 or later. Next, launch LINQPad application. Click "Add connection" link. In the opened window click "View more drivers..." button. ![]() In the next window click "Browse..." Locate LINQPadDriver.lpx and open it. After that LINQPad will show a message box that the driver is loaded. Select "DataObjects.Net" from the list of available drivers and hit "Next" Connection configuration window will be shown. Here you should set connection name, domain connection url and add all required assemblies with persistent types to the list. I added the one from the upcoming security sample which in turn is based on Northwind model. After several endless seconds, the domain is built and the domain model is populated to the left pane. That's it. Now you can write LINQ queries and execute them. Note that you should start a query with Query.All<Entity> as you usually do in DataObjects.Net-based projects. BTW, look how structures are displayd. Beautiful! SQL tab also works. Don't know why it doesn't provide word wrapping, though =(. Alexander has received DataObjects.Net Ultimate edition as a reward and additionally promised to continue the driver support/maintenance. The driver itself will be included into DataObjects.Net 4.5 and is already available today as a part of DataObjects.Net alpha 2. Developers! Wanna get the license for free? Choose a feature (or more) from the feature list and join da game! The reward is guaranteed.
Labels:
announcements,
community
Wednesday, April 13, 2011DataObjects.Net 4.5 Alpha 1
We are pleased to announce the availability of DataObjects.Net 4.5 Alpha 1. This build includes all the fixes that are made to stable 4.4 version as well as two brand new data providers: Firebird 2.x & MySql 5.x, thanks to Csaba Beer & Malisa Ncube (thunderous applause here!).
As it is alpha, there are some limitations, such as: - Upgrade doesn't work yet in most scenarios for both Firebird & MySql. Hence, use 'Recreate' to update the database schema. Examples of ConnectionUrls/ConnectionStrings for these 2 providers are like the following: // MySql var connectionUrl = @"mysql://user:password@myserver:3306/database"; // Firebird var provider = "firebird"; var connectionString = @"User=user;Password=password;Database=C:\Program Files\Firebird\Firebird_2_5\database.fdb;DataSource=myserver; Port=3050;Dialect=3; Charset=NONE;Role=;Connection lifetime=15;Pooling=true; MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;"; // or var connectionUrl = @"firebird://user:password@myserver/C:\Program Files\Firebird\Firebird_2_5\database.fdb?Port=3050&Dialect=3&Charset=NONE&Role=&Connection lifetime=15&Pooling=true&MinPoolSize=0&MaxPoolSize=50&Packet Size=8192&ServerType=0"; The binaries are available at the corresponding section of Downloads page. Feedback of any kind is highly appreciated. Note: this is alpha version, it is not intended to be used in production.
Labels:
announcements,
community,
releases
Monday, March 28, 2011DataObjects.Net Contribution Program Progress
Hi All,
As you might remember, in February Xtensive LLC officially announced the DataObjects.Net Contribution Program. Frankly speaking, we didn't even imagine what impressive results it would bring. First of all, I have to mention Csaba Beer and its efficient work on Firebird provider. Csaba developed Sql.Dom driver and now the entire Firebird provider is already integrated into DataObjects.Net ORM core (branch 4.5). It is being tested, fixed and polished by Xtensive LLC engineers. The alpha version will be available soon, may be even this week. Secondly, Malisa Ncube joined the Contribution Program and chose MySql provider as the goal. After several weeks of hard work the main part of Sql.Dom driver is almost finished. Today I've even managed to run all ORM tests on MySql. Unfortunately, not all of them finished successfully but that's OK for the first time. The work on the provider might require a week or two and after that it will be ready for the alpha. Last but not least, Entity Model Designer for DataObjects.Net that is being actively developed by Peter Šulek, appeared like a miracle for most of us. As you know, DataObjects.Net always was strictly code-centric tool and there were no designers or any other visual tools for it. But with the help of Peter the things have been principally changed to better side. While the tool itself is in alpha phase, it looks very promising. Peter promised to blog about the designer soon, so let's wait for the overview or tutorial. All of these brave and bright developers will receive DataObjects.Net Ultimate editions as a reward for their outstanding efforts. Wanna see yourself in the list? Choose a feature or two from the feature list and join da game! The reward is guaranteed.
Labels:
announcements,
community
Thursday, January 13, 2011Making connection strings secureRecently, Paul Sinnema from Diartis AG asked on the support website how to make connection strings, listed in application configuration files (app.config or web.config), more secure.
1. Encrypt the required connection string with encryption method you prefer and put it somewhere in web.config/app.config file in encrypted form. 2. Load DomainConfiguration through standard API:
var config = DomainConfiguration.Load("mydomain");
3. Set manually config.ConnectionInfo property with decrypted connection string
config.ConnectionInfo = new ConnectionInfo("sqlserver",
DecryptMyConnectionString(encryptedConnectionString));
4. Build Domain with the config.
Paul answered that although the workaround is useful, he'd prefer that DataObjects.Net could be integrated somehow with standard .NET configuration subsystem that provides easy encrypting/decrypting of connection strings.
Let me explain the approach, Paul was talking about. For example, if plain connection string configuration looks like that;
<connectionStrings>
<add name="cn1" connectionString="Data Source=localhost\SQL2008;Initial Catalog=DO40-Tests;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
then after executing "aspnet_regiis.exe -pef "connectionStrings" %PATH_TO_PROJECT%" the encrypted one will look like the following:
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>TJETPde0GVrSAKk0VpUs3EsV8XFRQrVU1lGlrX8aEhvfa4MaMpN3O6KLo3I9e5oujXBImKtmXHWxnF6KRcSWteuQXD4I37Dq6yE1cZ4qDHqNMkcQK+lgi6jbRLcPzYQdFuOLagsAVpif8OvY0dJkiKd+Srqjwz7ZO225VCipaQs=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>6bQyCUdH9rqdNAD4IwmSXtAQIEuRfSjpQ/Py5ovz2ZpwJdEXa4W3OKWMm52g1ARXPqMYw1thfQae//+1JWTAPQwrE3JTZEdcgu47KE2x8uqdWeJfoXSecp6berSPc4qAa4F2B5x8weUGPiAsBldVfBXwUBPniKWbnnXViJWmcSn16kaAtIkq5GtNOp7YhPt9WKZG0QkFRpEaRAWqLgxK6nXUwK8BgbGEBI4B27QSFj2ME1/JI+o//RrchntEuW6VolEA7PAejMujsIn1xb0hqg==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
As a result, the connection strings get encrypted and therefore, much more secure. Working with them is as simple as usual: they can be accesses through standard ConfigurationManager without any special tricks: ConfigurationManager.ConnectionStrings["cn1"].ConnectionStringAnd this simplicity makes the whole approach extremely useful.
So, what could be done to get DataObjects.Net compatible with all this shiny stuff, keeping in mind that connection strings section is outside DataObjects.Net configuration?
After thinking for a while on the problem, we've got the following idea: what if we put in domain configuration not a connection string itself, but a reference to the connection string, that is actually defined in connectionStrings section? For instance:
<Xtensive.Orm>
<domains>
<domain provider="sqlserver" connectionString="#cn1" ... />
</domain>
</domains>
<Xtensive.Orm>
Where:
And now, we'd like to ask you some important questions:
Dear users of DataObjects.Net, we need your feedback. Please, post a comment or two. Thanks in advance.
Labels:
community,
DataObjects.Net,
feature,
thoughts
Tuesday, August 17, 2010News on support.x-tensive.com
Hello,
Today we've switched to a new development snapshot of the support.x-tensive.com website. Among all changes we made the most noticeable for users is certainly integration with syntax highlighter (by Alex Gorbachev), which is automatically being applied to all code fragments. As for us, the most important update is the ability of incremental migration from old forum to the new one. During this process the following tasks are being executed:
Having all this stuff done we feel that the new support service is ready for real life usage and, therefore, we are making an announcement that old support forum will be switched into read-only mode in few days. The appropriate orange header with notification text is put on its index page: Thanks Dmitri Maximov
Labels:
announcements,
community,
support
Thursday, August 12, 2010Gain your karma on support.x-tensive.com
A few days ago I posted about our plans on support.x-tensive.com service and asked you, our dear customers, users and followers, to register on it in order to make data migration process and author association simpler and more transparent.
We thank those of you who found several minutes and accomplished this trivial registration task. This gave us an opportunity to achieve the following goals:
It is not a surprise that the blue rabbit has got maximum level of karma, as it is working night and day 24x7 on the support forum. Our congratulations to leaders: aramahdessian, Paul Sinnema, xumix and all other contributors. I suppose, we'll wait a week or two in case anyone else decides to join and earn karma for his participation in old forum, and after that we'll do final migration to the new version of support service. Thanks. Dmitri Maximov
Labels:
community,
DataObjects.Net,
support
Monday, August 09, 2010On support.x-tensive.com
We are resuming the work on our new technical support service, which was postponed due to the final stage of DataObjects.Net 4.3 development.
As I've already posted, we made rather good progress on it, for example, the following things are ready and tested: - Authentication integration with www.x-tensive.com using OpenID protocol. - Migration of topics and answers from currently used forum. Unfortunately, user import task seems to be unexpectedly overcomplicated because of principally different authentication schemes used in forum and support service, so current version of it contains posts which are signed by artificially created 'Editor' user instead of original authors: where red areas highlight artificial 'Editor' user, whereas blue ones goes for originators, whose names are primitively included into text of topics & comments. In the next release of our support service we would like to sort out the problem of topic and comment ownership. In order to achieve the goal, we're asking you to spent approximately 2 minutes of your time and sign on to support.x-tensive.com. Having list of registered users we could easily map them to correspondent users in old forum. After that is done, topics and comments will be owned by original authors, who could gain karma, vote for answers, mark them as accepted, etc. Thank you in advance. Dmitri Maximov
Labels:
community,
DataObjects.Net,
support
Subscribe to:
Comments (Atom)
|
SubscriptionBlog Archive
Labels
|



















