随机ip案例

介绍

在第二个InfoQ案例研究中(请参阅关于Brasilian National Healthcare System的第一个案例),我们将研究电话领域中一个有趣的解决方案。 LiteScape Technologies是一家私有软件公司,提供统一组织通信的应用程序。 这些应用程序可将IP电话与业务应用程序和公司数据安全地集成到任何IP设备上,包括IP电话,移动设备和PC。 LiteScape的解决方案已在多个垂直行业中实施,包括零售,制造业,专业服务,金融服务,公共部门和医疗保健。 当今的现代工作环境具有各种各样的通信介质,例如电子邮件,电话会议和在线演示。 每个都有自己的用户界面,初始化方法等等。 LiteScape的软件应用程序将它们全部组合在一起,既简化了它们的使用,又实现了以前分散的数据和设备之间的强大集成。

此案例研究深入研究了LiteScape的软件解决方案,通过Java和.NET实施的体系结构概述从需求中引导您,然后放大了他们项目的一些有趣的技术方面,包括电话集成与WebEx / LiveMeeting,集成Java / .NET互操作,安装在同一台机器上的系统之间的HTTP与IPC通信之间的交流,最后是从项目中获得的一些总体教训。

领域分析

成为端到端业务解决方案的提供商意味着LiteScape必须支持各种输入和输出,例如:

  • 展望/交流
  • 外包协作(WebEx,Live Meeting等)
  • CRM解决方案(例如Salesforce.com,MS-CRM)
  • 目录服务(LDAP / Active Directory)
  • 状态服务器(MS-LCS,AOL)
  • 通讯基础设施(IP-PBX,MS-LCS,台式电话)

这些服务分布在网络上,可以通过许多不同的协议和接口进行访问。 然后,客户希望能够通过Web和桌面客户端以及基于IP的电话访问统一信息。

从本质上讲,电话已成为多媒体端点,可以直接与用户在PC上进行的所有操作集成并相互补充。 它们还充当智能设备,代替PC提供高级通信功能。 电话是台式机的扩展产品,通常比计算机更适合于简化和自动执行通信任务。 这种用法的示例包括一键式应用程序以启动/加入电话会议,在呼叫该联系人之前在电话上显示联系人的状态以及访问公司和个人目录服务。 公司还使用IP电话网络来广播消息,例如火灾警报,其中包括根据员工在建筑物中的物理位置为每个员工提供的最快出口路径的可视化地图。

将应用程序扩展到IP电话不是一个简单的过程。 在大多数情况下,不能仅将UI移植。 必须考虑提供与电话的输入和屏幕规格配合良好的用户界面。 与将应用程序或数据的“状态”扩展到电话上,而不是简单地将应用程序“移植”到电话上有关。 一旦完成此过程,登录在线会议就像在电话上显示会议的日历条目然后按电话上的“加入会议”按钮以同时加入音频会议和Web会议一样简单。 (在用户PC上)协作会话的各个部分。

LiteScape首次开始提供IP电话集成功能时,本质上是特定的任务。 例如,在某些环境(例如零售和制造)中,由于预算限制和特定业务的性质,计算机很稀缺,并且每个人都无法使用,但是可以使用IP电话。 结果,公司可以将IP电话应用程序用于诸如考勤卡条目或多媒体产品培训之类的活动。 律师事务所还发现,执行诸如直接记录与客户交谈所花费的时间以及在直接从电话中拨打任何电话后将其与客户/事项记录绑定等任务的能力在减少时间和纸张成本方面具有不可估量的价值。 LiteScape的产品提供与目录服务和时间/计费管理等领域的应用程序级别集成。 该技术也正在成为Infosys和WebEx等其他公司用来将其产品和服务扩展到IP电话级别的平台。

解决方案概述

LiteScape体系结构可以分为三个主要元素。 第一个要素是公司拥有的第三方通信基础结构组件,例如PBX系统,IP电话以及企业业务应用程序和目录。 第二个架构元素是LiteScape多模式应用程序平台(MAP)。 最后,LiteScape体系结构的第三个元素包括使用MAP将其应用程序扩展到用户的IP电话及其桌面的客户端。 客户端包括Outlook / Notes插件,独立的桌面客户端和Web浏览器。

