BLL层我们用wcf 来提供服务,这一层我们只对外只发布一个服务,为了使我们的代码可维护更好,我们引入抽象工厂模式。

这样的话我们首先也创建三个接口:

1)  IInfo

InfoResult Add(Info info);
InfoResult Update(Info info);
InfoResult Delete(int infoId);
InfoList GetInfoList(SearchInfo searchInfo);
InfoList GetInfoById(int infoId);

2)  IInfoType
跟上面相同,不再赘述。

3)  IUserInfo
跟上面相同,不再赘述。

然后实现这三个接口,我们也用infoBll为例如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using InfoPub.DAL;

using InfoPub.Modal;

namespace InfoPub.BLLService

{

public class InfoBLL:IInfo

{

private InfoDal infoDal=new InfoDal();

public InfoResult Add(Info model)

{

return infoDal.Add(model);

}

public InfoResult Update(Info model)

{

return infoDal.Update(model);

}

public InfoResult Delete(int infoId)

{

return infoDal.Delete(infoId);

}

public InfoList GetInfoList(SearchInfo searchInfo)

{

return infoDal.GetInfoList(searchInfo);

}

public InfoList GetInfoById(int infoId)

{

return infoDal.GetInfoById(infoId);

}

}

}

然后我们创建一个工厂接口:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace InfoPub.BLLService.Interface

{

public interface INBllFactory

{

IInfo CreateInfo();

IInfoType CreateInfoType();

IUserInfo CreateUserInfo();

}

}

然后实现工厂类:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using InfoPub.BLLService.Interface;

namespace InfoPub.BLLService

{

public class BllFactory : INBllFactory

{

public IInfo CreateInfo()

{

return new InfoBLL();

}

public IInfoType CreateInfoType()

{

return new InfoTypeBLL();

}

public IUserInfo CreateUserInfo()

{

return new UserInfoBLL();

}

}

}

为了访问工厂类我们定义一个工厂提供类:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace InfoPub.BLLService

{

public class Common

{

public static BllFactory bllFactory=new BllFactory();

}

}

这样我们就可以访问我们的工厂类了,为了对wcf 提供工厂类的方法,我们加入一个CommonData类,它就类似我们的门面:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace InfoPub.BLLService

{

public class CommonData

{

#region 全局变量

public static IInfo info = Common.bllFactory.CreateInfo();

public static IInfoType infoType = Common.bllFactory.CreateInfoType();

public static IUserInfo userInfo = Common.bllFactory.CreateUserInfo();

#endregion

}

}

然后定义我们的wcf 契约:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

using InfoPub.Modal;

namespace InfoPub.BLLService

{

[ServiceContract]

public interface IInfoPubService

{

[OperationContract]

InfoResult AddInfo(Info info);

[OperationContract]

InfoResult UpdateInfo(Info info);

[OperationContract]

InfoResult DeleteInfo(int infoId);

[OperationContract]

InfoList GetInfoList(SearchInfo searchInfo);

[OperationContract]

InfoList GetInfoById(int infoId);

[OperationContract]

InfoResult AddInfoType(InfoType infoType);

[OperationContract]

InfoResult UpdateInfoType(InfoType infoType);

[OperationContract]

InfoResult DeleteInfoType(int infoTypeId);

[OperationContract]

InfoTypeList GetInfoTypeList(SearchInfoType searchInfoType);

[OperationContract]

InfoTypeList GetInfoTypeById(int infoId);

[OperationContract]

InfoResult AddUserInfo(UserInfo userInfo);

[OperationContract]

InfoResult UpdateUserInfo(UserInfo userInfo);

[OperationContract]

InfoResult DeleteUserInfo(int userinfoId);

[OperationContract]

InfoList GetUserInfoList(SearchUserInfo searchUserInfo);

[OperationContract]

InfoList GetUserInfoById(int userInfoId);

}

}

它的实现如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

using InfoPub.Modal;

namespace InfoPub.BLLService

{

public class InfoPubService : IInfoPubService

{

public InfoResult AddInfo(Info info)

{

return CommonData.info.Add(info);

}

public InfoResult UpdateInfo(Info info)

{

return CommonData.info.Update(info);

}

public InfoResult DeleteInfo(int infoId)

{

return CommonData.info.Delete(infoId);

}

public InfoList GetInfoList(SearchInfo searchInfo)

{

return CommonData.info.GetInfoList(searchInfo);

}

public InfoList GetInfoById(int infoId)

{

return CommonData.info.GetInfoById(infoId);

}

public InfoResult AddInfoType(InfoType infoType)

{

return CommonData.infoType.Add(infoType);

}

public InfoResult UpdateInfoType(InfoType infoType)

{

return CommonData.infoType.Update(infoType);

}

public InfoResult DeleteInfoType(int infoTypeId)

{

return CommonData.infoType.Delete(infoTypeId);

}

public InfoTypeList GetInfoTypeList(SearchInfoType searchInfoType)

{

return CommonData.infoType.GetInfoTypeList(searchInfoType);

}

public InfoTypeList GetInfoTypeById(int infoId)

{

return CommonData.infoType.GetInfoTypeById(infoId);

}

public InfoResult AddUserInfo(UserInfo userInfo)

{

return CommonData.userInfo.Add(userInfo);

}

public InfoResult UpdateUserInfo(UserInfo userInfo)

{

return CommonData.userInfo.Update(userInfo);

}

public InfoResult DeleteUserInfo(int userinfoId)

{

return CommonData.userInfo.Delete(userinfoId);

}

public InfoList GetUserInfoList(SearchUserInfo searchUserInfo)

{

return CommonData.userInfo.GetUserInfoList(searchUserInfo);

}

public InfoList GetUserInfoById(int userInfoId)

{

return CommonData.userInfo.GetUserInfoById(userInfoId);

}

}

}

