Is Microsoft Lync Server 2010 a good fit for public-facing applications? - voicexml

The release candidate for Microsoft Lync Server 2010 (formerly known as Office Communications Server and/or Speech Server) was just made available for download. From the site:
Microsoft Lync Server 2010 now
delivers complete presence, instant
messaging, conferencing and enterprise
voice capabilities through a single,
easy-to-use interface that is
consistent across PC, browser, and
mobile device. Administrators benefit
from a single, consistent management
infrastructure, new capabilities to
increase availability, and
interoperability with existing
systems.
In coordination with this release, also available for download is the Microsoft Unified Communications Managed API 3.0 SDK (UCMA 3.0). This is the client-side .NET managed API enabling integration and extension of Lync experiences.
This is all very exciting because I would like to start building rich voice and instant messaging application with tight integration to the Microsoft technology stack and with fewer third-party dependencies (e.g. Voxeo, Nuance, IMified, etc).
However, what I am still unclear on is this: Is Microsoft Lync Server 2010 a good fit for public-facing Web sites and applications? Or is really intended for use primarily within the corporate firewall, for mostly internal applications?
I guess what I need to know is this: Can Microsoft Lync Server 2010 serve as both an internal and public-facing hosting provider for VoiceXML and IM-based applications, and scale to meet the needs of a large public-facing site with thousands or even millions of users?
Am I totally misunderstanding what Lync can/cannot, and should/should not do?

I'd like to propose another answer, 2 years on, now that Lync 2010 is fully released and being used.
Can Microsoft Lync Server 2010 serve as both an internal and
public-facing hosting provider for VoiceXML and IM-based applications,
and scale to meet the needs of a large public-facing site with
thousands or even millions of users?
Yes, absolutely.
There are lots of large-scale case studies you can reference, from the Lync Case Studies page. South Ayrshire Council support 110K users. Swisscom replaced 94 PBX units worldwide.
It's billed as a full PBX-replacement system, which includes VoiceXML for IVR-style applications. Internally, IM-based applications can be used, but these can also be access from publicly-facing websites.
Obviously, with any large-scale deployment, scale is something you have to think about, but it's something that Lync has been designed to support (along with DR, failover etc)
I wouldn't worry about scale, unless you have a unique scenario, in which case contact Microsoft directly, I'm sure they would be happy to work with you on this.

http://technet.microsoft.com/en-us/ff706687.aspx
Companies that allow employees to sign
in to Office Communications Server
remotely from the Internet can be
susceptible to denial-of-service (DoS)
and brute-force attacks. These kinds
of attacks involve guessing users’
passwords or locking users out of
their accounts when too many incorrect
password attempts are made to a valid
Active Directory user account when
password policy is enforced. Although
internal security is not compromised,
these types of attacks are disruptive
to users and use up internal server
resources. To prevent such attacks at
the edge, you can install a security
filter on the Edge Server that
monitors sign-in attempts and enforces
account lockout at the network
perimeter.
There are a number of caveats to your question on scale etc. Firstly Lync 2010 is a release candidate, not even a full release so I wouldn't bet anything on this current release - I'd wait until 2011 for a full release. Secondly it appears to be aimed at applications within the corporate firewall, so although it may scale beyond there, there is unlikely to be any developer support materials in that area for some months, if ever.
That said the Lync product at least moves away from having to register COM objects to develop against the SDK (like the previous version Office Communicator 2007) which is a step forward. The SilverLight and WPF controls SDK will make some intranet sites using Lync feel polished - but the paucity of information about simply running around the API and performing tasks that include Lync (rather than being entirely Lync) is a drawback.
EDIT
Lync is clearly COM at heart, after reflecting some of the Lync methods it becomes obvious:
This method:
public static LyncClient GetClient()
contains a call to:
private static void EnsureOI()
{
if (s_officeIntegration == null)
{
try
{
if (!IsUISuppressed() && !IsRunning())
{
throw new ClientNotFoundException("The host process is not running", null);
}
s_officeIntegration = (UCOfficeIntegration) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("...")));
}
catch (COMException exception)
{
throw GetOCOMException(exception);
}
}
}

Related

Need clarification on QuickBooks Desktop integration with Sync Manager vs Web Connector

