| |
Archive for the ‘Microsoft’ Category
Tuesday, March 16th, 2010
The answer: integrated support for cloud services.
For more than a year, I have been developing iPhone apps. Most of this apps require extensive server functionality. As mobile application market evolve, the game changer will be the cloud-based services aspect of these applications. That’s where Microsoft mobile platform has a significant edge over Apple’s.
I am just starting to dig into Windows Phone 7 development environment, and the deeper I get the more I like what I see. For one, I like using a modern language C#,and Visual Studio. It’s nice not to worry about memory management, and memory leaks.
My only concern at this point is the performance of the code running on the device. Can Microsoft deliver the close-to-the-metal performance of iPhone’s Objective-C with their implementation C# VM? I’ll find the answer once I port one of my resource intensive iPhone apps to Windows Phone 7 platform.
Posted in Microsoft, Mobile Development, Windows Phone 7, iPhone | No Comments »
Monday, January 11th, 2010
One of our customers, forwarded me the following CNN article.
http://www.cnn.com/2010/TECH/01/09/ces.apps/index.html
A must read.
Posted in Microsoft | 2 Comments »
Friday, June 5th, 2009
Our design team has been spending some time the last few weeks at taking another look at our architectural practices and also at standardizing on a core Web application architecture that we can then drop into the heart of any web application and then extend/wrap it based on the needs of the particular web application we may be working on.
Performance is one of the key factors in determining best practices and for data intensive applications, the database and data access layer performance in particular can make or break an application’s responsiveness more than any other layer in the application.
As we do a lot of ASP.Net/ .Net development, one of our designers Sanguanchai who is based in our Bangkok office has been trying to break down the use of LINQ to SQL versus using the Entity Framework 4 (currently in beta 1) across key considerations – not just performance - for use in our core architecture.
You can take a look at his findings in the post he published yesterday - LINQ to SQL vs Entity Framework. No doubt there are other architects and developers out there trying to get a handle on the same question and we hope you find this useful.
On a slightly related note, if you are the podcast listening type, .Net Rocks had Dan Simmons, Dev Manager on the EF4 and LINQ to SQL Team as a guest on the latest show. It’s good listen and you get some background on Microsoft’s decisions – including why EF is at version 4 though it is actually the 2nd release. You also get a view into the decisions behind certain features in EF4 and I personally got a better understanding of how best to leverage certain features of EF4 that were opaque to me thus far.
Again, the direct link to Sanguanchai’s post:
http://www.osellus.com/blogs/2009/06/04/linq-to-sql-vs-entity-framework/
Enjoy!
Posted in General, Microsoft, The state of the art | 2 Comments »
Thursday, June 4th, 2009
Compare features for LINQ to SQL vs Entity Framework
| Feature |
LINQ to SQL |
Entity Framework |
| Model |
domain model |
conceptual data model |
| Databases Supported |
SQL server only |
variety of databases |
| Data Sources |
tables only |
tables, replication, reporting Services, BI and etc |
| Complexity |
simple to use |
complex to use |
| Development Time |
rapid development |
slower development but more capabilities |
| Mapping |
class to single table |
class to multiple tables |
| Inheritance |
hard to apply |
simple to apply |
| File Types |
dbml file only |
after compilation generate edmx file with 3 sections to represent the schema: csdl, msl and ssdl |
| Create complex properties (e.g. Customer type may have Address property that is an Address type with Street, City, Region, Country and Postal code properties) |
Not Support |
Support in VS2010 Beta 1 but we can manually modify in .edmx file. |
| Query |
1. LINQ to SQL (for select)
2. Data Context (for update, create, delete, store procedure, view) |
1. LINQ to Entities (for select)2. Entity SQL (is a derivative of Transact-SQL, it supports inheritance and associations)
3. Object Services (for update, create, delete, store procedure, view)
4. Entity Client (is an ADO.NET managed provider, it is similar to SQLClient, OracleClient, etc. It provides several components like EntityCommand, EntityTransaction)
|
| Can synchronize with Database if Database Schema is changed |
Not Support |
Support |
| Performance |
Very slow for the first query |
Very slow for the first query. But overall performance is better than LINQ to SQL (Please see the result in the attach file) |
| Continue to improve features in the future |
No |
Yes |
| Generate database from entity model |
Not Support |
It will support in VS2010 Beta1. |
Limitation for Entity Framework in VS2008 SP1
1. It will throw error in runtime if we use Contains statement. For example,
from p in context.Yard_Projects
where p_projectIDs.Contains(p.ProjectID)
select p
2. It will not generate method that map to store procedure that are not return as entity type. (We need to Entity Client to execute store procedure.) For example,
Void DeleteProjects(@CSVProjectIDs)
3. We need to map every column of a table in the storage schema. If some columns are not mapped, it will compile error.
4. If we delete a type from diagram, it’s difficult to put it back. We may manually update in .edmx file or delete old one and generate new model.
5. You don’t get a lot of control over the storage schema at all. What you mostly see is the client schema and the mapping to the storage schema.
6. If you want create methods that are map to store procedure that has the result from multiple tables, we need to manually modify section “SSDL” in the .edmx file.
Performance Test
I tried to test on LINQ to SQL and Entity Framework, I found the overall performance Entity Framework is better than LINQ to SQL. I separated test cases into 2 test groups.
1. Test select/create/update/delete for single table. You can see my test result in the “TestForSingleTable” sheet.
2. Test select/create/update/delete for single table with many associations. You can see my test result in te “TestForManyAssociation” sheet.
You can see the performance report in the link, PerformanceReport
Recommendation
I think we should use Entity Framework than LINQ to SQL because many reasons as follows.
1. It is more flexible to mapping entity model to database. You can map one class to multiple tables, using inheritance.
2. It supports many queries, you can use LINQ to Entities, Entity SQL, Object Services and Entity Client.
3. When the database schema is changed, you can synchronize entity model from latest database.
4. It has better overall performance when compare with LINQ to SQL.
5. It will be improved many features in the VS2010. You will create complex data type, generate database from entity model.
6. It supports many database vender other than SQL Server.
But disadvantage of using Entity Framework may be complexity and development time.
Refer to my performance report, if we use Entity Framework to implement in the data layer, we should use the following patterns.testperformancelinqtosql_entityframework
1. Use LINQ to Entity for simple queries.
2. Use Entity Client or Object to execute Store Procedure for complex queries (many joins, groups) or queries that perform delete many entities with contains many associations.
3. Use Object Service to insert, update, delete single/multiple entities.
Posted in Architecture, General, Microsoft | 33 Comments »
Thursday, April 2nd, 2009
I have been reading Payman’s posts over the past week and the No new Methodology Please; Let’s focus on Tools post in particular stuck with me because it focuses on something I have been thinking about too. His post talks about the noise in the processes domain where there is a lot of focus on coming up with unnecessarily niche processes rather than focus on actually making processes useful by developing tools that make employing existing mature processes practical.
While Payman’s post focuses on processes, it struck me that even where tools go, often companies employ ALM tools with a narrow focus without fully grasping how they can be fully leveraged and what capabilities these tools pack. Over the last year, we have helped design and deploy solutions based on Microsoft Visual studio Team System (VSTS) for a few customers. One of the key needs that kept leaping out at us from all these engagements is that most customers wanted a way to implement requirements traceability – and they were not always aware that most ALM tools already have the capability to implement end-to-end Requirements Management – in particular traceability.
VSTS for example provides advanced linking capabilities that can be leveraged to allow tracking execution of a requirement from beginning to end (and backwards as well). A number of tools have come up around VSTS to satisfy other aspects of traceability such as the ability to track and link requirements within documents – document traceability. Traceability has always been this much sought after goal – which many companies have been attempting to address in their tools for many years. Now, the tools exist but most of us are not aware how to leverage them or even that the capability exists.
Over the following few weeks, I am thinking of putting up a series of blog posts focusing on Traceability to think through for myself and others who are interested in Traceability – how to leverage tools – with particular focus on VSTS since I am most familiar with it. A recent solution we implemented for a customer involved integrating VSTS with their CRM solution so that the solution was now truly end-to-end : Right from the time the requirement came in from the customer. In a future post, I hope to outline the lessons we learnt from this particular implementation and also step back to examine the broader implications and advantages of implementing such integrations.
We are also discussing the possibility of perhaps even having a series of webinars that focus on various aspects of Traceability based on our experience over many projects over the years and how we can leverage VSTS for the purpose.
Watch this space.
Posted in Enactment, Microsoft, Osellus, Process Enactment, The state of the art, VSTS | 1 Comment »
Saturday, March 28th, 2009
In an earlier post, I mentioned that one my favorite CMMI phrase is “Say what you do; Do what you say; Prove it”. The “prove it” part of this phrase is especially important during the Standard CMMI Appraisal Method for Process Improvement (SCAMPI) A. SCAMPI A provides maturity rating, and traditionally in preparation for it an organization spends hundreds (in some cases thousand) of tedious hours compiling, verifying and cataloging paper-based compliance evidence.
An integrated application lifecycle management (ALM) system, such as Microsoft VSTS, substantially reduces this burden by digitizing the majority of the required evidence, and making it accessible from a single portal (SharePoint in the case of VSTS). This portal goes beyond paper-based documents. It provides bi-directional traceability and search functionality. Moreover, the generation of the evidence documentation is automated.
In a very interesting case, an organization, utilizing VSTS, was able of to achieve CMMI maturity level 2 in an six months.
As a side note. I strongly believe that CMMI is not just for the organization who intend to get an official rating. Any organization, regardless of size, can greatly benefit from CMMI best practices. These best practices are the result of over a decade work by some of the industries best minds. They are quantitatively improved and empirically validated. I feel, this has much more merit than unverified (latest fad) concepts introduced by methodology theorists.
My advice is not to view CMMI not just as a certification mechanism, rather adopt parts of CMMI that are relevant and beneficial to your organization.
Posted in CMMI, Microsoft | 1 Comment »
Monday, March 23rd, 2009
Last Friday Negin, our head of software development, was telling me about a custom software development project that one of her teams had just wrapped up. This is a commercial grade web application, developed for a local customer here in Toronto area. Negin told me that the project was done under four months!
This morning I quickly glanced over the requirements and design documents of the system. It consisted of over 306 UI screens and massive amount of business logic (629 methods, 68,875 lines of code, 44 tables and 287 store procedures).
Negin attributed the rapid development cycle to VSTS and the process that was used. As I am not familiar with the project, I asked her and her team members to provide details of their experiences during this project.
It’s exciting to see VSTS and processes bringing so much tangible benefits to our own development projects.
Posted in Microsoft, Osellus, Processes & Methodologies | No Comments »
Tuesday, May 27th, 2008
Posted in General, Microsoft, Processes & Methodologies | Comments Off
Thursday, March 13th, 2008
It’s been a busy few weeks since the Heroes Happen {Here} event here in Toronto where we launched the latest release of our IRIS Process Live product for VSTS 2008. This release has been generating a lot of excitement amongst those looking to increase their productivity with VSTS. IRIS Process Live (IPL) is a collection of client and server extensions that enable VSTS to guide the execution of your projects based on your process of choice. IPL is methodology neutral so it allows you to bring any process definition (MSF, RUP, agile, in-house) into your VSTS enactment environment and automatically create the necessary work items and relationships to help you get going. The following are some of the features of IRIS Process Live.
IPL extends the project creation wizard to allow you to select the process definition and process patterns that you want to use for your project.

