天道酬勤

博观而约取,厚积而薄发!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2010年4月30日

摘要: 栅格数据用一个规则格网来描述与每一个格网单元位置相对应的空间现象特征的位置和取值。在概念上,空间现象的变化由格网单元值的变化来反映。地理信息系统中许多数据都用栅格格式来表示。栅格数据在许多方面是矢量数据的补充,将两种数据相结合是GIS项目的一个普遍特征。一、栅格数据模型要素:栅格数据模型在GIS中也被称为格网(Grid)、栅格地图、表面覆盖(Surface Cover)或影像。格网由行、列、格网单... 阅读全文

posted @ 2010-04-30 17:44 Happy Coding 阅读(1072) 评论(0) 推荐(0)

只有注册用户登录后才能阅读该文。 阅读全文

posted @ 2010-04-30 13:49 Happy Coding 阅读(151) 评论(0) 推荐(0)

摘要: 用dataset方式取值 jetz 2008-08-07 18:18 阅读:414 评论:0xml dataset的发布 jetz 2008-07-25 21:44 阅读:81 评论:0Mapx实现双标注 jetz 2008-07-21 19:07 阅读:564 评论:0Allfeature.Item很慢 jetz 2008-06-06 09:50 阅读:86 评论:0MapX中取得图元操作的速度... 阅读全文

posted @ 2010-04-30 13:32 Happy Coding 阅读(502) 评论(0) 推荐(0)

摘要: 自从MapInfo把控件从MapX升级到MapXtreme之后,让人郁闷的是测距功能按钮在Win版本中消失了,只有Web版本中还保留着。所以下面的方法就是为了恢复这个必备的功能:1)为MapTool控件增加一个ToolBarButton // // toolBarButtonDistance // this.toolBarButtonDistance.ImageIndex = 11; this.... 阅读全文

posted @ 2010-04-30 13:31 Happy Coding 阅读(382) 评论(0) 推荐(0)

摘要: 开源gis项目Mitab在C#中的使用方法(原创)Yush我一直是用MapX写的写MapInfo公司Tab格式的文件,但是由于涉及到大量的图元绘制,MapX的绘制速度是受到限制的,其绘制的速度并不快,于是探索是不是有比他更好的组件。前段时间曾经用过ShapeLib来绘制shp文件,其绘制的速度还是相当可以的,有兴趣的话可以搜搜,其提供的开源包中有实例程序,怎么来用。而我今天要介绍的这个Mitab开... 阅读全文

posted @ 2010-04-30 13:30 Happy Coding 阅读(861) 评论(0) 推荐(0)

摘要: 网上的MapXtreme的资料实在太少了,MapXtreme编程基本上只能靠英文帮助和以前的Mapx的一些底子。我想写一个系列,把Mapx到Mapxtreme的学习历程记录下来。一、工具选择在Mapx中为控件选择工具比较迅速,也很直观,如下: Map1.CurrentTool = miZoomInToolmiZoomInTool是个枚举量,指定给CurrentTool属性即可,而且象在VB中,直接... 阅读全文

posted @ 2010-04-30 13:29 Happy Coding 阅读(692) 评论(0) 推荐(0)

摘要: MapXtreme的自带帮助的查找功能不好,不支持中文,网上的例子也比较少。把自己解决的几个问题拿出来与大家共享,希望有帮助!开发环境:VB.NET 2008 + MapXtreme20081、添加自定义工具没有使用mapxteme 提供的ToolBar控件,自己定制可交互的工具添加到自己的写的框架上,例子为管线剖面图工具,需要先在地图上绘制一条线,然后通过计算和这条线相交的所有管线的剖面信息,将... 阅读全文

posted @ 2010-04-30 13:28 Happy Coding 阅读(720) 评论(0) 推荐(0)

摘要: 开发的时候遇到的两个问题,好容易解决了,和大家分享一下:一、使用CreateTable 创建出来的tab文件有三个 .ID .MAP .DAT,唯一缺少一个 .TAB文件,好奇怪,明明按照例子里写的代码。经过仔细研究加到处寻找,终于找到了答案,少了一个函数 .WriteTabFile()生成tab的文件代码如下: Dim tableInfoNative As MapInfo.Data.TableI... 阅读全文

posted @ 2010-04-30 13:27 Happy Coding 阅读(642) 评论(0) 推荐(0)

摘要: 添加自定义工具按钮:[代码]状态栏相关的:[代码] 阅读全文

posted @ 2010-04-30 13:21 Happy Coding 阅读(481) 评论(0) 推荐(0)

摘要: 如果想要将一个选中的图元强调显示,用红色醒目的文字显示的话,我的思路如下: 1、不可能直接改原先的图元,所以必须要在一个新的图层上进行操作2、新的图层因为不同的人用,会放置不同的东西,用固定图层不合适,得用动态生成的图层 碰到很多问题,如下: 1、原来的图层,默认设置了autolabel,所以可以直接显示,但是mapxtreme2004并不支持对图层的autolabel的设置。要想在程序中自动标注... 阅读全文

posted @ 2010-04-30 13:21 Happy Coding 阅读(433) 评论(0) 推荐(0)

摘要: [代码] 阅读全文

posted @ 2010-04-30 13:20 Happy Coding 阅读(687) 评论(0) 推荐(0)

摘要: 创建新表 Temp[代码]图层筛选器[代码]设置地图中心点[代码]一些winform的知识:string strPath=Application.StartupPath;strPath=strPath.Substring(0,strPath.LastIndexOf(Path.DirectorySeparatorChar)+1) // get rid of \bin注册表操作:Microsoft.W... 阅读全文

posted @ 2010-04-30 13:19 Happy Coding 阅读(1359) 评论(0) 推荐(0)

摘要: MapXtreme 2008 最佳体验 GIS 地图实例[代码] 阅读全文

