Sunday 6 November 2011

Node.js


The JavaScript web server framework.

You can re-use existing Javascript skill to write a server side application.

What does that mean to me if I am a SharePoint/ .Net Web developer?

You can write a quick and easy JavsScript application to access backend system, such as MS SQL, MySQL and many more. It is crossed platform!!

Or

You are looking a highly efficient and performance for concurrent application.

Do I need to write everything by myself?

Not really, that is many modules can plug into your application. Visit this for further details


Debugging?

Build-in debug framework  or third-party tools, e.g.  Node GDB or Node Inspector.

So, what is the benefits of using the Node.js?
  • No extra language to learn but Node’s syntax.
  • Scalable and parallel infrastructure.
  • Lightweight and memory efficient.
  • Crossed platform

To find out more about this great stuff

Saturday 27 August 2011

Windows 7 with ReadyBoost - Perfect for Virtualization Development.


That is one cool feature in Windows 7 which not many people are aware (actually it existed in Windows Vista), which can improve the performance of VMs and host machine with fraction of cost. Let's me introduce it to you, ReadyBoost. Let me get the quote from Microsoft how they describe this feature.

"Want a simple way to speed up your PC?

Just plug in a USB flash drive or card and let ReadyBoost borrow it. ReadyBoost is designed to help when your PC's memory is running low. Low memory can make your computer sluggish because Windows, which needs a place to stash data, turns to the hard drive. Flash memory offers a speedier alternative.

ReadyBoost works with most flash storage devices. In Windows 7, it can handle more flash memory and even multiple devices—up to eight, for a maximum 256 gigabytes (GB) of additional memory.
"

I am using Windows 7 with ReadyBoost for three Windows Server 2008R2 machines (AD, SQL and SP2010) which configured for SharePoint 2010 and Fast Search. The outcome is very satisfied from results I done in PassMark benchmarking tool.

Here configuration details.
  • 8GB DDR3 Memory
  • i7 processor
  • ReadyBoost (32GB SSD with ESATA)
  • 7200RPM HDD
  • USB 2 for VMs

This is the result of SP2010 running without ReadyBoosts in host machine. The VM and host system response are very sluggish and in not workable condition.




After activated ReadyBoosts in host machine, the result has obvious improved and overall performance (VM and host) is  noticeable.



Of course experience/result may be vary depend on running applications or hardware configuration, but strongly recommended to try it out if you have any spare flash drive or SSD.

Wednesday 3 August 2011

Ajax Toolkit's TabPanel/UpdatePanel and ReportViewer - panelCreated error

You may receive the error when using the Ajax toolkit and ReportViewer on the page, e.g.


This is because the Ajax control is conflict with the ReportViewer, it will works if you using the .Net ScriptManager. But because you need the ToolkitScriptManager for your Ajax controld, therefore this is not an option.

But that is work around/fix for this error, which is just simply change your ToolkitScriptManager to ScriptMode="Release" and it will work like charm.

Tuesday 5 July 2011

Good tips for Developing SharePoint 2010 projects

1) All customisation have to be deployable and repeatable, such as using WSPs and features to deploy solution to SharePoint environment. NEVER do manual deployments or fixes, such as create a custom list, modify config file, update SharePoint site. As all these can be done in SharePoint API and scripted in most cases.

2) Implement automate deployment process to reduce possible human error, such as site creation and site configuration. This can be done by PowerShell, batch file, wsp or custom application. Example write a bespoke console application to export site hierarchy and contents, when deploy solution the bespoke application should reuse to create whole SharePoint site.

3) Make sure all SharePoint Services Objects were disposed correctly to avoid memory leak. Reference site http://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx. And the tool to check objects were disposed correctly, http://archive.msdn.microsoft.com/SPDisposeCheck.

4) Do not try to customise any SharePoint site definition or template, all design and customization should be done by feature stapling or web provisioning event. Any customisation on SharePoint component is bad and not promised to compatible in future SharePoint release.

5) Custom coding should be done in Sandbox solution and this is because:
a. Better resource monitoring and controlling.
b. Compatible with Office 365.
c. Isolated, better security for farm.
http://msdn.microsoft.com/en-us/magazine/ee335711.aspx

6) Minified JS and CSS files, also consolidate them into two files to improve SharePoint rendering performance.

7) Using Model-View-Presenter (MVP), Model-View-Controller (MVC) or similar layer separation pattern to speed up development process. Using mocking framework to perform unit testing on SharePoint object. E.g TypeMock or Nmock. In my opinion the unit test should cover basic function tests with looses code, this will prevent chances to break test classes when code refactoring.

8) Make sure source and destination server are in same version and packages when using the SharePoint's content export/import. Such as same language pack, service pack, hotfixes.

9) Test, test and test before check-in into source control. Developer has full responsibility when check-in codes, he/she must fully tested their code and check-in with meaning comments.