下面是我们的类图关系:

需要说明的是我这个是用ea逆向生成的类图,然后手工修改了一下。

转载于:https://www.cnblogs.com/hliq/archive/2011/07/24/2115237.html

信息发布系统 Jquery+MVC架构开发(6)BLL层提供WCF 服务 .相关推荐

  1. [置顶]信息发布系统 Jquery+MVC架构开发(7) Controller层

    Controller 这一层首先要添加对WCF 的引用: 如下,输入我们自己的wcf地址 http://localhost:8732/Design_Time_Addresses/InfoPub.BLL ...

  2. [置顶]信息发布系统 Jquery+MVC架构开发(4)Model 层

    下面开始在我们的解决方案里面增加实体. 这一层我个人感觉是跟数据库的映射层次,有了这一层,各层访问数据库会方便很多,不然的话得用DataSet或DataReader的直接访问了.理解为持久化对象就ok ...

  3. asp毕业设计—— 基于asp+access的软件信息发布系统设计与实现(毕业论文+程序源码)——软件信息发布系统

    基于asp+access的软件信息发布系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的软件信息发布系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需 ...

  4. 完成一个MVC+Nhibernate+Jquery-EasyUI信息发布系统

    一.最近学习了Jquery-EasyUI框架,结合之前用过的MVC3+Nhibernate做一个信息发布系统,对工作一年半的自己做一个总结吧!(也正好 供初学者学习!) 二.先上截图(系统简介),让大 ...

  5. java计算机毕业设计即时高校信息发布系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计即时高校信息发布系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计即时高校信息发布系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构 ...

  6. java ssm旅游景点景区门票预订及信息发布系统

    网络已经逐渐深入到人们生活的每一个角落,人们可以通过网络进行信息分享.在线交流.人们的生活也可以因为网络而丰富多彩,当互联网正式走进人们的生活的时候,它对传统的生活方式是一种颠覆,比如突破了地理上的限 ...

  7. 商场、超市信息发布系统解决方案

    商场.超市信息发布解决方案 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  8. 德睿多媒体信息发布系统

    今天,信息的有效传递比任何时候都重要.企业需要向消费者宣传产品:政府需要向市民传达政策法规:车站需要向旅客通知交通情况:学校需要向学生发布通知等等.户外广告.公告牌.告示栏,甚至黑板报等,都是常见的公 ...

  9. WML信息查询与后端信息发布系统实现-java -(报告+源码)

    1.1项目研究背景 在信息化时代的今天,如何方便快捷地进行信息的交互已经成为人们的热门话题.随着无线通讯技术以及手机终端的发展,随时随地进行信息的交互已经成为现实,WAP技术的出现犹如无线通讯的世界的 ...

最新文章

  1. mysql pdo 查询一条数据_pdo mysql怎么输出第1条 第4条 第7条数据
  2. linux uname 命令
  3. java default修饰符_Java修饰符看这一篇就够了
  4. electron调试html,electron桌面应用程序开发入门
  5. [BUUCTF-pwn]——ciscn_2019_s_3
  6. 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation...
  7. I - The Mad Mathematician FZU - 2042(未解决)
  8. k8s强制删除pod
  9. suse 10 下mysql安装
  10. 白板机器学习笔记 P22-P27 PCA降维
  11. java frame linux_JAVA环境(下) - Android框架简介_Linux编程_Linux公社-Linux系统门户网站...
  12. Atitit 知识的来源于生产方式大总结与机器学习分类 目录 1.1. 知识来源四个渠道 dna,经验,文化交流聚会,pc互联网等 1 1.2. 未来世界上大多数知识都将被机器提取,且将留存在机器
  13. PE格式详细讲解5 - 系统篇05|解密系列
  14. ES6 推荐网络文档书籍
  15. 自己动手,更换光猫,这次是吉比特H2-3换为华为MA5671。(中国移动光纤宽带)
  16. java毕业设计——基于java+Java3D的网络三维技术设计与实现(毕业论文+程序源码)——三维技术
  17. 爬虫千万条,守法第一条,爬虫不规范,亲人两行泪
  18. 台式计算机最新配置,例举2019推荐组装台式电脑最新配置清单
  19. PJzhang:微软出口管制条例
  20. java设计模式笔记

热门文章

  1. 人群与网络:新事物在网络中的扩散
  2. matlab2c使用c++实现matlab函数系列教程-perms函数
  3. 数电渣渣的一点学习感想(更新中)
  4. c语言鸢尾花智能分类,基于LogisticRegression的鸢尾花分类
  5. RHEL7忘记密码:修改root密码
  6. 消息中间件解决方案-JMS-ActiveMQ
  7. Swift3 中文手册.CHM版
  8. angular中的MVVM模式
  9. 浏览器桌面通知(notifications)
  10. mysql explain和profiling