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

本文详细介绍了如何利用WCF提供服务,并通过抽象工厂模式提高代码可维护性。主要实现了三个接口及其对应的服务层实现,接着创建了一个工厂接口和工厂类,最终定义了访问工厂类的提供类,以及对WCF提供工厂类方法的CommonData类。此过程展示了如何在服务层中整合多个业务逻辑模块,以实现更高效、灵活的系统构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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逆向生成的类图,然后手工修改了一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值