使用 Silverlight 构建业务线企业级应用程序,第 1 部分
2009-02-05 11:54:46 来源:WEB开发网每个序列化消息的前四个字节都将包含它后面序列化对象的字节数。Silverlight 支持位于 Silverlight SDK 的 System.Xml.dll 内的 XmlSerializer。代码下载中包含有序列化代码。您会注意到它对子类(如 RegisterMessage)或其他消息(包括 UnregisterMessage 和 AcceptMessage)没有任何直接依赖关系。一系列 XmlInclude 注释将帮助序列化程序在序列化子类时正确地解析 .NET 类型。
NetworkMessage.Serlialize 和 Deserialize 的使用如图 4 中 ReceiveCallback 和 SendAsync 所示。在 receive 循环中,实际消息处理由 NetworkClient.OnReceive 事件附加的事件处理程序完成。我可以在 CallNetworkConnection 内处理消息,但如绑定接收处理程序来处理消息,则有助于通过在设计阶段将处理程序与 CallNetworkConnection 分离提高可扩展性。
图 7 显示了 Silverlight 应用程序 RootVisual,它将启动 CallNetworkClient(如图 4 所示)。所有的 Silverlight 控件都连接单个 UI 线程,而且只有当代码在该 UI 线程的上下文中执行时才能更新 UI。Silverlight 的异步编程模型在线程池的工作线程上执行网络访问代码和处理程序。所有 FrameworkElement 派生类(如 Control、Border、Panel 和大多数 UI 元素)都会继承 Dispatcher 属性(来自 DispatcherObject),它可以在 UI 线程上执行代码。
在图 7 中,MessageAction.RegisterResponse 会通过匿名委派使用代理的呼叫中心转移详细信息更新 UI。委派执行后得到的更新 UI 如图 8 所示。
图 7 处理传入消息的 Silverlight UserControl
Tags:使用 Silverlight 构建
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接