posted @ 2010-04-30 13:18 Happy Coding 阅读(1299) 评论(0) 推荐(0)

摘要: 本文部分说明内容摘自网络文章,经过本人在MapXtreme2008中编写相关的演示例子,详细说明如何操作MapXtreme2008提供的矢量符号和定制符号。MapXtreme 在其安装过程中自动安装 10 种 MapInfo 特定的 TrueType字体。这些字体为用户提供了字形符号选择,范围涉及天气、房地产、交通等。字形编号为 Unicode 字符值,由于这些编号位于第一个Unicode 字符代... 阅读全文

posted @ 2010-04-30 13:16 Happy Coding 阅读(748) 评论(0) 推荐(0)

摘要: 1.MapInfo.NetAlphaReleaseNotes http://www.mygis.com.cn/articles/23-543-543.htm 2.MapInfo.netoverview介绍PPT http://www.mygis.com.cn/articles/23-545-545.htm 3.MapInfo.NetBeta版本介绍文档 http://www.mygis.com.c... 阅读全文

posted @ 2010-04-30 13:15 Happy Coding 阅读(643) 评论(0) 推荐(0)

摘要: 地理信息系统由于项目的需要我现在又开始研究GIS了。由于我们项目是用.net开发的,所以GIS工具也是当前最新的MapXtreme2004,对于新事物我都有一种冲动,所以研究起来也相当有劲,不过这个也不是那么容易,中文资料太少(本人英语水平有限,正在努力中……),通过网络还是找到了很多零散的资料,在此整理一下。留于以后研究。1.asp.net中如何用MapControl... 阅读全文

posted @ 2010-04-30 13:14 Happy Coding 阅读(385) 评论(0) 推荐(0)