IPL extends the project creation wizard to allow you to select which process elements you want to instantiate in your project.

IPL work items automatically contain the necessary guidance for you to get started.


IPL work items are automatically linked together based on their process relationships.

IPL work items automatically contain links to relevant guidance and process guidance items.

IPL automatically performs work item state changes based on their process relationships.
IPL automatically sends users notifications when their work items are ready to be started or have been updated.
IPL allows you to create additional work items from the process definition at any time during project execution.


IPL allows you to add or remove additional process definitions and practices during project execution.
IPL contains process related reports that can be used for process improvement or governance related initiatives.
More information about IRIS Process Live is available at http://www.osellus.com/IRIS-PL.
Posted in Microsoft, Osellus, Products | 8 Comments »
Friday, December 7th, 2007
Yesterday Omid and I gave a joint Microsoft-Osellus webinar on Effective Software Development Governance with Adam Galant. Thanks to Rini Gahir and Adam Galant from Microsoft Canada for arranging this webinar.
It was a challenge to fit an explanation of the theoretical concepts of SD Governance with a tangible step-by-step approach to achieving it within the 45 minutes we had. In the end we were able to keep to our time and I hope the audience (about 36 attendees) left with an outline of a practical approach to establishing software development governance in an automated yet flexible manner.
Here is a link to a recording of the governance webinar.
Posted in General, Microsoft, The state of the art | No Comments »
|
|
|