图1:LiteScape架构概述

随着LiteScape产品的发展,其背后的技术也在不断发展。 该产品最初是基于Java的解决方案。 但是,由于需要与Microsoft Unified Communications集成,因此公司必须开始利用.Net作为其基础架构的一部分。 如今,Java和.Net都在Java Web Start和.NET客户端的后端和前端使用,支持Windows 2003与IIS以及与基于Java的产品(如Sun的Java Media Framework服务器)的集成。

对于Java开发,他们使用IntelliJ IDE和Visual Studio.NET进行.NET开发。 LiteScape服务器安装在IIS之上的Windows 2003上,还包括许多Windows服务以支持用.Net编写的集成。 同时,Apache Tomcat的副本安装在其他端口上,以运行任何必要的Java组件。 服务器的Java部分广泛使用了API(例如Apache Axis)来提供Web服务支持。 两个Web服务器在同一台计算机上并行运行。 在等式的客户端上,基于.Net的OnCast客户端提供Windows XP和2003上的桌面访问。对于需要Linux支持的企业,提供了Java Swing Web Start客户端。

图2:地图服务器的组件

图2显示了MAP服务器的活动部分。 用.NET编写的IIS和Windows服务提供了诸如OnCast Directory模块之类的功能。 Tomcat服务和Java可运行对象提供诸如SIP网关的功能。 使用Apache Axis将基于Java的Web服务部署为servlet。 最后,一些模块会跨Java和.NET运行时,例如OnCast Presence和计算机电话集成(CTI)模块。

在架构本身之后,该系统的下一个方面是脱颖而出的是各种技术协议,所有这些技术协议共同为用户提供了统一的通信体验,如图2所示。

图3:使用的通信协议概述

LiteScape OnCast客户端(OC客户端)是一个桌面应用程序,它显示来自MAP服务器的消息,并与诸如地址簿和Microsoft Outlook之类的桌面应用程序进行交互。 它还可以启动第三方应用程序,例如Web浏览器和WebEx,以促进通信功能(例如在线会议)。 OnCast客户端使用通信层(OC CIL)来通信LiteScape MAP服务器。 基于正在执行的任务,通过各种协议执行此通信。 对于实时通信,诸如SIP之类的协议是最有效的。 身份验证和个性化等其他活动由Web服务处理。 MAP服务还使客户端可以访问第三方元素,例如Microsoft Active Directory和OpenLDAP之类的目录服务。 MAP服务器还可以在第三方IP-PBX(例如Cisco CallManager,Avaya Communication Manager或Asterisk)上运行的IP电话网络上启动功能。 与目录服务的通信通过每个平台的特定协议进行处理。 诸如XML,HTTP,Java电话API和SNMP之类的协议/传输技术可用于基于后端系统的IP-PBX通信。

深入研究1:WebEx / LiveMeeting集成

LiteScape提供的应用程序/ IP电话集成类型的一个示例是使用WebEx / Microsoft LiveMeeting的会议支持。 许多人发现开始或加入在线会议的过程使各种URL,拨号号码和所需的访问代码感到沮丧。 LiteScape可自动完成整个过程,因此可以从电话启动它,也可以与用户桌面上的WebEx / LiveMeeting集成。

邀请用户参加WebEx / LiveMeeting会话的典型用例可以通过两种方式之一进行。 首先,用户可以将邀请手动添加到他们的日历中。 通过使OnCast服务器扩展在电子邮件服务器(例如Exchange)接收邀请邮件时监视邀请电子邮件,还可以将邀请自动添加到用户的MS-Outlook / Exchange日历。 此时,集成过程已准备就绪。

