应用场景
做过开发的会遇到过这样一个情景:
1、写了很多代码做了一个系统;
2、后来又要做一个类似系统,也有了设计模式概念,就把第一个系统的代码抽调出来,封装成公用模块或类库,供第二个系统使用;
3、又有几个类似的系统要做,为了减少工作效率,提炼出自己的一个框架。
说起这个,就绕回到第一节提到过地图系统架构问题,在这里主要就是地图服务api的概念。可以想象一下,本来做的GIS系统只支持桌面方式,突然说要做出WebGiS,是不是要重新开发?没必要,我们只需做一个共有的地图服务接口供调用,无论是给桌面程序还是浏览器,都可以获得一致的效果,这也就是从B/S和C/S转向B/S/S和C/S/S概念,中间的S就是Application Server,我们把服务api部署在这里,基于此,我们又可以做一个DEMO。
DEMO
1、在此,借用一下WCF,创建控制台程序,构建解决方案如图,由于只是简单演示,具体细节先不做深究:
IDomain.cs、DomainService.cs、clentaccesspolicy.xml是为了实现跨域,Site是数据库里的基站信息model,ISiteService和SiteService为模拟的地图查询服务,具体代码为:
IDomain.cs
- [ServiceContract]
- public interface IDomain
- {
- [OperationContract]
- [WebGet(UriTemplate = "ClientAccessPolicy.xml")]
- Message ProvidePolicyFile();
- }
ISiteService.cs
- [ServiceContract]
- public interface ISiteService
- {
- [OperationContract]
- List<Site> GetSites();
- }
- [DataContract]
- public