摘要: 1.从ORACLE表中加载图层的问题。。。MIConnection Connection=new MIConnection();Connection.Open();TableInfoServer tis1=new TableInfoServer("WORLD", "SRVR=ora8i;UID=wzz;PWD=11111111", "select * from world",MapInfo.Dat... 阅读全文

posted @ 2010-04-30 13:14 Happy Coding 阅读(281) 评论(0) 推荐(0)

摘要: 现在WebGIS已经很火热了,仿三维的WebGIS也雨后春笋地冒出来,广州本土测绘企业http://www.o.cn/更是热得不得了,广州地铁里都是用了他们的地图,知名度飙升不少。用MapXtheme进行开发,能否实现类似的功能呢?答案是可以的,不过最基础的,还是要借助http://www.o.cn/的地图来实现。在GIS领域里,有一个重要的概念“栅格”,意思就是把地图映射... 阅读全文

posted @ 2010-04-30 13:13 Happy Coding 阅读(536) 评论(0) 推荐(0)

摘要: 上一篇文章介绍了一个简单的地图缩放工具的制作,接下来需要介绍一下地图数据读取及加载的设计。首先,地图上的数据是来自数据库并自动生成的,我在这里并没有采用MapInfo的ADO.NET,而是采用本身系统的查询接口再加上自定义实体来生成地图图元,并插入MapInfo的Session中的临时表中以展示。考虑到程序的扩展性,我将数据获取、图元展示、地图展示等分离开来,尽量做到灵活易懂。数据获取接口,我只定... 阅读全文

posted @ 2010-04-30 13:11 Happy Coding 阅读(475) 评论(0) 推荐(1)

摘要: 多个窗体(MDI)同时展示,并相互操作这并不困难,小弟在这介绍一下由MapInfo中MapControl组成的多窗体关联处理。首先看看效果:以上多关联地图窗体实现了:在同一个窗体中加载多个(最多4个)地图,地图的拖拽、缩放操作可相互关联,每个地图上各个数据都可以完全不相同!现在我来说一下实现过程:首先要在同一个窗体中加载多个地图,我采用了UserControl来做:public partial c... 阅读全文

posted @ 2010-04-30 13:11 Happy Coding 阅读(499) 评论(0) 推荐(0)

摘要: 前阵做一个项目过程中,需要结合MapInfo进行地方展示开发,积累一点点心得与大家共享以下所有基于MapXtreme 6.6MapInfo提供了足够强大的WinForm地图空间,可以很方便地在VS中拖拉摆放。但如此强大的控件也带来了封闭性太强的问题。现在我们都接触到了大量Web上的地图,比如Google Map,LiveMap等,这些Web地图都具有非常高的交互能力,缩放由鼠标双击或鼠标中键滚动,... 阅读全文

posted @ 2010-04-30 13:10 Happy Coding 阅读(852) 评论(0) 推荐(0)

摘要: original link:http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.aspxorigin full text:我在2005上研究了好长时间, 才弄出来个简单的鹰眼,与大家分享,我的设计思路是将后台设置两个map,map1和map2,map1为主地图,map2为鹰眼地图,但是map2没有MapControl,定义一个实现... 阅读全文

posted @ 2010-04-30 13:09 Happy Coding 阅读(782) 评论(0) 推荐(0)

摘要: 一直以来Session都是MapXtreme中比较重要的部分。但是这方面的资料却寥寥无几。大概很多人都去用googleMap之类的地图工具了吧。基于此原因结合开发者参考写下这篇文章。ISession 接口的有用信息ISession Interface位于MapInfo.Engine命名空间。实现此接口的是一个内部对象SessionInternal,直接并不能使用此对象,必须用MapInfo.Ses... 阅读全文

posted @ 2010-04-30 13:07 Happy Coding 阅读(223) 评论(0) 推荐(1)

摘要: 1 设置图层可选状态/**////<summary>///改变层的可选择状态///</summary>///<paramname="selectableStatus"></param>///<returns></returns>publicboolLayerSelectableStatusUpdate(stringtableA... 阅读全文

posted @ 2010-04-30 13:05 Happy Coding 阅读(801) 评论(0) 推荐(0)

摘要: CBD(Component Based Development)的开发方法,就是要以控件作为软件组装的基本单位,而不是以函数、过程、类作为软件组装的基本单位。所以在Winform的GIS开发中,如果仅仅把MapXtreme控件放进窗体,然后在这个窗体上添加所有GIS的操作的代码,那么很快就会发现这个应用程序变得腐朽(corrupt)而不可维护。软件的坏味道(bad smell)来自封装程度不足。胖... 阅读全文

posted @ 2010-04-30 13:05 Happy Coding 阅读(308) 评论(0) 推荐(0)

摘要: MITAB MapInfo .TAB and .MIF/.MID Read/Write LibraryMITAB is an Open Source (i.e. Free!) C++ library to read and write MapInfo .TAB (binary) and .MIF/MID files. It isbased on the OGRlibrary which is ... 阅读全文

posted @ 2010-04-30 13:04 Happy Coding 阅读(694) 评论(0) 推荐(0)

摘要: 我们知道WCF有3种典型的对serviceinstance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Single。PerCall为每次service invocation创建一个新的serviceinstance; 而PerSession则让一个serviceinstance处理来自通过各Session(一... 阅读全文

posted @ 2010-04-30 13:00 Happy Coding 阅读(299) 评论(0) 推荐(0)

摘要: 5、Session Management Service的实现现在我们来看看Session Management真正的实现,和我以前的例子不同,我不是把所有的实现都写在WCF service上,而是定义了另一个class来实现所有的业务逻辑:SessionManager。我们分析一下具体的实现逻辑。namespace Artech.SessionManagement.Service{ public... 阅读全文

posted @ 2010-04-30 12:59 Happy Coding 阅读(393) 评论(0) 推荐(0)

摘要: 在上一篇文章中,我们通过自定义InstanceProvider实现了WCF和微软Enterprise Library Unity ApplicationBlock的集成, 今天我们已相同的方式实现WCF与Enterprise Library的另一个ApplicationBlock的集成:Policy Injection Application Block (PIAB)。PIAB,通过Method ... 阅读全文

posted @ 2010-04-30 12:58 Happy Coding 阅读(233) 评论(0) 推荐(0)

摘要: 我们都知道,WCF支持Duplex的消息交换模式,它允许在service的执行过程中实现对client的回调。WCF这种双向通信的方式是我们可以以Event Broker或者订阅/发布的方式来定义和调用WCFService。今天我们就给大家一个具体的例子:通过WCF的duplex communication方式现在Session管理。1、Session 管理提供的具体功能我们的例子实现了下面一些S... 阅读全文

posted @ 2010-04-30 12:58 Happy Coding 阅读(232) 评论(0) 推荐(0)

摘要: 松耦合、高内聚是我们进行设计的永恒的目标,如何实现这样的目标呢?我们有很多实现的方式和方法,不管这些方式和方法在表现形式上有什么不同,他们的思想都可以表示为:根据稳定性进行关注点的分离或者分解,交互双方依赖于一个稳定的契约,而降低对对方非稳定性因素的依赖。从抽象和稳定性的关系来讲,抽象的程度和稳定程度成正相关关系。由此才有了我们面向抽象编程的说法,所以“只有依赖于不变,才能应万变&rd... 阅读全文

posted @ 2010-04-30 12:57 Happy Coding 阅读(361) 评论(0) 推荐(0)

摘要: 在上一篇文章中,我们讨论了如何通过CallContextInitializer实现Localization的例子,具体的做法是将client端的culture通过SOAPheader传到service端,然后通过自定义的CallContextInitializer设置当前方法执行的线程culture。在client端,当前culture信息是通过OperationContext.Current.O... 阅读全文

posted @ 2010-04-30 12:56 Happy Coding 阅读(288) 评论(0) 推荐(0)

摘要: 在上一篇文章中, 我列出了WCF一系列的可扩展对象和元素,并简单介绍了他们各自的功能、适合的场景和具体解决的问题。从本篇开始我将通过一个个具体的例子来介绍如何利用这些扩展点对WCF进行扩展,从而解决一些我们在实现的项目开发中可能出现的问题。今天,我们将讨论如何通过WCFextension实现多语言、本地化的功能。我们模拟这样的一个场景:我们现在有一个支持多语言的项目,假设通过支持英文(en-US)... 阅读全文

posted @ 2010-04-30 12:55 Happy Coding 阅读(243) 评论(0) 推荐(0)

摘要: 在本系列的第一部分、第二部分中,我们对WCF的channel layer进行了深入的讨论。我们接下来继续讨论WCF的service mode layer。本篇文章着重介绍service 端的ServiceMode。写作此篇文章旨在达到以下两个目的:希望读者对ServiceMode有一个大致的了解,结合前面介绍的channel layer的相关知识,帮助读者了解WCF的整个实现机制和执行的流程。 ... 阅读全文

posted @ 2010-04-30 12:54 Happy Coding 阅读(244) 评论(0) 推荐(0)

摘要: 在本系列的每篇文章中,我多次提到WCF是一个极具可扩展性的分布是消息通信框架。为了让读者对WCF Extension有一个总体的的认识,在这里我会简单列举了我们经常使用的绝大部分的扩展点,以及通过这些扩展点能够解决实现项目开发中的那些问题。有一点需要特别提醒的是:对WCF extensions的灵活应用依赖于你对channel layer和service mode dispatching syst... 阅读全文

posted @ 2010-04-30 12:54 Happy Coding 阅读(216) 评论(0) 推荐(0)

摘要: 在上一篇文章中,我们通过一个直接借助BasicHttpBinding对象实现Client和Server端进行通信的例子,对WCF channel layer进行了一个大致上的介绍。由此引出了一些列通信相关的概念和对象,比如Channel,Outputchannel, Input channel,Request channel, Reply Channel,Duplex channel,Channe... 阅读全文

posted @ 2010-04-30 12:53 Happy Coding 阅读(329) 评论(0) 推荐(0)

摘要: 《我的WCF之旅》系列自开篇以来,得到了园子里很多朋友的厚爱,并荣登了博客园2007年度系列博文Top10。由于工作原因,沉寂了几个月,今天开始WCF新的旅程。如果说《我的WCF之旅》主要是对WCF基本原理概括性介绍,而对于这个新的系列,我将和大家分享我对WCF的一些实现机制、设计原理的理解,以及我在实际的项目开发中的一些实践经验(比如在后续的一些文章中,我将介绍通过WCFExtension实现一... 阅读全文

posted @ 2010-04-30 12:50 Happy Coding 阅读(219) 评论(0) 推荐(0)

摘要: 一、One-way MEP V.S. Responsible Service我们知道MSMQ天生就具有异步的特性,它只能以One-way的MEP(Message Exchange Pattern)进行通信。Client和Service之间采用One-wayMEP的话就意味着Client调用Service之后立即返回,它无法获得Service的执行结果,也无法捕捉Service运行的Exceptio... 阅读全文

posted @ 2010-04-30 12:48 Happy Coding 阅读(237) 评论(0) 推荐(0)

摘要: 一、为什么要使用MSMQ在一个分布式的环境中,我们往往需要根据具体的情况采用不同的方式进行数据的传输。比如在一个Intranet内,我们一般通过TCP进行高效的数据通信;而在一个Internet的环境中,我们则通常使用Http进行跨平台的数据交换。而这些通信方式具有一个显著的特点,那就是他们是基于Connection的,也就是说,交互双方在进行通信的时候必须保证有一个可用的Connection存在... 阅读全文

posted @ 2010-04-30 12:47 Happy Coding 阅读(277) 评论(0) 推荐(0)

摘要: 在任何Application的开发中,对不可预知的异常进行troubleshooting时,异常处理显得尤为重要。对于一般的.NET系统来说,我们简单地借助try/catch可以很容易地实现这一功能。但是对于一个分布式的环境来说,异常处理就没有那么简单了。按照面向服务的原则,我们把一些可复用的业务逻辑以Service的形式实现,各个Service处于一个自治的环境中,一个Service需要和另一个... 阅读全文

posted @ 2010-04-30 12:45 Happy Coding 阅读(197) 评论(0) 推荐(0)

摘要: 在一个基于面向服务的分布式环境中,借助一个标准的、平台无关的Communication Infrastructure,各个Service通过SOAPMessage实现相互之间的交互。这个交互的过程实际上就是Message Exchange的过程。WCF支持不同形式的MessageExchange,我们把这称之为Message Exchange Pattern(MEP), 常见的MEP包括:Requ... 阅读全文

posted @ 2010-04-30 12:45 Happy Coding 阅读(543) 评论(0) 推荐(0)

摘要: 无论对于WebService还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message。在我们对WebService和WCF进行深入学习的时候,借助一些Soap Trace 工具对SoapMessage进行深入剖析是非常有必要的。在这些工具之中,我觉得最好用的就是Microsoft Soap Toolkit中的SoapTrace Utility和tcpTra... 阅读全文

posted @ 2010-04-30 12:44 Happy Coding 阅读(261) 评论(0) 推荐(0)

摘要: WCF中的Session我们知道,WCF是MS基于SOA建立的一套在分布式环境中各个相对独立的Application进行Communication的构架。他实现了最新的基于WS-*规范。按照SOA的原则,相对独自的业务逻辑以service的形式封装,调用者通过Messaging的方式调用Service。对于承载着某个业务功能的实现的Service应该具有Context无关性、甚至是Solution... 阅读全文

posted @ 2010-04-30 12:43 Happy Coding 阅读(208) 评论(0) 推荐(0)

摘要: 当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对SOA,对面向服务产生误解。其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替。在开始本Blog之前,我先来谈谈我对SOA和OO的区别,首先申明,这只是一家之言,欢迎大家批评指正,并且关于SO的谈论不是本Blog的主题,只是主题的引子,在这里只是简单讨论而已 。OO和SO之间具有... 阅读全文

posted @ 2010-04-30 12:42 Happy Coding 阅读(219) 评论(0) 推荐(0)

摘要: 对于.NET重载(Overloading)——定义不同参数列表的同名方法(顺便提一下,我们但可以在参数列表上重载方法,我们甚至可以在返回类型层面来重载我们需要的方法——页就是说,我们可以定义两个具有相同参数列表但不同返回值类型的两个同名的方法。不过这种广义的Overloading不被我们主流的.NET 语言所支持的——C#,V... 阅读全文

posted @ 2010-04-30 12:41 Happy Coding 阅读(168) 评论(0) 推荐(0)

摘要: 几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ),在文章中我提供了一个如果在Console Application 调用Duplex WCFService的Sample。前几天有个网友在上面留言说,在没有做任何改动得情况下,把作为Client的ConsoleApplica... 阅读全文

posted @ 2010-04-30 12:41 Happy Coding 阅读(266) 评论(1) 推荐(0)

摘要: ... ...续Part I([原创] 我的WCF之旅(4):WCF中的序列化(Serialization)- Part I)XMLSerializer提到XMLSerializer,我想绝大多数人都知道这是asmx采用的Serializer。首先我们还是来看一个例子,通过比较ManagedType的结构和生成的XML的结构来总结这种序列化方式采用的是怎样的一种Mapping方式。和DataCon... 阅读全文

posted @ 2010-04-30 12:40 Happy Coding 阅读(232) 评论(0) 推荐(0)

摘要: SOA 和MessageWindows Communication Foundation (WCF) 是基于面向服务架构(Service OrientationArchitecture——SOA)的一种理想的分布式技术(Distributed Technology),相信在今后在建立基于SOA企业级别的解决方案和进行系统集成方面将会大有作为。一个基于SOA结构的互联系统(C... 阅读全文

posted @ 2010-04-30 12:39 Happy Coding 阅读(238) 评论(0) 推荐(0)

摘要: 双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交换模式使服务端回调(Callback)客户端操作成为可能。一、两种典型的双工MEP1.请求过程中的回调这是一种比较典型... 阅读全文

posted @ 2010-04-30 12:37 Happy Coding 阅读(426) 评论(0) 推荐(0)

摘要: WCF实际上是构建了一个框架,这个框架实现了在互联系统中各个Application之间如何通信。使得Developers和Architect在构建分布式系统中,无需在考虑如何去实现通信相关的问题,更加关注与系统的业务逻辑本身。而在WCFInfrastructure中,各个Application之间的通信是由Endpoint来实现的。Endpoint的结构Endpoint包含以下4个对象:Addre... 阅读全文

posted @ 2010-04-30 12:36 Happy Coding 阅读(358) 评论(1) 推荐(0)

摘要: 为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一样,WCF本质上提供一个跨进程... 阅读全文

posted @ 2010-04-30 12:35 Happy Coding 阅读(203) 评论(0) 推荐(0)

摘要: 本系列所有文章均转自Artech的博客,在此向他表示感谢,如有触犯您的版权,请及时联系我,谢谢!作者博客:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html由于本系列文章太多,所以就不一一写明转载了,在此统一声明,任何转载需声明原文链接! 阅读全文

posted @ 2010-04-30 12:34 Happy Coding 阅读(135) 评论(0) 推荐(1)

摘要: 聊天室实例:点此下载 我在《Windows Communication Foundation之旅•三》中详细介绍了WCF中的Duplex消息交换模式。因为Duplex实现了客户端与服务端双向通信的功能,故而我实现了一个简单的聊天室程序,展现Duplex的特点。有朋友在阅读了这个例子之后,提出一个问题,即“如何让服务端向指定的客户端发送消息?”很高兴的是,这位朋友在... 阅读全文

posted @ 2010-04-30 12:31 Happy Coding 阅读(314) 评论(1) 推荐(0)

摘要: 最近有个项目,为了使它的实现能够得到最大限度的复用,在设计时采用了SOA的架构。从层次上将其分离为应用服务(AS)和设备服务(DS),并都用WCF服务来实现。这样在以后的项目中只需根据实际硬件配置修改DS就能使用。采用这种架构的确有很多优势,只是实现时对于服务的要求更高:松耦合、更稳定、对于异常的补偿策略足够完善等等。项目中UI必须以Client的形式登录到AS,这样当AS检测到有Client登录... 阅读全文

posted @ 2010-04-30 12:30 Happy Coding 阅读(730) 评论(1) 推荐(0)

摘要: 在windows平台上,MSMQ是首选的消息传递中间件,它是一种高速、异步、可靠的通信机制,当我们在Internet上的两个应用需要交换信息时,使用这样的中间件可能是必须的。WCF完全面向SOA,大大简化了以往风格迥异的多种分布式解决方案。刚好,最近的一个项目需要使用SOA架构,而底层需要使用MSMQ作为消息传递基础设施,所以这两天研究了一下,在WCF中使用MSMQ的方法。下面以一个例子说明。首先... 阅读全文

posted @ 2010-04-30 12:29 Happy Coding 阅读(240) 评论(0) 推荐(0)

摘要: 在WCF中,我们可以给service contract指定callbackContract来进行回调, 而回调接口由客户端实现。为了说明问题,我们设计了一个简单的scenario。scenario description:假设WCF service提供简单的AddTo(),即进行累积。客户端通过proxy消费这个service并将计算结果发布到所有注册了回调通道的其他客户端。回调接口设计如下:[代... 阅读全文

posted @ 2010-04-30 12:29 Happy Coding 阅读(1301) 评论(4) 推荐(3)

摘要: 关于这几个属性,在MSDN中的解释有点敷衍了事。Open/Close/Receive/Send本是HTTP/TCP/SOCKET的概念,Read/Write Operation则是Web Service的概念。1.OpenTimeout客户端与服务端建立连接时,如果超过指定时间都还没完成,就引发TimeoutException。在TCP通讯中,服务器必须首先准备好侦听端口并在该端口上侦听(List... 阅读全文

posted @ 2010-04-30 12:25 Happy Coding 阅读(325) 评论(0) 推荐(0)

摘要: WCF宿主与服务托管若要公开WCF服务,需要提供一个运行服务的宿主环境。就像.NET CLR需要创建宿主环境以托管代码一般,WCF的宿主环境同样运行在进程的应用程序域中。在应用程序域中可以创建一个或多个ServiceHost实例,其关系如图一所示:图1:托管ServiceHostWCF并不推荐在应用程序域中创建多个ServiceHost实例。如果要托管多个服务,完全可以在一个宿主中通过多个Endp... 阅读全文

posted @ 2010-04-30 12:25 Happy Coding 阅读(712) 评论(0) 推荐(0)

摘要: I received a question regarding this poston WCF and what my handlers look like when a client disconnects (eitherbecause of a fault or the client connection is closed). It's fairlysimple. Here's the co... 阅读全文

posted @ 2010-04-30 12:22 Happy Coding 阅读(383) 评论(0) 推荐(0)

摘要: 一、模板方法(Template Method)模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。很多人可能没有想到,模版方法模式实际上是所有模式中最为常见的几个模式之一,而且很多人可能使用过模版方法模式而没有意识到自己已经使用了这个模式。... 阅读全文

posted @ 2010-04-30 12:21 Happy Coding 阅读(165) 评论(0) 推荐(0)

摘要: 一、策略(Strategy)模式策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。假设现在要设计一个贩卖各类书籍的电子商务网站的购物车(ShoppingCat)系统。一个最简单的情况就是把所有货品的单价乘上数量,但是实际情况肯定比这要复杂。比如,本网站可能对所有的教材类图书实行每本一元的折扣;对... 阅读全文

posted @ 2010-04-30 12:21 Happy Coding 阅读(214) 评论(0) 推荐(0)

摘要: 一、访问者(Visitor)模式访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。问题提出System.Collection命名空间下提供了大量集合操作对象。但大多数情况下处理的都是同类对象的聚集。换言之,在聚集上采取的操作都是一些针对同类型对象的同类操作。但是如果针对一个保存有不同类型对象的聚集采取某种操作该怎么办呢?粗看... 阅读全文

posted @ 2010-04-30 12:20 Happy Coding 阅读(131) 评论(0) 推荐(0)

摘要: 一、观察者(Observer)模式观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一个软件系统常... 阅读全文

posted @ 2010-04-30 12:20 Happy Coding 阅读(202) 评论(0) 推荐(0)

摘要: 一、命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对... 阅读全文

posted @ 2010-04-30 12:19 Happy Coding 阅读(159) 评论(0) 推荐(0)

摘要: 行为模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为模式不仅仅是关于类和对象的,而且是关于它们之间的相互作用的。行为模式分为类的行为模式和对象的行为模式两种。类的行为模式:类的行为模式使用继承关系在几个类之问分配行为。 对象的行为模式:对象的行为模式则使用对象的聚合来分配行为。在后面将要介绍的行为模式包括以下几种:Chain of Resp.(责任链模式... 阅读全文

posted @ 2010-04-30 12:19 Happy Coding 阅读(143) 评论(0) 推荐(0)

摘要: 一、享元(Flyweight)模式Flyweight在拳击比赛中指最轻量级,即"蝇量级",有些作者翻译为"羽量级"。这里使用"享元模式"更能反映模式的用意。享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存储在享元对象内部并且不会随环境改变而改变。因此内蕴状态并可以共享。外蕴... 阅读全文

posted @ 2010-04-30 12:18 Happy Coding 阅读(148) 评论(0) 推荐(0)

摘要: 一、门面(Facade)模式外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。医院的例子用一个例子进行说明,如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。首先病人必须先挂号,然后门诊。如果医生要求化验,病人必... 阅读全文

posted @ 2010-04-30 12:18 Happy Coding 阅读(130) 评论(0) 推荐(0)

摘要: 一、桥梁(Bridge)模式桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。注:《Java与模式》一书认为Bridge模式不是一个使用频率很高的模式,我不太赞同,我认为Bridge模式中蕴涵了很多设计模式的关键思想在... 阅读全文

posted @ 2010-04-30 12:18 Happy Coding 阅读(129) 评论(0) 推荐(0)

摘要: 一、代理(Proxy)模式代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做Proxy或Surrogate,中文都可译成"代理"。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。二、代理的种类如果按照使用目的来划分,代理有以下... 阅读全文

posted @ 2010-04-30 12:17 Happy Coding 阅读(155) 评论(0) 推荐(0)

摘要: 一、装饰(Decorator)模式装饰(Decorator)模式又名包装(Wrapper)模式[GOF95]。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。引言孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领。他变成鱼儿时,就可以到水里游泳;他变成雀儿时,就可以在天上飞行。而不管悟空怎么变化,在二郎神眼里,他永远是那只猢狲。装饰模式以对客户透明的方式动态地给一个... 阅读全文

posted @ 2010-04-30 12:16 Happy Coding 阅读(168) 评论(0) 推荐(0)

摘要: 一、合成(Composite)模式合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 从和尚的故事谈起 这是小时候我奶奶讲的故事:从前有个山,山里有个庙,庙里有个老和尚在给小和尚讲故事,讲的什么故事呢?从前有个山,山里有个庙……。奶奶的故事要循环多少次,... 阅读全文

posted @ 2010-04-30 11:31 Happy Coding 阅读(128) 评论(0) 推荐(0)

摘要: 结构模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构。结构模式描述两种不同的东西:类与类的实例。根据这一点,结构模式可以分为类的结构模式和对象的结构模式。 后续内容将包括以下结构模式: 适配器模式(Adapter):Match interfaces of different classes 合成模式(Composite):A tree structure o... 阅读全文

posted @ 2010-04-30 11:29 Happy Coding 阅读(188) 评论(0) 推荐(0)

摘要: 一、原型(Prototype)模式原型模式的用意是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。 从孙大圣的手段谈起 孙悟空在与黄风怪的战斗中,"使一个身外身的手段:把毫毛揪下一把,用口嚼得粉碎,望上一喷,叫声'变',变有百十个行者,都是一样得打扮,各执一根铁棒,把那怪围在空中。"换而言之,孙悟空可以根据自己的形象,复制出很多"身外身"来。 老... 阅读全文

posted @ 2010-04-30 11:27 Happy Coding 阅读(155) 评论(0) 推荐(0)

摘要: 一、建造者(Builder)模式建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 对象性质的建造 有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。 有些情况下... 阅读全文

posted @ 2010-04-30 11:25 Happy Coding 阅读(129) 评论(0) 推荐(0)

摘要: 一、单例(Singleton)模式单例模式的特点: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其它对象提供这一实例。单例模式应用: 每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。 一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号。否则会出现主键重复。二、Sing... 阅读全文

posted @ 2010-04-30 11:22 Happy Coding 阅读(176) 评论(0) 推荐(0)

摘要: 一、抽象工厂(Abstract Factory)模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。 为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图: 图中一共有四个产品族,分布于三个不同的产品等级结构中。只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一的确定这... 阅读全文

posted @ 2010-04-30 11:21 Happy Coding 阅读(180) 评论(0) 推荐(0)

摘要: 一、工厂方法(Factory Method)模式工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅... 阅读全文

posted @ 2010-04-30 11:18 Happy Coding 阅读(166) 评论(0) 推荐(0)

摘要: 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 一、简单工厂(Simple Factory)模式Simple Factory模式根据提供给它的数据,返回几个可能类中... 阅读全文

posted @ 2010-04-30 11:17 Happy Coding 阅读(138) 评论(0) 推荐(0)

摘要: 三、依赖倒置原则(DIP) 依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。 简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述: 抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。 反面例子:缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。 解决办法一:将Light作成Abstra... 阅读全文

posted @ 2010-04-30 11:16 Happy Coding 阅读(137) 评论(0) 推荐(0)

摘要: 《人月神话》焦油坑、没有银弹* 软件腐化的原因:问题所在 设计目标----------------------------------------------------------------------------过于僵硬 可扩展性(新性能可以很容易加入系统)过于脆弱 灵活性(修改不会波及其它)复用率低 粘度过高 可插入性(新功能容易加入系统(气囊加入方向盘))* 提高系统可复用性的几点原则:... 阅读全文

posted @ 2010-04-30 11:15 Happy Coding 阅读(153) 评论(0) 推荐(0)

摘要: 本系列所有设计模式均为转载,原文地址:http://www.cnblogs.com/zhenyulu/articles/36058.html课本:《C#设计模式》,电子工业出版社,ISBN 7-5053-8979-3。33元含光盘。 课程内容:设计模式 来源:亚历山大的建筑模式、Gamma等人(1995)创作的"Design Patterns: Elements of Reusable Softw... 阅读全文

posted @ 2010-04-30 11:14 Happy Coding 阅读(185) 评论(0) 推荐(0)

摘要: 在技术特点、功能、架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考。 本人选择了比较熟悉的几款WebGIS产品:MapServer(开源项目)、MapXtreme(MapInfo)、ArcIMS(ESRI)、ArcServer(ESRI),与MapGuide(开源项目)相比较。 由于本人未对国内的WebGIS产品如SuperObj... 阅读全文

posted @ 2010-04-30 11:08 Happy Coding 阅读(1093) 评论(0) 推荐(0)

摘要: 首先,再次感谢Tom有关切图技术支持。 自从Google Map推出Tile Map Image方式提供的地图位置服务之后,国内的go2map、mapabc、mapbar等专业地图搜索公司纷纷仿效,相继推出了基于地图瓦片金字塔模型的位置搜索新模式服务,在这里称为“公众地图服务框架”(Public Map Service Infrestructure,PMSI)。PMSI区... 阅读全文

posted @ 2010-04-30 11:07 Happy Coding 阅读(1636) 评论(0) 推荐(0)

摘要: 最近刚修改整理了原来写的一些文字,主要是讲固定范围的基于ArcIMS的地图预生成技术,有完整的算法阐述,贴出来供需要的朋友参考。所有内容均来自于自己的项目经历、对互联网上的相关资料的学习,最近发现不少朋友都在研究这方面的问题,所有希望也能参与做点事并对大家的工作或多或少有一点帮助。文中主要简述了地图切图,并且简单地介绍了一下当前基于预生成技术的Web地图服务现状。由于时间仓促,中间肯定有不准确或错... 阅读全文

posted @ 2010-04-30 10:46 Happy Coding 阅读(667) 评论(0) 推荐(0)

摘要: 下面是我分析过,或者说接触过的一些基于.NET平台开发的开源GIS项目。先列在这,欢迎大家积极回复,我会及时更新以保持这里列出的项目都是最新的、最有价值的、还没有夭折的。。。NASA World WindNASA World Wind是使用.NET开发的一个Windows窗体系统,以地球外观看得角度提供全球定位功能,类似于GoogleEarth。它结合了美国国家航空航天局(NASA)从卫星拍摄的图... 阅读全文

posted @ 2010-04-30 10:44 Happy Coding 阅读(1062) 评论(0) 推荐(0)

摘要: 通过上一节学习,可以看出在Silverlight API中不仅可以轻松使用ArcGIS Server9.3发布的地图服务,也可以通过继承相应的图层,引入其他的数据源,比如ArcGIS Server9.2发布的地图服务,WMS服务,或者其他免费的数据。本节就通过一个实例,来看看如何将Google Map作为底图数据。 Google Map是经过缓存的数据,所以需要继承的是TiledMapServi... 阅读全文

posted @ 2010-04-30 10:10 Happy Coding 阅读(505) 评论(0) 推荐(0)

摘要: 在用SilverlightAPI开发的过程中,不论是从客户端提交到服务器端的数据,还是从服务器端返回客户端的数据,都要表现在浏览器中,具体的来说是Map控件里。但根据各自类型的不同,比如数据源,地图服务的类型,是否缓存等,决定了它们将处于某个图层里,前面讲过的GraphicsLayer就是一种图层。清楚地认识这些图层类型,对于处理于服务器与客户端之间的地图数据来说是很重要的。 所有的图层都是从L... 阅读全文

posted @ 2010-04-30 10:08 Happy Coding 阅读(540) 评论(0) 推荐(0)

摘要: 我们与地图交互的过程时刻在进行着:一个拉框放大操作,或者对地图内容的查询等。这些交互过程中的输入输出,通常都是反映在独立于地图数据一个“层”上。比如拉框放大,我们能看见鼠标所画的一个矩形;又比如对兴趣点的查询,结果通常是将符合条件的兴趣点的形状高亮显示在那个独立的“层”中,通过它既可以反映用户的输入,又可以展现地图的输出。这个“层&rdq... 阅读全文

posted @ 2010-04-30 10:06 Happy Coding 阅读(686) 评论(0) 推荐(0)

摘要: 通过上一节的学习,我们已经知道了如何与GraphicLayer交互,但毕竟GIS不是一个画板,所以这节来看一下如何通过Silverlight API完成GIS中的分析功能。 GIS之所以是一个通用的工具,就是因为它具有各种各样分析和处理数据的能力。Silverlight API中提供了Task,使我们能够轻松完成常见的分析任务。 先来考虑一下吃饺子的场景。要想吃饺子,我们需要先去买菜,买肉,回... 阅读全文

posted @ 2010-04-30 10:06 Happy Coding 阅读(505) 评论(0) 推荐(0)

摘要: Widgets翻译过来是小玩具。如果使用过Dojo或者ExtJS等js框架肯定会了解到这个“小玩具”也有大用处,能够在很大程度上减少我们的工作量,快速完成功能需求。能减少多大工作量呢?让我们先来,点击这里,看一个例子。 前两节的地图中,总感觉少点什么……对,就是一个sliderbar,有了它感觉就像汽车有了方向盘一样,能够控制方向了。那么来看看... 阅读全文

posted @ 2010-04-30 10:05 Happy Coding 阅读(617) 评论(0) 推荐(0)

摘要: 这节在一个地图实例的基础上,来对Silverlight API中的一些基本概念做一个总体了解,顺便熟悉一下Silverlight的开发知识。 点击这里,直接看效果。 根据上一节的知识,可以知道这个Silverlight程序里包含了一个Map控件,并且里面至少有一个WorldImagery的图层。那么Page.xaml里的关键代码开起来应该是这样的: <Grid x:Name="Layou... 阅读全文

posted @ 2010-04-30 10:04 Happy Coding 阅读(1001) 评论(0) 推荐(0)

摘要: 这一节来对Silverlight API(ArcGIS API for Silverlight,下同)的开发有个总体的认识。 欲善其事先利其器。要做开发,第一步就得搭建环境。因为是在Siverlight基础上做开发,所以先得整理好Siverlight的开发环境。Silverlight并没有内建在VS2008中,而是作为add-on的形式附加的。在这里可以找到详细的安装步骤: 说明一下,步骤1安... 阅读全文

posted @ 2010-04-30 10:03 Happy Coding 阅读(1543) 评论(0) 推荐(1)

摘要: 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都没关系。但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中。1100也不是一成不变,没准哪天为了打击犯罪,会在你的1100上强制装上GPS。GIS工作既然建立在计算机的基础上,当然也得随着IT行业与时俱进。 看看现在计算机应用的趋势吧。云(计算),这个东西可讲不清楚,因为云嘛,飘忽不定的。不过可以这样... 阅读全文

posted @ 2010-04-30 10:02 Happy Coding 阅读(455) 评论(0) 推荐(0)

摘要: [原创]MapXtreme实用技巧与源码10例 普通图片生成MapInfo格式电子地图的步骤 http://blog.csdn.net/hmbb2008/category/184134.aspx基于MapXtreme的WebGPS系统的设计与实现/*** http://blog.csdn.net/hornbill/archive/2007/01.aspx 最全** 地图上汽车图标想根据行驶方向进行... 阅读全文

posted @ 2010-04-30 10:01 Happy Coding 阅读(1230) 评论(0) 推荐(0)

摘要: SharpMapSharpMap是一个基于.NET 2.0使用C#开发的Map渲染类库,可以渲染ESRI Shape、PostGIS、MS SQL等格式的GIS数据,通过扩展地图数据Provider,还可以支持其他格式,例如由其他作者开发的 oracle Spatial provider。SharpMap可应用于桌面和Web程序。链接:http://www.codeplex.com/SharpMa... 阅读全文

posted @ 2010-04-30 10:00 Happy Coding 阅读(481) 评论(0) 推荐(0)

摘要: 单位:m Util.distanceByLnglat = function(lng1,lat1,lng2,lat2) { var radLat1 = Util.Rad(lat1); var radLat2 = Util.Rad(lat2); var a = radLat1 - radLat2; var b = Util.Rad(lng1) - Util.Rad(lng2); var s ... 阅读全文

posted @ 2010-04-30 10:00 Happy Coding 阅读(484) 评论(0) 推荐(0)

摘要: 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一... 阅读全文

posted @ 2010-04-30 09:58 Happy Coding 阅读(264) 评论(0) 推荐(0)

摘要: NUnit是.net平台上使用得最为广泛的测试框架之一,本文将通过示例来描述NUnit的使用方法,并提供若干编写单元测试的建议和技巧,供单元测试的初学者参考。继续下文之前,先来看看一个非常简单的测试用例(TestCase):Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlight... 阅读全文

posted @ 2010-04-30 09:55 Happy Coding 阅读(235) 评论(0) 推荐(0)

摘要: In this article I will show you how you can unit test your events. I will show you a simple technique that will enable you to test if your events fire exactly as often as you want them to and I will p... 阅读全文

posted @ 2010-04-30 09:52 Happy Coding 阅读(259) 评论(0) 推荐(0)

摘要: 写了NUnit使用之HelloWorld后,又不知道该写什么了,好像NUnit就这样了.但我们有时又会为测试而抓狂,其实NUnit只是一个工具,写好的单元测试用例要遵循好的设计原则,如:ATRIP.这里就不过多解释了,转入正题. 对Private方法的测试并不是NUnit本身的功能,而是我们通过.net的反射机制执行private方法得到结果,再各期望值进行比较.所以这次要讲的重点在于.net反... 阅读全文

posted @ 2010-04-30 09:51 Happy Coding 阅读(457) 评论(0) 推荐(0)