在安排会议开始OnCast MAP服务器之前(使用IP电话协议),可以将OnCast多媒体消息(OCM)发送到用户的电话,以宣布WebEx / LiveMeeting会话。 OCM结构提供了一个集合,其中包括XML脚本有效负载文档以及LiteScape平台在各种通信端点(例如,桌面代理,电话,IP /模拟扬声器等)之间双向多媒体内容交付所需的相关内容。 。

OCM结构包括对以下内容的基本形式的支持:文本,音频,图像,语音或复合内容处理程序,用于:协作,RSS提要,股票报价,多项选择调查,MS-Power-Point演示文稿,Adobe PDF文件等。

LiteScape OCM包含一个基于XML的“有效负载”文档,该文档引用了将要执行的必要属性,属性和多模式事件处理要求。

以下OCM有效负载代码段用于一个有组织的会话,其中包括参加协作会话的Cisco和Avaya型IP电话上的用户:

<LSBC>  <Organizer>   <UserID>John.Coyle</UserID>   <Extension>20353</Extension>   <MainPhone>20353</MainPhone>   <LDAPDN>CN=John Coyle,CN=Users,DC=litescape,DC=local|AD</LDAPDN>   <ServerLDAPID />   <ProviderID>IP-PBX 1</ProviderID>   <ProviderSource>IP-PBX 1</ProviderSource>   <OnCastBCLocationName>Headquarters</OnCastBCLocationName>   <Prefix />   <IPAddress>10.12.2.52</IPAddress>   <Email />   <DeviceType>Cisco 7961</DeviceType>   <Key>20353</Key>  </Organizer>  <EmergencyRingTone />  <NormalRingTone />  <Audio>     <Type>NONE</Type>     <Streaming>MULTICAST</Streaming>  </Audio>  <Video>    <FileName />  </Video>

   <Presentation>    <Count>0</Count>  </Presentation>  <Survey />  <Stocks />  <RSSFeeds />  <Workflow />  <image>    <X1>170</X1>    <Y1>107</Y1>    <X2>195</X2>    <Y2>132</Y2>    <URL>http://10.2.0.145:80/MW/HandleEvent.aspx?scannedItemSize=26</URL>    <Name>25|BLUE+RIBBON|Dark+Blue|01FFAA06000104E0</Name>  </image>

   <Invitees>  <Invitee>     <UserID>Samira Kashani</UserID>     <Extension>20365</Extension>     <MainPhone>20365</MainPhone>     <LDAPDN>CN=Samira Kashani,CN=Users,DC=litescape,DC=local|AD</LDAPDN>     <ServerLDAPID />     <ProviderID>IP-PBX 1</ProviderID>     <ProviderSource>IP-PBX 1</ProviderSource>     <OnCastBCLocationName>Headquarters</OnCastBCLocationName>     <Prefix />     <IPAddress>10.11.2.4</IPAddress>     <Email />     <DeviceType>Cisco IP Communicator</DeviceType>     <Key>20365</Key>  </Invitee>  <Invitee>    ...  </Invitee>  <Invitee>    ...  </Invitee>  </Invitees>

   <OCMFile>ConferenceTemplates\WebEx.ocm</OCMFile>  <Conference>     <PhoneNumber>18665551212</PhoneNumber>     <PassCode />  </Conference>  <Action>Dial</Action>

  <shortcutURL>http://10.12.0.5:80/oncastdirdialer/AD/createShortcut.aspx?key=20353</shortcutURL>  <Priority />  <WebExMeetingID />  <HostMeeting>False</HostMeeting>  <SendToOrganizer>True</SendToOrganizer>  <SessionID>58c5cdcb-b1be-4dab-9bcd-7d9ea3a55465</SessionID>  <InviteesGroup />  <SessionEvents>     <Event>RunBCPayLoad</Event>  </SessionEvents> </LSBC> 