From what I understand, Intuit is no longer allowing proprietary integrations with QuickBooks Desktop editions through the Sync Manager and only allowing apps that are put into the marketplace. Is this really the case? If so, is there a timeline for when they will start allowing this? Also, it seems that the supported objects for desktop editions is way behind those supported for the online edition. Will these be available any time soon (I.e. reports such as balance sheet, profit/loss, budget, etc.)?
I ask because we have been using the web connector for a couple of years now and it is not built for the type of use we need. To be specific, we are a franchising company that has a hosted QB solution for each of our franchises. We then pull data and pass jobs to and from our proprietary POS application through the web connector. We run into all sorts of problems with multiple web connectors being open on the same system trying to connect to different files and a host of other issues. Because of this, we are hoping that a more reliable integration can be developed through the Sync Manager.
From what I understand, Intuit is no longer allowing proprietary integrations with QuickBooks Desktop editions through the Sync Manager and only allowing apps that are put into the marketplace. Is this really the case?
Correct. QBD integration with SM and V3/V2 REST endpoints are not supported.
Apps.com is the mainly the SaaS marketplace ( mainly focused on QBO).
No new integration using QBD V3 can be created.
Also, it seems that the supported objects for desktop editions is way behind those supported for the online edition. Will these be available any time soon (i.e. reports such as balance sheet, profit/loss, budget, etc.)?
V3 QBD APIs are already marked as deprecated. There will not be any development on this.
Ref - https://developer.intuit.com/docs/0025_quickbooksapi/0058_faq#Does_QuickBooks_API_support_QuickBooks_Desktop_and_QuickBooks_Online.3F
Please refer the following thread on similar topic.
Integrating with QB Desktop products
Thanks

Alternate TFS Web Interface

I know TFS has a web server that gets installed with it, and that's great. I know it integrates very tightly, and very well with Sharepoint, and that's also great.
What I'd like to know though, is since the WSDL's for TFS are public, essentially making the API to send and receive data from it public as well; are there any alternate, non-Microsoft interfaces to TFS that provide most or all of the functionality, with consumer-driven enhancements, such as charting, or reporting solutions not found out of the box?
I've searched the almighty Google and Bing, and they are proving very difficult to find answers from.
You can create your own solution using SharePoint Enterprise edition and a combination of Excel Services reports and SQL Server Reporting Services reports; A SharePoint solution is the closest you'll find to something.
You can use the TFS SDK and object model to create your own application, but most people don't go very deep because Microsoft's Web Access tool is a capable client tool for most teams. There were also major improvements just released in the new TFS 2012. In fact Web Access started out as a 3rd party tool and there are some ways you can extend it.
There is one app I know of off the top of my head that has a web interface to TFS that is very simple; it can be found at http://techdayskanban.codeplex.com
There is also an example of extending the TFS Web Access at http://tfstimesheet.codeplex.com
Codeplex is a good place to check around because it is open source.
A commercial example of a product that extends Web Access can be found at http://urbanturtle.com though It seems you are looking for something more stand-alone.

Does TFS 2010 have web services one can use to query check-ins, work items, etc?