10) Try to use the out-of-box features as much as possible, unless you have very strong reason not to do so otherwise developer should avoid using any custom database, codes or third parties components.

Wednesday 4 May 2011

SharePoint 2010 Version Numbers with Cumulative Update

Please find the SharePoint 2010 version numbers table listed at below.


SP2010
(with download links)
Version
KB articles
public Beta (rel. 11/2009)
14.0.4536.1000
n/a
RTM (04/2010)
14.0.4763.1000
n/a
14.0.5114.5003
14.0.5123.5000
October CU 10
14.0.5128.5000
December. CU 10
14.0.5130.5002
14.0.5136.5002
14.0.5138.5001
The SharePoint 2010 SP1 is around the corner, Microsoft should release it sometime in June/July.

Thursday 28 April 2011

SharePoint 2010 - Form Based Authentication with Claims Authentication Part 1/2

Here the summary of how-to configure form based authentication in SharePoint 2010.
  1. Install and configure membership provider, e.g sqlmembershipprovider.
  2. Create a new web application with claim authentication, alternatively update existing web application from basic to claims based.
  3. Configure the SharePoint IIS instance to consume membership provider.
  • (optional) create a custom login page (I will list it in part 2)

I am strongly suggest you try all these steps in test or dev environment first to avoid any unhappy result. :)

Install and configure membership provide
You can choose any membership provider for FBA and for simplicity I had picked SQL membership provider for my demonstration.

First of all, you need a SQL database and it can be Express or full version.

Run the aspnet_regsql.exe execute file from this location.

C:\Windows\Microsoft.NET\Framework64\v2.0.50727 (please note the drive may be varies)



Then select



Point the application to right database and any necessary username and password.



Click finish to complete the configuration



Create or update the Web Application

To create a new web application, go to Central Admin -> Application Management -> Web Application -> Create New Web Application.

Select Claims Based Authentication

(Note: You need the Claims Based Authentication for FBA)




Fill the FBA details  and you need these information in later stage, feel free to change it but make sure you write it down.




And fill the rest details of web application and then select "OK".


For update existing web application to Claims based, run this PowerShell script.

$webapp = Get-SPWebApplication "http://yourwebapplicationurl"
$webapp.UseClaimsAuthentication = "True"
$webapp.Update()


Configure SharePoint IIS instance to use the membership provider

Once above two steps are completed then we can start to configure SP instance in IIS to talk to our SQL memberhsip provider.

Go to Administrative Tools -> Internet Information Services (IIS) Manager.

Select your web instance from tree menu under Site



The first step you need to setup a connection strings first, select Connection String then Add.

Your connection string should be look like this


The server name is the server which we were installed membership provider database to, the database has to same as value put down in previous step.

 GO back to your IIS website root and select Providers.

Select .Net Roles from dropdown and click on Add.



Remember we put down the values in SharePoint Central Adminstration for Role manager in previous step? Now we have to enter it again in Name field and details as below.

Type: SQLRolePRovider
Name: FBARole
ConnectionStringName: FBACon
ApplicationName: /



Once finished then select .Net Users from feature dropdown and select Add.

Fill these values in new window opened.
Type: SQLMembershipProvider
Name: FBA
ConnectionStringName: FBACon
ApplicationName: /



Same steps have to apply on Central Adminstration v4  website and SecurityTokenServiceApplication web service.



Once all set, go to website and you should expect to see screenshot below if all went smoothly.



Select Windows to auto logon if you current user has permission.

You may ask "what if I don't want the login selection box appear when user visit SharePoint site?".

Then you can extend your SharePoint site and have Windows (Site A) and Form authentication (Site B) side-by-side, for those need access to Windows authentication they can access SharePoint site A and the rest for Site B.

Wednesday 23 March 2011

SharePoint 2010 - Improve the Public Website Performance

This is important for those who working on public SharePoint site the performance impact of default templates, such as default.master and nightdaddy.master masterpage page file.

Out of the box the SharePoint inject a lot of javascript files and controls for various purpose, like page UI functionalities or backward compatible. E.g corev4.js and SharePointWebControls:UIVerisonedContent.

These additional JS files or components were generated huge amount of overhead when loading a page, see the comparison at below.



That is about 4 times smaller (22.36KB and 80.25KB) than out-of-the-box template, some more the customized template (removed edit scripts and control) was consisted more images and content query webpart compare to standard but empty page.

So my recommendation for public website when using the SharePoint.
  • Remove the SharePoint script files from masterpage if you not need them, such as <SharePoint:ScriptLink language="javascript" name="core.js" defer="true" runat="server"/>. Only inject those scripts when in edit mode by using PublishingWebControls:EditModePanel.
  • Remove SharePoint editing stylesheets, such as speditingstyle.css, edit-mode-21.css, webtagging.css, wpeditmodev4.css and forms.css. Inject them by using the Editmodepanel.
  • Remove the controls from masterpage or page layouts, not to hide or disable them. As system still generate but hide them by style.