OCM可以包括请求电话会议的用户的嵌入/链接的图像,内容的附件或链接,例如与呼叫相关联的PowerPoint演示文稿或与会议相关联的音频剪辑(嵌入或链接)。 然后,用户可以从他们的电话中选择加入电话会议。 此时,MAP服务器将收到启动WebEx / LiveMeeting会话的请求。 MAP服务器将通知IP PBX发起WebEx / LiveMeeting会议的呼叫部分。 它还将与桌面上的OnCast Client通信,这将自动在用户桌面上启动WebEx会话并将其登录到会议会话中。 此序列如图4所示:

图4:从IP电话启动WebEx会话的过程

深入研究2:Java和.NET

图2说明了LiteScape MAP平台服务器中的组件。 MAP平台服务器广泛使用Java和.NET技术。 诸如OnCast目录之类的组件是用.NET编写的,并作为Windows服务与安装的IIS实例进行通信而运行。 其他组件(例如SIP网关)用Java编写。 最后,MAP平台还包括同时使用Java和.NET的混合组件,例如OnCast Presence和计算机电话集成模块。

由于多种原因,LiteScape选择同时利用Java和.NET技术。 首先,他们的客户强烈希望运行集成在Windows中的桌面客户端。 他们还希望访问特定于平台的数据,例如Outlook通讯簿,可以使用Microsoft的MAPI接口进行访问。 最后,要求提供单点登录安全性。 通过利用.Net LiteScape,可以使用Windows授权和域安全性。 所有这些项目都是对访问Java服务(例如Sun的Java Media Framework服务器)的需要的补充。 最佳解决方案还简化了部署。 LiteScape的许多客户已经在利用Microsoft技术。 因此,IIS先前已安装用于其他目的。

为了支持这种混合架构平台,需要不可知的通信。 在MAP服务器中运行的.NET和Java组件为许多常用功能提供了基于XML的Web服务。 组件还使用基于TCP和SIP的协议。

出于多种原因,未选择诸如JNI和其他.Net到Java集成库的选项。 LiteScape的建筑师以前没有使用此类技术的丰富经验。 他们还担心在尝试实施实时通信时可能会遇到的障碍。 最重要的是,LiteScape不想受限于第三方集成库的限制。 他们不想让关键技术的发展停滞或没有足够丰富的功能。

LiteScape的建筑师在一个共存的世界中工作,而不是试图使用一种技术来解决他们的所有需求。 例如,在提供诸如呼叫控制之类的功能时,将Java Telephone API与支持它的设备一起使用是合乎逻辑的。 其他集成,例如与Exchange和Active Directory的集成,都可以使用.Net轻松编程。 难题的最后一部分是将这些不同的技术联系在一起。

跨技术互操作的各个部分的一个示例是CTI引擎何时收到呼叫。 然后它将向任何感兴趣的一方发出事件,其中之一是用Java编写的SIP网关。 典型的业务案例是在呼叫进入企业时用有关呼叫者的目录和业务信息来补充可用的基本信息。 为了执行此功能,SIP网关通过Web服务向基于.NET的OnCast Directory组件发出请求。 在检索到补充信息之后,SIP网关可以随后通过SIP / CSTA通知OnCast客户端,向用户提供有关呼叫他们的人的其他信息。

深入研究3:使用OnCast客户端和Outlook / Notes插件简化通信

Outlook Integration插件是LiteScape技术提供的统一通信体验类型的一个具体示例。 它的功能之一是可以右键单击电子邮件中的名称并发起电话/电话会议。

从技术上讲,执行了许多步骤才能使此操作发生。

Outlook插件是用.NET编写的,其安装还包括基于.NET的OnCast通信层(CIL),这是一个与应用程序无关的模块,其提供的服务包括联系人的加载,更新用户状态(状态),P2P消息传递和SIP消息传递。 OnCast CIL在单独的线程上具有HTTPListener,该监听器侦听TCP(本地IP 127.0.0.1)端口以接收任何主要OC CIL命令的命令。 它从套接字服务器开始,并处理通过HTTP传入的请求(拨号,会议,广播,协作和远程呼叫控制请求)。 这允许使用简单的URL发出命令,例如:

拨打: http : //127.0.0.1/dial?number= [号码]