I have figured out that TFS 2010 has the following web service endpoint
http://tfsservername:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
Are there ones to get a feed of check-ins, work items and other TFS items?
Update: yes! Visual Studio Online introduced a new REST API, and on-premises installations of TFS 2013 have access to this new API.
In versions of TFS prior to TFS 2013:
tl;dr: Not in any way you're going to want to consume.
Team Foundation Server does expose SOAP web services that the clients use to talk to it. However, it's not something that is publicly documented, it's not supported by Microsoft (meaning they can, and will, change version to version) and, quite frankly, it's remarkably unlikely that the effort required will be worth the result.
Although the web services are well designed, some of the web services require a significant amount of client state. This is particularly true of the work item tracking web services. The clients basically contain an entire "rules engine" for processing and verifying changes to any fields. The client must, basically, be able to understand the process template and process all these state changes before submitting an updated work item back to the server. The server will also run the rules and verify that the client made only legal changes.
The rules engine is not exposed publicly. You would have to reverse engineer it.
This also makes some underlying assumptions like your web services stack can successfully speak NTLM2 and Kerberos properly (most can't, outside of the .NET web services stack, although some an support NTLM version 1 to some degree, which will only give you the illusion that you should be authenticating.)
It's therefore strongly suggested that you just use one of Microsoft's APIs for accessing TFS, either the .NET or the Java SDK.
(I actually worked for a third-party company that successfully wrote a Java front-end to TFS by talking to the web services. It was a fair challenge for us -- especially the work item implementation -- and this was the full-time job for several of us. I wouldn't recommend it as a side project.)
Just like Edward mentioned, the TFS web services aren't meant for public consumption.
On the other hand, you might want to give the "OData Service for Team Foundation Server" a try.
It offers a really nice REST-like interface - thus callable simply by issuing HTTP requests, just like you were willing to do with the web services.
To learn more, check this blog post: http://blogs.msdn.com/b/briankel/archive/2011/10/26/odata-service-for-team-foundation-server-2010-v1.aspx

Creating a VoiceXML application

I have a few questions concerning how to create a VoiceXML application.
I found some nice tutorials, but there are still some questions:
-what's a good development environment? I wanted to use VS08, there should be under C#, a project called "speech", but it doesn't appear, do I have to install the speech server local too in order to use this? (I would prefer some kind of visual workflow)
-what's the ending? is it .xml, .aspx, or .speax? I couldn't get that.
-how do I run the voicexml? it's at the speech server as an application, any further steps?
These questions are all over the map on the basics, but I'll try to provide some pointers:
what's a good development enviroment?
You will likely be building a web style application. So a VS08 ASP application is a reasonable starting point.
do i have to install the speech server local too in order to use this?
Yes. There are a variety of platforms that support VoiceXML. Nearly all are designed specifically for telephone calls (VoiceXML's main purpose). There are a few free implementations, but most are commercial. I believe the Opera web browser has some VoiceXML functionality. I've seen settings for it in their configuration, but no direct experience.
what's the ending? is it .xml, .aspx, or .speax ? i couldn't get that.
Endings usually aren't relevant, except maybe to tools. I don't believe VisualStudio provides any direct support for VoiceXML. Some browsers do care what mimetypes are provided.
how do i run the voicexml? it's at the speech server as an application, any furhter steps?
Does this mean you are looking at the OCS/Lync product line ? I believe their IVR in that suite does support VoiceXML as well as a few other APIs. The product should contain basic setup and configuration information. More information on Lync:
Microsoft Lync site
Wikipedia
One of the main goals of VoiceXML was to decouple the rendering of the voice application (on a speech server) from the voice application itself. This allows you to serve VoiceXML pages from any web server, anywhere, using any technology stack you want.
If you just want to learn VoiceXML in general, developer sites like Voxeo's Evolution allow you to render your voice applications on their voice hosting infrastructure. You configure your developer account to point to an initial VoiceXML page served from your external web server. In return, you get a phone number to call. When you call it, the hosting infrastructure fetches your initial VoiceXML page from your web server.
(I don't know offhand if Microsoft Lync hosting services are available yet.)

Asp.net MVC/Silverlight and Sharepoint 2010 integration

Just a sidenote: I'm not sure whether I should post this to serverfault as well, because some MOSS admin may have some info for me as well?
Additional note 1: I've found this document (Asp.net MVC 2 & Sharepoint integration) if anybody with sufficient expirience is willing to comment on its content whether this can be used in my described scenario or not.
Additional note 2: I've discovered (later) that Silverlight is supported in Sharepoint 2010 so I'm considering it as well. So if anyone would comment on silverlight integration as well.
A bit of explanation first (without Asp.net MVC/Silverlight)
Is it possible to integrate the two? Is it possible to write an application that would share at least credential information with MOSS?
I have to write a MOSS application that has to do with these technologies:
MOSS 2010
Personal client certificates authentication (most probably on USB keys)
Active Directory Federation Services
Separate SQL DB that would serve application specific data (separate as not being part of MOSS DB)
How should it work?
Users should authenticate using personal certificates into MOSS 2010
There would be a certain part of MOSS that would be related to my custom application
This application should only authorize certain users via AD FS - I guess these users should have a certain security claim attached to them
This application should manage users (that have access to this app) with additional (app specific) security claims related to this application (as additional application level authorization rights for individual application parts)
This application should use custom SQL 2008 DB heavily with its own data
This application should have the possibility to integrate with external systems as well (Exchange for instance to inject calendar entries, ERP systems etc)
This application should be able to export its data (from its DB) to files. I don't know if it's possible, but it would be nice if the app could add these files to MOSS and attach authorization info to them so only users with sufficient rights would be able to view/open these files.
Why Asp.net MVC/Silverlight then?
I'm very well versed in Asp.net MVC (also with the latest version) and I haven't done anything on Sharepoint since version 2003 (which doesn't do me no good or prepare me for the latest version in any way shape or form). This project will most probably be a death march project so I would rather write my application as a UI rich Asp.net MVC application and somehow integrate it into MOSS. But not only via a link, because I would like to at least share credentials, so users wouldn't need to re-login when accessing my app. Using Asp.net MVC I would at least have the possibility to finish on time or be less death marching. Is this at all possible?
I haven't done any serious project using SIlverlight, but I will sooner or later have to. So I'm also considering a jump into it at this moment, because it still might make this application development easier than strict Sharepoint 2010.
Questions
Is it possible to integrate Asp.net MVC/Silverlight into MOSS as described above?
If integration is not possible, would it be possible to create a completely MOSS based application that would work as described?
Which parts of MOSS 2010 should I use to accomplish what I need?
The Patterns and Practices Sharepoint Guidance release on CodePlex has a model-view-presenter equivalent to MVC but targeted at SharePoint development.

Resources