Monday 7 February 2011

Migrate SharePoint contents to another SharePoint Environment

Why we need deploy contents to another SharePoint site when it is accessible to everyone over the web? This is because in some cases the SharePoint environment has been setup in multiple location or the contents have to be kept in multiple isolated stages. Example:
  • Multiple farms configuration with isolated network or limited network bandwidth within farms. Speed up the response time by deploy contents locally.
  • Staging/production environment, staging for internal and production for public (Internet accessible)
  • Fail-over environment for SharePoint.
  • And etc.

There are number of ways which allow you to deploy contents from SharePoint to another SharePoint environment, but today I just want to show you the approaches I had used most (free) and the advantage and disadvantage.

Here the approach for content deployment on SharePoint.


Content deployment is a feature of SharePoint Server which allow you to deploy content from source site collections to another site collection. 

Advantage
  • Free and system aware feature.
  • Support schedule deployment.
  • Support massive data deployment, but it depend on network connectivity.

Disadvantage
  • No library or item level deployment.
  • Very specific when setting up the deployment destination, e.g. the destination site has to be blank or empty site for initial deployment.


The third party migration tool which supports site, web, library and item deployment.

Advantage
  • Drag and drop UI for content migration, support site, web, library and item deployment.
  • Free but with limitation. (see disadvantage)
  • Crossed platform supported, WSS3.0, SP2007 and SP2010.
Disadvantage
  • 30GB limitation for deployment.
  • The service application has to be installed on source and destination server.
  • No scheduler.

Wednesday 5 January 2011

Recommendation of Hardware Specification for SharePoint/Fast Search Development

A lot of people asking me about what sort of hardware specification for my SharePoint environment when I am doing testing or development, or what sort of hardware they need when develop SharePoint project in laptop and etc.



In past, I had done number of projects which involved of multi-servers farm configuration, such as Fast Search for SharePoint, SharePoint staging to production deployment or multiple SharePoint web front-end server. Therefore I needs a decent machine at least can run multiple VMs and the same time without too much compromised on portability and performance.


I had done my research on Internet and found out there are not many laptops meet my criteria (year 2010) but with big bucks. Hereafter, I bought a Sony F series laptop with external Solid State (SSD) hard-disk and end result is brilliant!!! I was running three VMs at the same time without any lagging or unresponsive click, the environment consisted of Windows Server 2008R2, Active Directory, SQL 2008R2, SharePoint 2010 Ent, Fast Search for SharePoint and Visual Studio 2010.
Here the details those servers running on laptop:
Server 1 – External SSD
Windows Server 2008R2
Active Directory
384 Memory

Server 2 – External SSD
Windows Server 2008R2
MS SQL 2008R2
Fast Search for SharePoint
3GB memory

Server 3 – Internal HD
Windows Server 2008R2
SharePoint 2010 Enterprise
Visual Studio 2010
3GB memory

As you can see on above configuration it is resource intensive environment on laptop, but everything is running smoothly although I only allocated 3GB memory for Fast and SharePoint and 384MB for AD.
And let me explain why server will running slow when running multiple servers on laptop or desktop,
  1. High CPU usage with long queuing time, system is received a lot of request from users/other servers but cannot complete them on time.
  2. Server’s memory is running low and the system is swapping page files on hard disk, at the same time other applications are access files on hard disk. It causing hard disk has very high activity and take long time read/write file.
Nowadays, most desktop/laptop equipped with very decent cpu, such as Intel i3, i5, i7 or AMD qual/six cores therefore issue number one should not causing too much problem. But issue number two which low on memory for most laptop or desktop, laptop beyond 8GB will be expensive and desktop’s memory is cheaper but not so portable compare to desktop if you development to be mobile. Even you have plenty of memory but running all server on same mechanical hard disk also will causing some I/O bottleneck due to low Input/Output Per Second (IOPS).
The issue can be addressed easily with separate SSD hard disk, this also cheaper compare to get super-duper machine. This is because the SSD gives better performance compare to normal hard disk, like transfer speed and random access time. The OCz Vertex 2 SSD featured with Read=285MB, write=275MB and 50,000 IOPS. The servers allocated with low memory but if it installed on SSD it will not affected that much even high on swapping page files and disk activities. The SSD works similar to memory as low on access time (less waiting time) and high transfer rate. In order to fully utilise performance of the SSD hard disk the ESATA, FireWire or USB3.0 is recommended, anything slower than those will not see significant improvement over SSD.
I had attached my laptop specification for your reference, all these cost less than GBP 1,700 (year 2010)

The laptop specification:
Sony F-Series with 16.4 inches screen.
Windows 7 64 bits
Vmware Workstation
Intel i7 CPU 740 with Qual Cores
8GB of memory
500GB internal hard disk with 7200rpm
Geforce GT 330M 1024 MB graphic card
ESATA OCZ 2.5 Vertex 2 SSD hard disk