图4:示例命令从HTTPListener到OnCast目录的路径

如图4所示,http调用在基于.NET的OnCast CIL库中转换为HTTPCommand对象。 然后,它可以触发CIL命令,该命令使OC CIL客户端与MAP Server通信以执行诸如发起呼叫之类的操作。 从协议的角度来看,请求的工作流程从HTTP开始,转换为内部.NET方法调用,然后作为网络服务请求通过网络发送,最后由MAP服务器作为IP-PBX请求执行以启动一个呼叫。

这种集成方法的一个明显问题是,为什么在客户端上使用HTTP协议,而不是在OnCast Client或Outlook插件与OnCast CIL通信库之间进行纯.NET集成?这种设计的原因有两个。 首先,提供基于HTTP的API可使其他用Java Swing等技术编写的客户端访问相同的功能。 其次,根据LiteScape的经验,Outlook插件容易崩溃。 通过使集成尽可能地薄,插件崩溃不会导致客户端计算机上运行的OnCast CIL服务崩溃。 然后可以简单地重新启动Outlook,然后用户再次尝试通信过程。

经验教训/最佳实践

在开发LiteScape服务器和客户端平台组件期间,他们的工程师吸取了许多宝贵的经验教训:

  • 每个平台上的组件都应尽可能地不可知,以便以后进行集成。 例如,如果在Java中使用了加密库,则LiteScape需要.NET存在相应的库。 考虑第三方技术时,遵循类似的过程。
  • 如果不确定第三方组件,请在传输层进行集成,而不要使用平台无关的协议(例如上述协议)。
  • 请密切注意平台特定的通信特性,例如换行和缓冲以及Unicode字符的转换。
  • .Net空间中的社区和组件可用性比Java中的要小。 但是,能够接听电话并拨打800号码以获得技术支持非常宝贵。 诊断Java或Java相关库中的问题通常涉及搜索知识库和邮件列表。 相比之下,Microsoft支持代表通常能够查明IIS等组件的问题。
  • IP电话是一种快速发展的技术,只有采用最佳策略才能得到完全支持。 千篇一律的方法无法解决每个客户的需求。
  • 使用适合您需求的协议或技术。 由于协议,在电子邮件中添加5-10秒的延迟是可以接受的。 但是,在像毫秒这样的电话中,这是完全不正确的。

未来发展方向

LiteScape将继续使用最佳技术。 由于IP电话,IP语音和协作空间的性质不断变化,因此必须不断增加对新电话品牌和型号以及WebEx和Microsoft Live Meeting等技术中的通信增强的支持。 LiteScape还希望继续将其集成扩展到CRM,库存管理和人力资源等应用程序领域。 在技​​术方面,他们正在探索使用Mono库在基于Linux的服务器上部署基于.NET的服务器组件的可能性。

总而言之,LiteScape力争使其使用的技术不成为“豚鼠”。 他们让每个人都成熟了,并没有试图让他们的客户依靠他们自己还不习惯使用的技术。 当需要扩展对更多应用程序的支持的时候,他们逐渐过渡了。 结果是建立了一个系统,使企业可以有效地访问其服务,并有效地为其业务提供价值。

翻译自: https://www.infoq.com/articles/litescape-ip-telephone-casestudy/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

随机ip案例

