vb实现三层结构及Wcf的入门实例(.net)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网上用来写三层结构和Wcf的实例不多,本人最近因为工作需要,简单学习了三层结构和Wcf服务,这里用 (vs 2010)作一个简单实例,希望能帮助一些需要的人快速入门。
网上关于三层结构和Wcf的解释都太专业和高大上,这往往会初学者带来困难。
这里用一些个人的理解作一些粗浅说明,各位配合下面的例子写出自己的代码后,再返回去看他们的专业定义,也许会更容易理解些。
所谓三层结构,按我的理解,就是把一个软件的开发,分成三块,一块专门作界面,一块专门作业务流程,一块专门作数据操作。
这在团队开发中非常有用,可以分工合作,一人作一部分,将来出错也好查错,维护起来也方便,特别是系统庞大了以后,作用更明显。
当然,如果是个人作个小软件,个人觉得什么界面、业务、数据还是放在一起吧,分层浪费的时间更多。
所谓的Wcf,我的简单理解就是为了实现三层结构中的数据层。
就是作一个数据操作的DLL,然后在网上发布这个DLL,别人调用这个DLL中的函数来实现功能,而不用管DLL是怎么写的。
那为什么不直接在自己的代码中写呢,而是要发布Dll到网上呢?答案是为了数据安全。
比如你要调用sql server中的数据库,客户端中如果使用了连接的用户名和密码,别人可以简简单单挂个小程序就把你的用户名、密码就截获了;而使用了wcf,数据库连接语句都是在服务器上进行,客户端只获得了返回的结果,显然就安全多了(平时我们浏览网页也是这种模式),还有一个好处就是如果这个数据的逻辑发生变化,更新服务器的DLL 文件就好,不需要再更新客户端了,比如某个算法,由原来的X*0.2调整为X*0.3,这个时候你也要客户端和你一起更新?这显然不经济。
当然如果你是作单机版的软件,在本机上运行的,就没有必要学wcf了。
下面会讲到Wcf的建立和在IIS 5.1上的发布,大家慢慢往下看。
以下的图例就不再作详细的文字描述了。
一、打开vs 2010,新建一个解决方案,名字为test,存在e:\mytest下
二、左上角菜单->文件->添加->新建项目->windows->windows窗体应用程序,名称:界
面层
四、左上角菜单->文件->添加->新建项目->Wcf->Wcf服务库,名称:数据层。
五、点击数据层。
点击[项目]菜单->数据层属性->将根命名空间改为dal,原因是wcf发布到iis以后,不认中文。
六、改名,将界面层的form1.vb改为Ui.vb,业务层的class1.vb改名为Bll.vb,数据层的IService1.vb改为I_dal.vb,Service1.vb改为Dal.vb,三层结构基本建立完成。
为了实现三层结构,我们按数据层->业务层->界面层的顺序往里面写代码。
其中的数据层用到了wcf,篇幅比较大,仔细看好。
七、设置IIS,用于发布Wcf
得重装.net framework
(2)安装ServiceModel
●进入C:\WINDOWS\\Framework\v3.0\Windows Communication
Foundation
●ServiceModelReg.exe -r
(3)ASPNET账户权限分配
●进入c:\windows\\framework\v2.0.50727
●aspnet_regiis.exe –ga ASPNET
(注意:1、上述命令都是在CMD下执行的;2、上述目录路径因系统安装的.net而定,如果没有对应的目录,可以直接搜索C:\WINDOWS\\Framework目录,找到ServiceModelReg.exe和aspnet_regiis.exe)
八、开始制作第一个wcf服务。
打开数据层的I_dal.vb,先作好接口,见图。
前缀<ServiceContract()>说明是接口,<DataContract()>说明是数据协定,简单理解就是自定义类型,用来做传输的参数。
十、右键点击数据层,点生成。
再点发布,这里发布到e:\abc目录
十二、在ie浏览器中输入http://127.0.0.1/wcf/Dal.Dal.svc,出现以下的提示,说明wcf服务已经发布成功。
十三、点击业务层,打开菜单[项目]->添加引用_>项目->数据层,这里主要是要用到自定义类型(数据协定)
十四、点击业务层,打开菜单[项目]->添加服务引用-> 地址输入http://127.0.0.1/wcf/Dal.Dal.svc,命名空间为:wcf
十五、点击界面层,打开菜单[项目]->添加服务引用-> 地址输入http://127.0.0.1/wcf/Dal.Dal.svc,命名空间为:wcf,这里的步骤和业务层的引用步骤是一致的。
为什么要进行这一步?因为很奇怪的,界面层引用了业务层的功能,但却不引用它的wcf配置。
或许新的vs版本会解决这个问题?图略。
十五、打开业务层的Bll.vb,输入一个函数据F_身份验证,看图,引用了刚才的Wcf服务。
十六、打开业务层的Bll.vb,输入以下代码。
十七、打开界面层的ui.vb,放入一个button,两个文本框txt_姓名,txt_口令。
十八、点击界面层,打开项目菜单->添加引用->项目->数据层、业务层
十八、Ui.vb中输入代码
十九、右键点击界面层->设置为启动项目。
二十、运行,输入用户名:王小二,密码:123,得出结果。
二十一、小结。
三层结构我个人的理解,应该是为了分工,界面归界面,业务实现归业务实现,数据归数据。
作一个大的系统时,光靠一个人是时间是太长的,而分工是就了节省时间,同时最重要的是,将来出问题时,维护好维护。
而wcf就是实现这个数据模块,不同的是他不在本机上运行,他放在服务器上运行,而本例子就是利用IIS来实现Wcf,这样子,客户端只能得到数据结果,不知道这个数据是怎么来的,提高了数据的安全性。