Microsoft Lync Server 2010 是否适合面向公众的应用程序?
-
04-10-2019 - |
题
候选版本为 微软Lync服务器2010 (以前称为 Office Communications Server 和/或 Speech Server)刚刚可供下载。从网站:
Microsoft Lync Server 2010现在,通过单个易于使用的接口,可以在PC,浏览器和移动设备之间保持一致的单个易于使用的接口,提供完整的存在,即时消息,会议和企业语音功能。管理员受益于单个一致的管理基础架构,增加可用性的新功能以及与现有系统的互操作性。
与此版本配合,还可以下载 微软统一通信托管 API 3.0 SDK (UCMA 3.0)。这是客户端 .NET 托管 API,支持集成和扩展 Lync 体验。
这一切都非常令人兴奋,因为我想开始构建丰富的语音和即时消息应用程序,与 Microsoft 技术堆栈紧密集成并减少第三方依赖项(例如Voxeo、Nuance、IMified 等)。
然而,我仍然不清楚的是:Microsoft Lync Server 2010 是否适合面向公众的网站和应用程序?或者真的主要用于公司防火墙内,主要用于内部应用程序?
我想我需要知道的是: Microsoft Lync Server 2010 能否同时充当内部 和 面向公众的 VoiceXML 和基于 IM 的应用程序托管提供商,并进行扩展以满足拥有数千甚至数百万用户的大型面向公众网站的需求?
我是否完全误解了 Lync 可以/不能做什么以及应该/不应该做什么?
解决方案
我想提出另一个答案,两年后,现在Lync 2010已完全发布并被使用。
Microsoft Lync Server 2010是否可以作为语音和基于IM的应用程序的内部和面向公共的托管提供商,并扩展以满足有成千上万甚至数百万用户的大型公共网站的需求?
是的,一点没错。
您可以参考很多大规模的案例研究 Lync案例研究 页。 南艾尔郡议会支持11万用户. Swisscom替换了全球94个PBX单元.
它被称为完整的PBX替换系统,其中包括用于IVR风格应用程序的VoiceXML。在内部,可以使用基于IM的应用程序,但是这些应用程序也可以从公开的网站访问。
显然,有了任何大规模部署,您必须考虑规模,但这是Lync旨在支持的东西(与DR,故障转移等)
除非您有独特的方案,否则我不会担心比例尺,在这种情况下,直接联系微软,我相信他们很乐意与您合作。
其他提示
http://technet.microsoft.com/en-us/ff706687.aspx
允许员工从Internet远程登录Office Communications Server的公司可能容易受到拒绝服务(DOS)和Brute-Force攻击。当执行密码策略时,对有效的Active Directory用户帐户进行了太多的不正确密码尝试,这些攻击涉及猜测用户的密码或将用户锁定在其帐户中。尽管内部安全性没有受到损害,但这些类型的攻击对用户造成了破坏并消耗了内部服务器资源。为了防止边缘的此类攻击,您可以在边缘服务器上安装安全过滤器,该滤波器监视登录尝试并在网络周边执行帐户锁定。
您的问题在规模等方面有很多注意事项。首先,Lync 2010 是一个候选版本,甚至还不是完整版本,因此我不会对当前版本打任何赌注 - 我会等到 2011 年才能发布完整版本。其次,它似乎是针对企业防火墙内的应用程序,因此尽管它 可能 如果规模超出了这个范围,那么几个月内该领域不太可能有任何开发人员支持材料(如果有的话)。
也就是说,Lync 产品至少不再需要注册 COM 对象来针对 SDK 进行开发(如以前版本的 Office Communicator 2007),这是向前迈出的一步。SilverLight 和 WPF 控件 SDK 将使一些使用 Lync 的 Intranet 站点感觉很优雅 - 但缺乏关于简单地运行 API 和执行包含 Lync(而不是完全 Lync)的任务的信息是一个缺点。
编辑
Lync 本质上显然是 COM,在反映了 Lync 的一些方法之后,显而易见:
这个方法:
public static LyncClient GetClient()
包含对以下内容的调用:
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);
}
}
}