谈谈中大型Silverlight应用的组织形式(一),层次划分
2009-05-08 20:08 Amar-Yao 阅读(811) 评论(2) 编辑 收藏 举报最近在做一个基于Silverlight和WCF的应用平台。和大家讨论一下,想法不是很成熟,欢迎拍砖。
我们知道Silverlight是纯客户端技术代码要通过XAP包的形式下载到客户端运行。而WCF是服务器端技术,
通过Endpoint将服务契约发布给服务的用户。做过Java的同志肯定很熟悉了,这种下载代码到客户
端运行的方式与Applet惊人的相似,只是这里的Server端是WCF,而Applet的Server端往往是EJB。
这种形式其实已经自然把我们的代码划分为明确了两层:Client和Server。由于整个平台比较庞大所以我又
加入了按模块划分的层次结构,整个项目的层次划分见下图:
每一层的命名采用 解决方案名+模块名+Public/Private/Client (+组件名称) 的形式
最后的Public表示本层的代码可能运行在客户端也可能运行在服务器端,Private表示本层的代码只运行在Server端,
Client表示本层代码只能下载到客户端运行。其中的XCenter.Hosting.Console是在开发阶段的WCF宿主,项目类型
控制台应用程序。代码正式发布时,应该考虑运行更稳定部署更方便的Windows服务宿主形式。
如果是通用组件也分为Client和Server端两种。从项目命名可以清楚地获知。整个项目按模块存放到不同的解决方案文
件加中。
SL后缀的项目均为存放连接的项目。因为Silverlight项目不能直接引用普通的类库项目。这里需要注意的是连接进来的
类必须符合Silverlight代码的规则,不能依赖Silverlight不支持的API。
SL项目见下图:
这样的层次划分乍看比较复杂,其实当项目的代码量逐渐增大时,代码的组织形式将会越来越清晰。