WEB开发网
开发学院图形图像Flash 使用 Silverlight 构建业务线企业级应用程序,第 ... 阅读

使用 Silverlight 构建业务线企业级应用程序,第 1 部分

 2009-02-05 11:54:46 来源:WEB开发网   
核心提示: 图 1 显示策略服务器在体系结构中的位置,当调用 Socket.ConnectAsync 时,使用 Silverlight 构建业务线企业级应用程序,第 1 部分(7),消息流序列如图 3 所示,按照设计,因为每个客户端连接都有专用的线程,如果连接很频繁,消息 2、3 和 4 对用户代码完

图 1 显示策略服务器在体系结构中的位置。当调用 Socket.ConnectAsync 时,消息流序列如图 3 所示。按照设计,消息 2、3 和 4 对用户代码完全不透明。

使用 Silverlight 构建业务线企业级应用程序,第 1 部分

图 3 Silverlight 运行时自动为套接字连接请求跨域策略

我需要在与呼叫管理器服务器相同的 IP 地址上建立一个策略服务器。我可以在单个操作系统进程中建立这两个服务器,但为简单起见,我将在两个独立的控制台程序中实现它们。这些控制台程序可以轻松地转换为 Windows 服务,并能针对故障转移识别群集,以提供可靠性和可用性。

异步 I/O 循环

.NET Framework 3.5 为套接字引入新的异步编程 API;它们是以 Async() 结尾的方法。我将在服务器上使用的方法是 Socket.AcceptAsync、Socket.SendAsync 和 Socket.ReceiveAsync。异步方法通过使用 I/O 完成端口为高吞吐量服务器应用程序执行了优化,并通过可重用的 SocketAsyncEventArgs 类有效地接收和发送缓冲区管理。

由于不允许 Silverlight 创建 TCP 侦听器,所以其 Socket 类仅支持 ConnectAsync、SendAsync 和 ReceiveAsync。Silverlight 仅支持异步编程模型,这一点不仅适用于套接字 API,而且适用于所有网络交互。

由于我将同时在服务器和客户端上使用异步编程模型,所以让我们先熟悉一些设计模式。一种重复设计模式是 I/O 循环,它适用于所有 Async 操作。首先,我将介绍典型的同步执行套接字 accept 循环,如下所示:

_listener.Bind(localEndPoint);
_listener.Listen(50);
while (true)
{
  Socket acceptedSocket = _listener.Accept();
  RepConnection repCon = new
   RepConnection(acceptedSocket);
  Thread receiveThread = new Thread(ReceiveLoop);
  receiveThread.Start(repCon);
}

同步 accept 非常直观且易于编程和维护,但该实现无法真正具备服务器可伸缩性,因为每个客户端连接都有专用的线程。如果连接很频繁,则几个连接就容易导致该实现达到峰值。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Silverlight 构建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接