Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Playing with Vertial and Horizontal Tables


Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

How to write a CMS like Sharepoint?

How to use virtual path providers to dynamically load and compile content from virtual paths in ASP.NET 2.0


Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

About SqlCacheDependancy, Personalization, and Sql's Xml DataType

Dependant Cache to Sql Server

Personalization Info


Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

Recommendation Engines

"People who bought this item also bought the following" kind of cross sell functionality.

A Simple Recommender System - The Collaborative Network Library, By edeferia

Web Analytics Software

One of the most important issues of online business is analyzing the visitors' behaviours. Thus Web Analytics Software were born; you may find a list of various web analytics software at the link below:

here is a sample open source google analytics like web analytics tool: http://piwik.org/
Check them out!

Accessing Microsoft Commerce Server 2007/2009 ConnectionStrings


If you are using Microsoft Commerce Server 2007/2009 (MSCS) and if you have one commerce starter site then you will have 7 databases in your Sql Server. The databases are listed as following:

1. SiteName_ProductCatalog
2. SiteName_Profiles
3. SiteName_Marketing
4. SiteName_MarketingLists
5. SiteName_Transactions
6. SiteName_TransactionConfig
7. SiteName_DataWareHouse

If you have multiple sites datawarehouse resource may be shared among these sites. If we leave datawarehouse alone, each site may have 6 databases. Although you may share your profile db among your sites, but we may also seperate each sites’ profile resource. Thus each site will have 6 databases if you do not create datawarehouse, and use seperate profile for each one.

Every MSCS installation create two dbs namely “MSCS_Admin” and “MSCS_CatalogScratch”. MSCS_Admin db stores settings of the MSCS. MSCS_CatalogScratch db stores temprorary tables of the system.

Data Retrival

Having read all the information above now we know that MSCS has an internal storage for connection strings for the active resources that the system uses. The commerce infrastructure’s CRUD operations is done through web services or the dlls that MS provides. If you use web services we call this approach ServiceAgent approach, otherwise if you use commerce dlls in order to CRUD undelying data model we call it SiteAgent approach.

Another approach to query the underlying data model is directly connecting to the database and executing data retrieval queries for fast responses. Since SiteAgent and ServiceAgent uses commerce server dlls or services before querying the data model, these approaches are not as fast as directly connecting and executing queries to database. That’s why sometimes you may want to query the db directly in order to achieve best performance in your applications. Thus direct query is another option to get info from the underlying data stores.

Using more then one product catalog repository for testing/staging purposes

You may have two productCatalog databases in order to use one for testing or staging purposes, active site may use productCatalog2 database. If the staging db is ready to go for live you may switch the active product catalog resource from productCatalog to productCatalog2 by changing the connectionstrings from Commerce Server Manager windows application, after changing the connection strings you should recycle the application pool in order to refresh the caches for commerce system.

Consequences of changing the connectionStrings frequently

As a result of always changing the connectionstrings of productCatalog resource your code may not be aware of the active product catalog. Thus you cannot hard code your conStr in your web.config file and always use the same conStr. Instead of using the same conStr you have to go and search for the active conStr in your MSCS_Admin db and find the active productCatalog conStr at that moment.

By finding the active productCatalog conStr from the MSCS_Admin db you may execute data retrieval queries fast. As an additional suggestion you may use “(NOLOCK)” statement in your SELECT queries for the non-blocking queries, this will make your queries run faster.

Why shouldn't you use folder synchronizers instead of source control providers

I was coding a project with my best friend who lives far away from my home. We have created the solution however the need for a source controlling system emerged. First we tried to use MS Visual SourceSafe 2005 over VPN, that was working but it was so slow that you cannot get latest version of the entire solution in a reasonable amount of time.

We thought that using a folder synchronizer will satisfy the need. First a few days it worked perfectly, we haven't needed to "get latest" at all, since the system was sync.ing itself. We were aware of the danger that working on the same file will cause problems. Since folder sync.ers does not have file diff utilities and they overwrite each file in order to sync them! That was not a problem it we were coding in different files in the same project, that would have been solved with a good communication. However in bin and obj folders there exist pdb (symbol) files. These files are used in debugging mode and if they do not exist breakpoints are not hit in the project. That's the reason for not recommending folder synchronizers, if you cannot "exclude the specific directories" in the synchronized directory tree .

One other option for far away developers' source code management issue is using a directory containing VSS files and shared by a FTP server.
by using netDrive you may map any ftp folder like a folder in your machine, that means you may use the VSS folder on the FTP as in your machine. That will allow you to open the code repository through the VSS client or Visual Studio Ide and get the project by utilizing the FTP's speed.

I have experienced the last method, and saw that FTP is faster then VPN connection. The only problem is you cannot share your source code with FTP if your sources are top secret.

Azure Applications: Source Control Provider using Azure Storage


Alen Ziver Malhasoglu's New Microsoft Commerce Server Blog

use wss 3.0 with sp2

WSS 3.0 with SP2
Differences between WSS 3.0 and MOSS 2007
How To Install Windows SharePoint Services 3.0 On SBS 2003
How to install Windows SharePoint Services 3.0 SP1 on Vista x64/x86

Connecting to WSS 3.0 SP2 database instence Microsoft Sql Server Embedded Edition <=> Microsoft##SSEE
WSS 3.0 and SQL Server Embedded Edition

More on customization
How to Customize SharePoint Forms - Without Writing Code - Part 2
Filtered Lookup Lists In Sharepoint
SharePoint 2007 - /_layouts and how to create pages that run in site context
Implementing Masterpage in MOSS
Create a site master page
Sharepoint Inspector