SharePoint 2013 apps are one of the coolest feature which everyone wants
to have a look into it.The most important change in SharePoint 2013 for developers
is the introduction of SharePoint apps. An app for SharePoint is a small and
isolated application that provides a specific bit of functionality. SharePoint
apps can and have to be added to or removed from a site by the site
owner. Apps have their own, isolated URLs, which are separate from the
URLs of the sites where the app is being deployed to and where the app is being
used. In order to provide isolation apps run in their own domain, instead of in
the same domain name as your farm. Using a different domain name for apps helps
prevent cross-site scripting between apps and SharePoint sites.
Each installation of an app has its own unique URL within the app domain. The app’s URL is based on a template “http://[app prefix][app ID].[app domain]/[relative site url]/[app name]. When you add an app to a site, a subweb of that site is created to host the app content. This subweb is not visible on the Site Contents page though.
Each installation of an app has its own unique URL within the app domain. The app’s URL is based on a template “http://[app prefix][app ID].[app domain]/[relative site url]/[app name]. When you add an app to a site, a subweb of that site is created to host the app content. This subweb is not visible on the Site Contents page though.
Because apps run in their own app domain you will have to configure
Domain Name Services (DNS) in your environment in order to be able to host
apps.
Configure an environment for apps for
SharePoint (SharePoint 2013).
Before you begin
Before you begin
ü You
must purchase a domain name from a domain name provider for your apps, for
example: polasoft.com.
ü You
must be a member of the Farm Administrators group to perform the steps in this
article. For some steps, you must also be a domain administrator on the domain
controller.
ü Confirm
that the SharePoint Administration (spadmin) and SharePoint Timer (sptimer)
services are running.
ü To
verify this, click Start, point to Administrative Tools, and then
click Services. In the Services list, verify that the SharePoint
Administration and SharePoint Timerservices are running.
You
must configure a new name in Domain Name Services (DNS) to host the apps. To
help improve security, the domain name should not be a subdomain of the domain
that hosts the SharePoint sites. For example, if the SharePoint sites are at polasoft.com,
consider polasoftApps.com instead of App.Polasoft.com as the domain name. When
an app is provisioned, it provisions a unique DNS domain name (for example,
Apps-12345678ABCDEF.polasoftApps.com, where 12345678ABCDEF is a unique
identifier for the app).
To create a forward lookup zone for
the app domain name
- Verify that the user account
that performs this procedure is a domain.administrator on the domain
controller.
- Click Start, point to Administrative
Tools, and then click DNS.
- In DNS Manager, right-click Forward
Lookup Zones, and then click New Zone….
- In the New Zone Wizard,
click Next.
- In the Zone Type page,
accept the default of Primary zone, and then click Next.
- In the Active Directory
Zone Replication Scope page, select the appropriate replication
method for your environment (the default is To all DNS servers in
this domain), and then click Next.
- In the Zone Name page,
in the Zone name box type the name for your new app domain name
(for example, polasoftApps.com), and then click Next.
- The New Zone Wizard shows
the new domain name for apps.On the Dynamic Update page, select
the appropriate type of dynamic updates for your environment (the default
is Do not allow dynamic updates), and then clickNext.
- On the Completing the
New Zone Wizard page, review the settings, and then click Finish.
To create a wildcard Alias (CNAME)
record for the new domain name
- Verify that the user account
that performs this procedure is a domain administrator on the domain
controller.
- In DNS Manager, under
Forward Lookup Zones, right-click the new app domain name, and then click New
Alias (CNAME).
- In the New Resource Record
dialog box, in the Alias name (uses parent domain if left blank) box,
type *.
The Fully qualified
domain name (FQDN) box displays *. followed by the domain name that you created
for apps. For example, *.polasoftApps.com or *.polasoft-Apps.com.
- Next to the Fully
qualified domain name (FQDN) for target host box, type the FQDN of
the server that hosts the SharePoint sites.
For example,
SharePoint.polasoft.com.
Or:
- Next to the Fully
qualified domain name (FQDN) for target host box, click Browse and
navigate to the Forward Lookup Zone for the domain that hosts the
SharePoint sites.
For example, polasoft.com.
- And then navigate to the
record that points to the server that hosts the SharePoint site.
For example,
SharePoint.
- Click OK.
Verify the new domain name
- Verify that the user account
that is performing this procedure is a domain administrator on the domain
controller.
- Click Start, and then
click Command Prompt.
- At the command prompt, type ping followed
by a subdomain of the domain that you created, and then press ENTER.
For example, ping
Apps-12345678ABCDEF.polasoftapps.com
If the ping command
returns the correct IP address, then your wildcard for the domain name was
configured successfully.
Configure the Subscription Settings
and App management service application
To configure these services, you first start the services in Central
Administration. After the services are started, you use Windows PowerShell to
create the Subscription Settings service application, and then use either
Windows PowerShell or Central Administration to create the App Management
service application.
To start the Subscription Settings and App Management services in
Central Administration
- Verify that you are a member
of the farm administrators group in Central Administration.
- In SharePoint 2013 Central
Administration, click System Settings.
- On the System Settings page,
under Servers, click Manage services on server.
- On the Services on
Server page, next to App Management Service, click Start.
- On the Services on
Server page, next to Microsoft SharePoint Foundation Subscription
Settings Service, click Start.
- Verify that the App
Management and Microsoft SharePoint Foundation Subscription Settings services
are running. The following illustration shows the Services on Server page
where you can verify that the App Management and Subscription Settings
services are running.
Services on Server
showing the App Management and Subscription Settings services running.
Configure the
Subscription Settings service application by using Windows PowerShell
- Verify that you have the
following memberships:
- securityadmin fixed
server role on the SQL Server instance.
- db_owner fixed
database role on all databases that are to be updated.
- Administrators group on the
server on which you are running the Windows PowerShell cmdlets.
An administrator
can use the Add-SPShellAdmin cmdlet to grant permissions to use
SharePoint 15 Products cmdlets.
Create the App Management Service and
Subscription Service application using the below script
$account = Get-SPManagedAccount "farm account>>" # ex: polasoft\administrator
$appPoolAppSvc = New-SPServiceApplicationPool -Name AppServiceAppPool -Account $account
$appAppSvc = New-SPAppManagementServiceApplication -ApplicationPool $appPoolAppSvc -Name AppServiceApp -DatabaseName Appmanagement_Service_DB
$proxyAppSvc = New-SPAppManagementServiceApplicationProxy -ServiceApplication $appAppSvc
$appSubSvc = New-SPSubscriptionSettingsServiceApplication –ApplicationPool $appPoolAppSvc –Name SettingsServiceApp –DatabaseName SubscriptionSettings_Service_DB
$proxySubSvc = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $appSubSvc
Configuring SharePoint to use App domain:
To configure the Apps for SharePoint. Go to an Apps
section in Central admin.
Click on Configure Apps URLs and then enter the App
domain you set up. In my example I am using same domain where my SharePoint
running.
In addition, you
need to decide on an App prefix that all App DNS names will get. Anything will
do if you follow the description of Characters allowed.
For each instance
of an App you install and activate, SharePoint creates a unique URL to access
the App. The unique URL starts with the prefix you choose followed by a unique
identifier set by SharePoint and Finally the App domain you have created.
Click ok.
We are one step
away to use Apps and the SharePoint Store.
For that we need to
create an App catalog site collection to hold our Apps. When you add an App by
uploading an App package, this is where you will do that.
From the Apps
section of Central Administration, select Manage App Catalog. Leave the Create
a new app catalog site choice selected and hit OK to advance to the Create App
Catalog step.
Enter the Title, website address and primary site
collection administrator details. It is similar like creation of site
collection. Once it got created it will be redirected to “Manage App Catalog”
section.
You can see in the below
screens App catalog has been created.
Click on the site URL to access the App catalog.
Why An App Store?
Microsoft
is introducing this model for a couple of different reasons, the first of which
is technical. SharePoint is most effective when it can be customized to a
company’s particular needs. SharePoint offers a number of out-of-the-box,
‘zero-code’ customizations, but these can only cover a subset of the almost endless
specific requirement of businesses around the world. Custom-coded solutions
are, therefore, extremely popular and highly effective. Cloud based
environments, however, are multi-tenant. This can present a huge problem
because poorly-written or malicious custom code can quickly bring a server to
its knees, and all of the tenants housed on that server are then adversely
affected by the outage. As such, the SharePoint App Model moves all custom code
execution off the server and relies on either client-side execution or
execution on an external server.
The
second reason is financial. In addition to charging companies to host their
SharePoint sites on Office 365, Microsoft also opened the Office Marketplace.
The Office Marketplace is very similar to the App Store on an iPhone or iPad,
except that, instead of buying apps for a mobile device, you can buy apps for
your SharePoint sites. Imagine a small company that needs an IT Support Ticket
System, a Time-Off Request Manager, a HR Forms library, or any other application
that can help them accomplish their goals. A SharePoint App that helps them in
very specific areas can be up and running on their Office 365 instance with a
few clicks and a couple of bucks spent. Of course, Microsoft will skim a bit
off the top just as Apple or Google do in their Marketplaces, but if you are a
developer with an awesome business app then this is a small price to pay for
the exposure.
The
final reason is usability. Microsoft cannot build a SharePoint app for every
possible niche business scenario, so the Marketplace is a way to let developers
fill the void. Ultimately, it makes Office 365 more useful to businesses and
provides a great deal of value to Microsoft in terms of marketability of Office
365 as a whole.
At
any rate, an individual SharePoint 2013 developer definitely has the potential
to make a small fortune if they can build an app and position it accordingly.
Why App Model?
In SharePoint 2010, with farm solutions, custom code was deployed into server. All the things will deployed to the server means an IT consultant with console access would need to upload the solution package to the server. So that the Access must be required to deploy the solution in farm level. This will only works On Prem environment. It will not suitable for hosted deployment. Both Farm and Sand Boxed solutions developer need to have full understanding on the server and command on sever API.Farm solutions are not suitable for cloud environment. We can use sand boxed solution on cloud environment, but there is lot of limitations put users off from it. For example we cannot call External Web services from sand boxed solutions and we can only access limited set of SharePoint API's.
App model is mainly designed for cloud hosting. It will not use server side code. It will use only client script like java script or jQuery, and will work on top of share point framework. So that it will keep environment light. you can easily migrate the apps and easily add the apps from app store.
In SharePoint 2010, with farm solutions, custom code was deployed into server. All the things will deployed to the server means an IT consultant with console access would need to upload the solution package to the server. So that the Access must be required to deploy the solution in farm level. This will only works On Prem environment. It will not suitable for hosted deployment. Both Farm and Sand Boxed solutions developer need to have full understanding on the server and command on sever API.Farm solutions are not suitable for cloud environment. We can use sand boxed solution on cloud environment, but there is lot of limitations put users off from it. For example we cannot call External Web services from sand boxed solutions and we can only access limited set of SharePoint API's.
App model is mainly designed for cloud hosting. It will not use server side code. It will use only client script like java script or jQuery, and will work on top of share point framework. So that it will keep environment light. you can easily migrate the apps and easily add the apps from app store.
Key points about SharePoint Apps
Everything is in a SharePoint site is now an app
Yes, everything in a SharePoint site is an
app. This includes lists and libraries. Though the actual implementation of
lists and libraries has not changed. They are referred in user interface as
apps, to create a more unified experience. For e.g. if you would like to create
a new document library, you need to create an app and pick document library and
then name it.
No custom code on SharePoint server
As per the new SharePoint 2013 App Model,
SharePoint apps do not live in SharePoint, rather they execute within a browser
client, or in non-SharePoint server such as IIS server or in cloud server such
as Windows Azure. SharePoint apps are granted permissions to get back into
SharePoint sites via OAuth and communicate with SharePoint via REST/CSOM.
Easier to upgrade to future versions of SharePoint
This is possible because the apps are running
against client side service
Reduces the ramp-up for those developing apps
Developers building SharePoint apps don't need to
be familiar with SharePoint specific things e.g. object model. If they
want to work with data from SharePoint, then they have the option to leverage
some of the standard services or CSOM.
Leverage hosting platform features in new apps
If you develop an app which is going to run in
another hosted platform (like Windows Azure OR non-SharePoint server such as
IIS server OR any other infrastructure) but it's going to use SharePoint UI
such that end user feels that he is in SharePoint and the app looks like
SharePoint. However, since the app is running in another environment like
Windows Azure, then you can use the capabilities of hosting platform i.e.
Windows Azure, which you normally cannot do in SharePoint.
This enables taking SharePoint apps to different
levels - further than what can be done with farm/ sandboxed solutions
Provides additional approach for development
The app model does not replace the solution based
approach of development/deployment, it is an additional option. Thus, in
SharePoint 2013 for development, we can use either of the following approach:
SharePoint Apps
Fully trusted solutions
Sandboxed solutions
Apps for SharePoint hosting options
The SharePoint 2013 app model provides two broad
approaches to hosting your apps for SharePoint:
SharePoint-hosted
Cloud-hosted
Within the cloud-hosted approach there are two important subcategories:
Provider-hosted
Auto-hosted
These are not exclusive categories: An app for SharePoint can have both SharePoint-hosted and remotelyhosted components. Each approach has key features you should consider when deciding how to host your apps.
SharePoint Hosted App
Figure 1: SharePoint-hosted apps
SharePoint hosted app runs within the context of
SharePoint, but there is no server side code. Any kind of logic is going to run
in the client side using JavaScript. You can leverage some of the SharePoint
artefacts like lists, document libraries, pages without code behind and out of
the box web parts. SharePoint-hosted apps for SharePoint are installed on
a SharePoint 2013 website, called the host web, and that have their
resources hosted on an isolated subsite of a host web, called the app web.
Cloud-hosted apps
Figure 2: Cloud-hosted apps
In cloud hosted apps, the logic resides outside of
SharePoint. The logic can reside either on IIS server OR Windows Azure OR some
other cloud solution and it is going to talk to SharePoint using client side
object model (CSOM) or REST services and have to be granted permission to
SharePoint using OAuth.
Within this category there are two types of apps:
Provider hosted
Provider-hosted apps for SharePoint includes
components that are deployed and hosted outside of the SharePoint farm, usually
by the developer. The provider-hosted app for SharePoint interacts with a
SharePoint 2013 site but also uses resources and services that reside on the
remote site.This approach enables you to use any hosting service you want, but
it places the responsibility for creating the installation, upgrade, and
uninstallation logic of the remote components on the developer.
Auto-hosted
Apps that include a Windows Azure Web Site, and
possibly also a SQL Azure database, that are automatically installed when the
app is installed. The Windows Azure web site and optional SQL Azure database
can be included in app package, such that when you provision the app, it
automatically creates Windows Azure web site and optional SQL Azure database in
Azure. If you are using auto hosting for your app, each installation of the app
provisions its own Windows Azure web site. The Windows Azure web sites
infrastructure handles load balancing, multi-tenancy, and other important
maintenance tasks for you.
Scope of an App
There are two choices to build the app scope
There are two choices to build the app scope
Web Scoped: Web
scoped apps will live only with in the app web.
Tenant scoped: we
can publish the app to the entire company or to the public scope.
Availability of Apps :
Just like Mobile apps we have a market for share point apps and we can acquire or buy the apps from app market. There is a private market place for employee in corporate company. Microsoft is having market place in cloud. Developers can develop their apps and sell it through Microsoft app market. There is more chances to launch third party market places and sell the apps. This will get more spice to the app market and help boosting the competition.
Just like Mobile apps we have a market for share point apps and we can acquire or buy the apps from app market. There is a private market place for employee in corporate company. Microsoft is having market place in cloud. Developers can develop their apps and sell it through Microsoft app market. There is more chances to launch third party market places and sell the apps. This will get more spice to the app market and help boosting the competition.
App Shape and Branding
When you build SharePoint apps, one of the design
decision is how apps are going to look like and be presented to the user. To
design the user experience of the app, you need to understand the following:
App Shape
Branding
Apps for SharePoint fit seamlessly into the
SharePoint website where they are installed.
Figure 3: App Shapes option
As shown in figure above, the apps can have three
possible type of shapes:
Immersive: An app for SharePoint provides a
fully immersive experience and optionally can extend some of the existing UI,
such as in menus, or by providing embeddable parts for other pages. Immersive
apps will take entire browser experience.
App Part: App parts surface an IFrame element
that contains content from your app. Imagine these apps as the ones which
add something like a web part to the SharePoint site e.g. weather monitor app.
An App Part is nothing but a type of Web Part that is represented by the ClientWebPart class.
This kind of Web Part is essentially a wrapper for an IFrame that would host a
page of the app.
Extension App(Custom Action): You need to use
extension app when you create new actions for documents or list items. Ribbon
or context menu extensions make your app available on list items, documents, or
anywhere else a ribbon is shown. An app can add links like ribbon, custom
actions or ECB menu to the host web. When user will click on the link, user
will be redirected to the app web.
Apps Branding
Microsoft has recommended design process as well as
basic guidelines for developing quality user experiences for apps. Refer to
this link UX design for
apps in SharePoint 2013 to understand the recommended UX design
process for apps for SharePoint.
Developers are going to primarily use three
different types of branding:
App Template: The app template is the default
branding option in Visual Studio when you create an app web and pages within
that web. The app template can be used only for SharePoint-hosted ASPX pages.
The template includes the app.master master page.
Chrome Control: This is a JavaScript based object
that allows custom app to consume and import the css and stying of the hosting
parent appweb. If you’re not building SharePoint-hosted ASPX pages, but you
still want your app to fit in naturally with the host site that it is used
from, the chrome control is the right choice.
Custom Branding: If, instead of aligning to the host
site’s theme and fitting into the SharePoint site where your app is installed,
you want to use your own brand inside your app, you will have to build your
chrome from scratch. However, you should still have a "back to site"
link in the upper-left corner of the page that redirects the user back to the
site where the app is installed.
Beware of host headers:
You are now ready to deploy your apps. Because of
all this extra domain stuff though there are a few things you should know about
your web applications and site collections.
If you are using a host header for your web application apps won’t just work for that web application. Because of how the redirect for the app domain works IIS will try to resolve the app url by using the default IIS web site, which of course doesn’t work. If you want to use host headers for your web applications you have to create an extra web application that is listening on port 80 (or 443 if you are using https) and that doesn’t have a host header.
This means that you have to create a web application like you normally would. You have to make sure that you select port 80 (or 443 if you are using https) and you should not fill in a host header. Note that you have to stop the Default Web Site in IIS in order to be able to do this. The web application will use the server name as its url. The web application can be empty except for a root site collection.
If you are using a host header for your web application apps won’t just work for that web application. Because of how the redirect for the app domain works IIS will try to resolve the app url by using the default IIS web site, which of course doesn’t work. If you want to use host headers for your web applications you have to create an extra web application that is listening on port 80 (or 443 if you are using https) and that doesn’t have a host header.
This means that you have to create a web application like you normally would. You have to make sure that you select port 80 (or 443 if you are using https) and you should not fill in a host header. Note that you have to stop the Default Web Site in IIS in order to be able to do this. The web application will use the server name as its url. The web application can be empty except for a root site collection.