Friday, August 29, 2014

The substitute of farm solutions

We all know SharePoint 2013 provides "Apps mode". Microsoft encourages all developers to build "Apps" instead of classic solutions. However, there are many jobs Apps can't do. (Andrew Connell has some brilliant thoughts about that.)

In my opinion, there is one tool been seriously underestimated: PowerShell.

PowerShell helps administrators to automate jobs. It helps developers to manage SharePoint environment. Besides that, it can replace all routinely triggered customized workflows and timer jobs!

I didn't build any SharePoint Timer Job for production (but have two open source projects for fun: Simple Reminder and Workflow Timer). Comparing to a scheduled windows task (see the screenshot below), it's not easy. Really.

How about workflow or workflow activity/action? They also need SharePoint developer to build it. I can build them, but unless the business requirement is extremely complex, I prefer to build something even normal administrators can maintain and do simple modification.

In my experience, most of the business requirements are small, simple but urgent. Besides, non-software company don't want to manage the source code of hundreds of visual studio projects!

PowerShell script doesn't include any unnecessary xml or definition file. It simply focuses on business logic, which make it short and easy understand.

One of the complain about PowerShell is about the supporting tools, such as Visual Studio and ISE. There is no full intellisense during editing at the moment(Auguest 2014). Comparing to C#, the debugging is hard.

However, in my opinion, the critical issue is the lack of client side API. Like "Apps", we don't want to run PS scripts on SharePoint server. Is it possible to run the script on an application server with no SharePoint installed? Currently, CSOM and Restful API are supported, but, comparing to server object model, there are too much restriction. Actually we can only do basic read/write (CRUD) operations at client side.

That's far from enough. Any thing we can do through "server object model", we need to be able to do through "client object model".

This sounds like a balance between "security" and "functionality", and Microsoft needs to find a way to meet the ends.

[update, 2014-10-09]

To configure Task Scheduler in Failover Cluster, we can follow this one for Windows Server 2012. Only Windows Server 2012+ support "Clustered Tasks".

1 comment:

  1. Very informative post. I sometimes do presentations on SharePoint and was wondering if I could use your Print List example in my presentations and refer my audience to your website for further info.