代码改变世界

谈谈中大型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项目见下图:

  

   这样的层次划分乍看比较复杂,其实当项目的代码量逐渐增大时,代码的组织形式将会越来越清晰。