April 2007 - Posts
Andrew Conrad announced project "Jasper" earlier this week at Mix '07. Jasper is different from typical O/R frameworks that often require data classes to be written by hand, or generated at development-time using a tool. Jasper on the other hand connects to the database, determines the database schema, and generates the corresponding data classes. The interesting thing is that this generation does not result in source files. The data classes are compiled in-memory and are available within the running program. If the database schema changes from run to run, the dynamically generated data classes reflect the schema changes without any developer intervention. See the Microsoft Codename Jasper CTP Overview document in the CTP for more details.
I'd rather see Jasper leaning on the Entity Data Model implementing some form of conceptual model that is directly executable instead of objectifying the logical database schema.
As always I'm aiming at the ceiling ;)
Today at the Mix '07 event in Las Vegas Microsoft's "data programmability" team announced "Astoria": Data Services for the Web. Astoria is an early piece of technology for creating and executing data services. The cool part is that it uses the Entity Data Model to model data in terms of entities. These services and entities are surfaced to the web as a REST-style resource collection that is addressable with URI's and that agents can interact with using HTTP verbs such as GET, POST or DELETE.
Interesting to see that Microsoft is taking the REST route.
For more information visit the Astoria live lab and check out this podcast with Pablo Castro talking about programming data on the web.
Today the ADO.NET team announced that the ADO.NET Entity Framework will not ship with Visual Studio Orcas currently planned for Q4 2007. The team is targeting a release in the first half of 2008. For more information on the ADO.NET Entity Framework and Microsoft's Data Access Vision, see the ADO.NET team blog and Microsoft's Data Access Strategy post on the Data Blog. Frans Bouma speculates about why they've cut the Entity Framework from the Visual Studio Orcas release.
The good news is that the team will continue to ship CTP drops throughout the remainder of this year.
Looking from the bright side of things, this means the community has more time to play with the CTP drops and submit valuable feedback to the product team. Frans is right when he says that it takes a long time to gain momentum to get the critical mass of users to embrace this new piece of new technology and to be very successful with it. I think this is an interesting topic to discuss during the ADO.NET Orcas chalk and talk session at the first Dutch Code Camp. Stay tuned since I intend to continue the ADO.NET Orcas Future Directions series.
Tim McCarthy uploaded his slides and demo code for his talk on "Domain-Driven Design using the ADO.NET Entity Framework". Last year I wrote the article "Organizing Domain Logic" which compares Microsoft Three-Layered Services Architecture (MS-TLSA) against one by Domain-Driven Design (DDD). Although the article explains the important concepts with the help of code snippets it doesn’t come with the actual code. Tim’s demo code contains the Order Inventory example I wrote about in my article which is based on the MS-TLSA. It also includes the Order, Customer and CheckOut logic example I used to explain DDD and the difference between these two architecture styles. So, I suggest you head over to Tim’s blog and download his demo code.
What kind of other DDD examples would be helpful to you?
Also see part 1, 2, 3, 4, 5, 6 and 7 of this series of posts on the next-generation data access for the .NET platform. Please note that this information is subject to change.
Fabrice Marguerie points to the product availability for Orcas.
Scott Bellware is falling back to NHibernate for the time being. Apparently he phoned with Dan Simmons and Tim Mallalieu and received confirmation that the EDM designer will be not ship with the Orcas RTM.
Kevin Hoffman has a great Entity Framework tutorial online to work your way around the bugs in Orcas beta 1.
Dmitri Zimin mentions the competition between LINQ to SQL and the Entity Framework during the deep dive training at Redmond.
No support for multiple data sources. According to Daniel Simmons this features breaks the fundamental principle that query processing is executed in the database, not on the client. I can’t let go of the thought of distributed queries ;) (discussion)
According to Daniel Dosen support for “using” in the CSDL schema is currently under evaluation by the team (discussion). This will lessen the requirement to store the complete domain model within a single assembly.
Daniel Simmons comments on support for spans in a future release. This is implemented as a Span property of ObjectQuery<T> (discussion).
Pablo Castro explains once again the choice for explicit lazy loading (discussion). Although I agree with Pablo’s reasoning I would rather choose a specific scenario according to the needs of my application.
Daniel Simmons acknowledges, in the long-term, data manipulation language (DML) support for Entity SQL (discussion).
Frans, Alex and I are planning to meet up to discuss the content for the upcoming Code Camp. Frans will be hosting O/R mapping and Architecture, Alex LINQ and I will host the ADO.NET Orcas chalk & talk session. We think that having three chalk & talk sessions covering the architectural aspects, innovation in query API's and tooling for O/R mapping is quit unique, and see this as an opportunity for us to give you a clear picture where this technology stands today and is heading in the near future. For this purpose we want to align our sessions.
We need your input! Please tell us about any ideas that you may have for these sessions. What should the outline look like? What is a subject that should be covered? Thank you for your comments, and see you there!
Saturday the 12th of May 2007 SDN, Stiching dotNed and VBcentral are organizing the first Dutch Code Camp. This event is held at the Microsoft Innovation Center in Barneveld. Don’t miss it because it’s by and for developers, free and not during work hours.
Special thanks to the sponsors Microsoft, Ingragistics, Wantit and Dundas!
Modify the configuration files every time you deploy in a new environment. This is a task often performed by the operations department and is time consuming and error prone. We tried to regain control on the situation by documenting this process thoroughly. Although our effort helped with the communication between the development team and the operations department to be more effective, the overall result is not what we hoped for. Eventually the operations department ends up with maintaining separate copies of configuration files in different locations on the staging servers. This means configuration knowledge is kept outside of the source control system. The side effect of this is that when you make changes, you need to make changes to every file in every location. We also tried to maintain separate files with different names such as development.config, test.config, acceptance.config, production.config. What brought us a step closer in the right direction is to split the configuration files in aspect areas such as developmentData.config, testData.config etc and although making changes is now less intrusive this does not solve the maintenance burden for the operations department. Certainly we experimented with the Enterprise Library configuration block and build our own plug-ins for the configuration tool.
Where do we stand today with configuration management? With over four hundred applications in production not to mention the number of projects in staging at the moment, operations department is struggling to stay on top of things.
How does your organization cope with the configuration associated with .NET? What are your experiences? Do you use tools?
As the result of a recent experience; my friend (one of the developers) questions if the architect should create the architecture with the quality of the development team(s) in mind. My friend is convinced that this is a factor to be weighed. Recently I had the opportunity to take a close look at his project and talked face-to-face with the project’s architect. He blamed the development team and process and eventually ended up hacking it all together, which obviously only made things worse. There is a reason that the customer is willing to staff a pretty large team, otherwise a single programmer would do in the first place. Wright :D
I fully agree with Dana Bredemeyer and Ruth Malan in "The Role of the Architect" that developers are a primary customer of your architecture, and that the architecture must provide value to them. Their goal is not to make your architecture successful, but rather to satisfy functionality, schedule and quality requirements. While your created architecture may be the best overall approach for the organization, this is sometimes not apparent to the development teams. As the architect you will need to function here more as a mentor and coach to enable the developers to quickly understand and effectively use the architecture. What really contributes to your success here is to be truly committed to others success and to have a good understanding of change management and how groups adopt new processes.
In conclusion, since the success of you as an architect is closely linked to the quality of the team you should participate in reviewing new team members to organize the team around the architecture. I’m not so sure that you should create the architecture with the quality of the development team in mind. Decisions then made might undermine the value delivered to your customer.
This (Microsoft.SharePoint.Administration.SPDuplicateObjectException) error sometimes occurs when deploying a Web Part to your ShrarePoint 2007 environment. To solve this error:
- Close your solution
- Browse to the YourWebPart/bin/Debug/ directory
- Run the setup.bat /uninstall /url:http://yourhost
You can then choose to deploy your Web Part using the setup.bat with the /install switch or by opening Visual Studio.NET and right click on your solution and hit deploy.