In my last
blog, i spoke about WCF performance article. After that i also came across following article which talks about performance characteristics of Windows workflow foundation,
http://msdn2.microsoft.com/en-us/library/Aa973808.aspx
This article provides you guidance and techniques that can be used to improve the performance of a particular workflow application.
I came across following article which provides high-level performance comparison between Windows Communication Foundation (WCF) and existing Microsoft .NET distributed communication technologies. You can provide this article as reference if you are suggesting WCF over other distributed technologies,
http://msdn2.microsoft.com/en-us/library/bb310550.aspx
Microsoft released a guidance document for branching and merging using Team Foundation Server. This extensive guide explains about various branching and merging patterns and how to implement those patterns using TFS. It also has information on how branching/merging is implemented in Microsoft product teams. Check out the following community page for more details,
http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=html&referringTitle=Home
I also came across a tool “Team Foundation Side Kicks” which is really useful for merging. Though most of the features provided by this tool are available through TFS command line utilities, this tool UI is very good. Check it out at following site,
http://www.attrice.info/cm/tfs/index.htm
It also has so many additional features other than merging.
If you are planning to learn or already started learning Biztalk 2006, following two resources will be really helpful to you.
To get an overview on biztalk 2006, read this whitepaper first
Understanding Biztalk server 2006
and then start your journey with following guide,
Biztalk Blogger Guide
This guide has lots of information on advanced biztalk topics. It also has a section for begineers, where to start and various resourced for begineers. Thought this guide created during biztalk 2004 time frame, it has information on 2006 also.
I was searching for Synchronization tools for my laptop backup strategy . I came across following two useful sync tools,
1. FolderShare
This tool is recommended by everyone for synchronization, this is useful if you want to sync your files through internet. For example, if you want to Sync your files between home PC and your Office PC and both machine are always on internet. Then this tool will be really useful. I haven’t tried out this tool. This tool is brought by Windows Live service now and it is free.
2. SyncToys
This tool is little known tool. It’s a part of Windows XP power toys and its free utility provided by Microsoft. This tool can be used to sync files between your pc and any another pc on network and also between your pc and your external harddisk.
My case is to sync between laptop and my external harddisk, so I went with SyncToys as of now. But major drawback with this tool is, you cannot schedule it. However with the help of Windows scheduler and Synctoys command line option, I am able to schedule it. Major advantage of this tool is, it’s quite fast in syncing files. I have files in GBs, but still it is doing it very fast.
If you don’t have any backup strategy for your data in your PC, then it’s time for you to try out these tools now.
One of the important feature which is missing in VSTS Team Build is Continuous Integration support. Though there are lots of workaround to achieve this, there is no readymade solutions to implement this. But with TFS Integrator, you can implement continuous integration with few configuration settings. For more details, check out this blog
http://notgartner.wordpress.com/2006/09/18/getting-started-with-tfs-integrator/
This blog is continuation to my other two blogs on Customizing membership controls (Part1 and Part2). Here i am going to talk about customizing login membership controls for redirection.
By default, Login membership control provides support for requestUrl redirection i.e. when you access a page that require authentication, it will automatically redirect to login page if you have not logged in already. Once you login, you will automatically redirected back to the original page.
This is a very nice feature, but there might a small problem in this feature. I will explain this problem with a scenario. Consider user forgot his password, so he goes to password recovery page where he request for his password reset. Once the password is reset, membership control will sent a email to user. User waits for the email, once he receives the email. He will get the password, and goes to login page (Note: here user is going to login page from password recovery page.). Once user enters the username and password, he will be redirected to back password recovery page as password recovery page is users last page.
If you think from user point of view, why after entering the new password in login page user is redirected to password recovery page. Either it should redirect to change password page or to custom page.
To avoid this confusion, you can handle onlogging event of Login control and write the following code,
void Login1_LoggedIn(object sender, EventArgs e)
{
if (Request.QueryString["ReturnUrl"] != null && Request.QueryString["ReturnUrl"].IndexOf("PwdRecovery.aspx") >= 0)
{
Response.Redirect("~/Career/Secure/ChangePwd.aspx");
}
}
Basically, here am just checking if the returnUrl property is point to PasswordRecovery page, then I will redirect the user to ChangePassword page. Similarly you can redirect to any page you want.
Note: Login Control uses ReturnUrl API to redirect the user after login to the original page from where user came.
In my last blog i blogged about customizing email content sent using membership controls.Other important customization is auto-generating passwords to validate the registered user account. By default, CreateUserWizard allows user to enter the email, password and security question and answer. However, this way, you can’t validate the user email id, so you might want to sent the password through mail to the registered user email id. By this way, you can validate the registered use email account.
For this, CreateUserWizard Control provides a feature called “AutoGeneratePassword”. If you set this property to true, CreateUserWizard will auto generate the password for user and sent it to registered email account. Email sent to the user can be customized as explained in my previous blog
Other feature you want in CreateUserWizard is validation for unique email. By default, membership control does not validate the email for uniqueness. You can enable this validation in membership provider setting in .config file.
<membership>
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add connectionStringName="LocalSqlServer" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/"
requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10" passwordStrengthRegularExpression=""
name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
providers>
membership>
RequiresUniqueEmail property is set to true in the above settings to enable unique email validation.
Last one week, I was working in a little project were I used membership controls extensively. Main advantage of membership controls is productivity i.e. it reduces the development time a lot.
In addition to productivity advantage, these membership controls are fully customizable. This is also a main reason for these controls to be used in various applications.
In the project, I have customized the membership controls at many places. Therefore, I am planning to write a set of blogs to explain what are the customization options in membership controls I have used.
In this blog, I am going to talk about customization of e-mail content, which is sent from membership controls. The membership controls that sent email to the user are passwordrecovery control and createuserwizard control. I will talk about when e-mail is sent in createuserwizard control and how to enable this feature in my next blog.
Passwordrecovery control will send an email with new password when user request for password reset. By default, Passwordrecovery control sent an email with default content, which might not include your company name or your company website link.
Mostly you might want to customize the email sent to the customer. Passwordrecovery control provide an option for this through MailDefinition property, it has following properties
- BodyFileName – this property can be used to specify the text file path which contains the conent of the e-mail body.
- Subject – to specify the subject for the email
- From – this property is used to specify from address.
- CC – to specify Carbon Copy email.
- IsBodyHTML – to specify whether body is sent as html.
- Priority – to set the priority of the mail.
Using these properties, you can customize email content. However, the next question, which comes to our mind, is how to add information about user in the mail. For example, you might want to add username and password detail in the mail. By default membership control provides following placeholders,
1. <% UserName %> - this placeholder will be replaced with username when the mail is sent to the user
2. <% Password %> - this placeholder will be replaced with password when themail is sent to the user.
These placeholders can be used in the text file, which you are specifying in the BodyFileName property of the MailDefinition property.
Since only two placeholders are supported by membership controls, you might further want to customize this. For example, you might want to send email or security question or your application specific user data along with username in the mail. In that case, you can use SendMail event of the membership control to customize further, for example to send email information in the mail. You can have <%Mail%> placeholder in your BodyFileName file, and in sendingmail event, you can replace this placeholder with the email of the user.
void PasswordRecovery1_SendingMail(object sender, MailMessageEventArgs e)
{
MembershipUser user = Membership.GetUser(User.Identity.Name);
e.Message.Body = e.Message.Body.Replace("<%Mail%>", user.Email);
}
Note : Using membership API, you can get the email Id of the user.
If you are in US and if you are looking for a change, TechSmarts is looking for smart people to join them. Current opening are in following areas,
- SAP - All modules
- Microsoft .NET Developers
- Java Developers
- Oracle Developers
- Oracle DBAs
- UNIX System Administrators
- Network Engineers
- Technical Leads
- Project Managers
- Business Analysts
- QA Leads
If your friend is looking for a change, you can refer your friend for this job. If your friend works for more than 6 months, you can get a good referral fee. Not bad for helping out a colleague or friend.
Microsoft has released a set of online resources for VSTS. They have online training resources for various levels from New to Intermediate to Expert level, its a one stop resource for your VSTS learning’s
Check out "Expand your opportunities" for more details...
Check out this cool add-in "Cool Commands". It does very simple tasks, but all those are all very useful tasks. Here are few tasks which I liked it,
- Collapse All Projects - I don’t know how Microsoft didn’t provide this option in solution explorer. Anyway this add-in provides, so not a problem
- Resolve Project References - It will automatically resolve the project reference and include those projects in your solution. Check out the link for more details
- Copy/Paste References - You can copy and past reference between projects like copy/paste text.
- Demo Font - Ultimate (very useful during session)
- Wheel Font Sizing - It didn’t work for me... I need to figure it out...
- Visual Studio Prompt from here
- Open project folder
- Build current Project from code file only.
It's free, so dont wait for anything else. Just download and use it. It will surely helps everyone who lives with VS2005.
Microsoft has released Visual Studio Team Foundation Server MSSCCI Provider. With this provider, you can access Team Foundation Server Version Control features from VS.NET 2003 and Visual Studio 6.0. I feel this is the best move from Microsoft in pushing VSTS to all the developers as most of the developers are still using Visual Studio and VS.NET 2003. But currently, this supports only version control features only along with support for work item integration to associate work items with change sets, and check-in notes.
The community UG launch of VS2005 and SQL 2005 is happening in Bangalore this weekend (7th and 8th Jan). If you are in and around bangalore on 1st week of Jan, then come and join us in the launch. Here is the agenda for the same,
Day 1
09:00 - 09:30 Registration Starts and Get a chance to talk with the experts
09:30 - 10:15 Intro to VSTS
10:15 - 11:30 VSTS Team Architect
12:00 - 01:15 VSTS Team Developer
2:15 - 4:15 Smart client and ASP.NET 2.0
4:30 - 5:45 VSTS Team Test
Day 2
09:00 - 09:30 Get a chance to talk with the experts
09:30 - 11:30 SQL Server 2005 for BI (SSAS + SSIS + SSRS)
11:45 - 01:15 SQL Server 2005 for Programmers
2:15 - 3:15 SQL Server 2005 for Customers (Exploring High Availability)
3:15 - 4:15 SQL Server 2005 for DBA (Security Features)
4:30 - 5:30 SQL Server 2005 for Performance Tuning (New performance tools)
For registration and to know more about launch, check out Bangalore .NET User Group.
If you are interested in Disk Output Cache feature of ASP.NET 2.0 which was removed after beta2 bits, it is available now as a separate download (no support from Microsoft). You can download it from this blog.
For more details about Disk Ouput Cache, check out my previous blog entry on the same.
I just came across Visual Studio Team System TechNotes site. TechNotes are short, focused technical articles that explain a specific concept or walk through a particular scenario. TechNotes are intended to supplement the product documentation and technical articles.Very useful short notes on VSTS concepts.
Check it out, it has very useful collections of notes on VSTS.
Channel9 has published a wiki on ASP.NET 2.0 Security FAQs. Lots of useful FAQs with answers, check it out.
Today (30/11/05), i am hosting a webchat on Visual Studio Team System: Team edition in MSDN India Expert Chat. More details about this chat are here,
Introduction to Visual Studio Team System: Team Test
Visual Studio 2005 Team Test Edition introduces a suite of new test tools. Team Edition for Testers lets you create, manage, edit, and run tests, and also obtain and store test results. Several test types, including unit, Web, load, and manual tests, in addition to the measurement of code coverage, are integrated into Visual Studio.
Join this webchat, to discuss about these new Visual Studio 2005 Team Edition test tools.
Time : November 30, 2005 - 5.00 pm to 6.00 pm IST
If you are free during this time, come and join the chat. To join this chat, click this url
Here are the few resources which will be useful for you to start with Team Edition of VSTS.
Default homepage for VSTS:Team Edition
http://msdn.microsoft.com/vstudio/teamsystem/tester/default.aspx
Unit test
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/utfwvs05tmsys.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vstsunittesting.asp
Web test
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vs05tmsyswebtst.asp
Web test and load test
http://msdn.microsoft.com/vstudio/teamsystem/reference/develop_test/default.aspx?pull=/library/en-us/dnvs05/html/vsteamtest.asp
Extensibility Kit
http://www.vsipdev.com/downloads/
Microsoft India conducted a contest for developers - Microsoft Technology Adaptor Challenge. To participate in this contest, you need to create a application that demonstrates the capability of Visual Studio 2005/.NET Framework 2.0 [Whidbey]. I have created an application "Virtual Web Application" for this contest.
Highlights of this application are,
- This is a virtual web application. There won’t be any web pages for this application in the application folder. Template pages and Generic Page like LoginPage, MasterPage are stored in a database and other pages are dynamically generated.
- This is a dynamic web application. Most of the web pages for this application are created dynamically. Web pages are created from template pages.
- It is fully configurable, i.e. Web pages that are available for this site and the contents for each web page can be configured in an xml file.
To download the source code of this application and to know more about this application, check out this article.
P.S. With this blog entry, I am breaking my long silence. Here afterwards, you can expect frequent blog entries from me.