随机ip案例_案例研究:IP电话集成相关推荐

  1. 【ZYNQ】IP核_关于视频IP核的详细介绍

    [ZYNQ]IP核_关于视频IP核的详细介绍 接口信号的含义 数据格式及编码 视频时序 视频时序的进一步说明 自动延迟匹配 视频子系统软件指南 接口信号的含义 在ZYNQ的设计中一般视频数据的传输遵循 ...

  2. tcp ip协议_网络通信-TCP/IP协议族简述

    导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...

  3. python设置电脑ip代理_设置代理IP在Python中使用

    在Pyhton中要怎么使用代理IP?我们经常说代理IP能够让Python更好的发挥爬虫效果,首先我们要懂得如何在python语言中设置代理IP来利用. 1.urllib模块设置代理 如果我们频繁用一个 ...

  4. 软件问题造成的经济损失案例_案例研究:危害计算机信息系统的行为性质分析与损失认定...

    律者文摘语:近年来,将计算机信息系统作为犯罪对象加以侵害的新型网络犯罪日益增多,其行为性质与经济损失如何认定?本案法官认为,攻击单位的计算机信息系统,既造成系统不能正常运行,又造成经济损失的,涉及破坏 ...

  5. 如何拼通网络ip地址_如何解决IP地址冲突

    很多朋友提到,如何防止IP地址冲突故障?这个在实际项目中经常会遇到,网络用户如果没有按照规定设置IP地址的话,IP地址冲突现象就不可避免,一旦这种现象频繁发生,不但会影响上网效率,而且也不利于局域网网 ...

  6. 系统设计说明书案例_案例 | 太阳能+热泵枸杞烘干系统设计及经济性分析

    太阳能空气集热器是利用太阳能直接加热空气的装置,最高稳定出风温度可达到140℃(三块串联).加温后的热空气可广泛的用于药材.纺织物.食品等领域的干燥,以及海水淡化.民用采暖等方面,集热性能高,清洁无污 ...

  7. python 设置ip地址_无法设置IP地址

    我不熟悉Python和Mininet.我一直在尝试用mininet模拟网络拓扑.我试图为网络中的每台主机分配IP地址,但是我得到一个属性错误. 下面是我的代码import sys from minin ...

  8. java 不停的换ip地址_为什么电脑IP地址总是自动改变

    自己的IP会变化是因为自己或家庭使用的宽带不是专线,所以IP不是固定的.ADSL用户的IP地址都是通过DHCP动态获取得到的,意思是你每次拨号的时候,都会获得一个不同的IP地址,运营商这样做是为了提高 ...

  9. python预测模型案例_案例2:精准营销的两阶段预测模型1

    案例2:精准营销的两阶段预测模型1案例2:精准营销的两阶段预测模型1 数据集 模型的select查询方法返回数据集对象 think\model\Collection,该对象继承自think\Colle ...

最新文章

  1. htc820+android+l,首款高通64位八核 HTC Desire 820评测
  2. 遇事不决,量子力学:谷歌量子计算模拟化学反应登上Science封面
  3. 生产环境:Nginx高可用方案
  4. Quartz作业调度框架
  5. android中static方法,StaticLayout如何在Android中使用?
  6. 3.9 降低DFT泄露的一种办法---加窗
  7. Activity生命周期的补充
  8. 20210927 LQR
  9. Python—实训day9—使用pandas进行数据预处理
  10. Android查看真机布局,android-外部存储
  11. [原创]FineUI秘密花园(二十一) — 表格之动态创建列
  12. C++提高部分_C++函数模板_注意事项---C++语言工作笔记082
  13. 一. JVM发展史,运行时数据区域,四大引用
  14. oracle升级补丁报错,oracle rac升级补丁及中间的错误提示
  15. Java添加多行数据到mysql中_Java:使用PreparedStatement将多行插入到MySQL中
  16. 简单电话系统的电话数量分析
  17. windows server 2012 r2 *** 服务器搭建
  18. STM32F412 串口接收不到数据的问题
  19. N卡怎么修改录屏文件保存位置
  20. 【高通】【QPST】QCN导入

热门文章

  1. 小程序二维码生成器,带参数二维码生成
  2. android 红米拍照问题,拍照表现中规中矩_小米 红米_手机Android频道-中关村在线...
  3. 学习md语法 模版示例 ----持续更新
  4. 振华石化采用霍尼韦尔技术实现轻烃综合利用
  5. 微信扫描二维码登陆的实现原理
  6. c#数组赋初值_c语言给数组赋值的3种形式
  7. c++常用函数对应的头文件
  8. 常见的MD5碰撞:md5值为0e开头
  9. Win7内网外网一起使用解决方法
  10. [AHK]一键发送选中的文件给微信好友