应用wCF 企业库搭建的一个Demo

小弟最近因项目需要自己搭建框架,但是不知道怎么搭建,所以做了一个搭建的demo,希望大家能之处其中不妥的地方,项目是传统的bussess项目,基本的信息维护。

项目的整体机构图

1 首先我们来说说数据层


namespace Neower.UnicomVideo.DataAccess
{
    public class UserInfoDA : DataAccessBase
    {
        public virtual UserInfo[] GetUserInfos()
        {
            string sql = "SELECT * FROM dbo.UserInfo";
            DbCommand command = Db.GetSqlStringCommand(sql);
            DataSet ds = Db.ExecuteDataSet(command);

            List<UserInfo> userInfos = new List<UserInfo>();
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                UserInfo userInfo = new UserInfo()
                {
                    UserID = row["UserID"].ToString(),
                    UserName = row["UserName"].ToString(),
                    UserAge = string.IsNullOrEmpty(row["UserAge"].ToString()) ? new  Nullable<int>() : int.Parse(row["UserAge"].ToString())
                };
                userInfos.Add(userInfo);
            }
            return userInfos.ToArray();
        }
    }
}

 

基类代码 

在这层有一个帮助类 主要用于创建对象,因为后面的每一层都要访问数据层,所以把它放到数据层了

2紧接下来的就是组建层 也是我们常说的业务管理层

 namespace Neower.UnicomVideo.BusinessComponent
{
    public class UserInfoBC
    {
        UserInfoDA da;

        public UserInfoBC(UserInfoDA userinfoDA)
        {
            da = userinfoDA;
        }
        public virtual UserInfo[] GetUserInfos()
        {
            return da.GetUserInfos();
        }
    }
}

3 接口层 wcf的接口我们放到单独的一个项目中

 namespace Neower.UnicomVideo.Common
{
    [ServiceContract]
    public interface IUserInfo
    {
        [OperationContract]
        [FaultContract(typeof(FaultException))]
        UserInfo[] GetUserInfos();
    }
}

4 外观层 即使wcf接口的实现层

 namespace Neower.UnicomVideo.BusinessFacade
{
    public class UserInfoBF : IUserInfo
    {
        UserInfoBC bc;
        public UserInfoBF()
        {
            bc = Helper.GetInstance<UserInfoBC>();
        }

        public UserInfo[] GetUserInfos()
        {
            return bc.GetUserInfos();
        }
    }
}

5 服务托起层 用iis把服务托起

<%@ ServiceHost language="C#" Debug="true" Service="Neower.UnicomVideo.BusinessFacade.UserInfoBF"%>

配置文件

  

主要是实现对象的创建 做到真正的IOC

6 代理层

  public class UserInfoProxy : ProxyBase<IUserInfo>, IUserInfo
    {
        public UserInfo[] GetUserInfos()
        {
            IUserInfo proxy = GetInstance();
            try
            {
                return proxy.GetUserInfos();
            }
            catch (CommunicationException)
            {
                (proxy as ICommunicationObject).Abort();
                throw;
            }
            catch (TimeoutException)
            {
                (proxy as ICommunicationObject).Abort();
                throw;
            }
            finally
            {
                (proxy as ICommunicationObject).Close();
            }
        }
        private IUserInfo GetInstance()
        {
            return this.GetObject("UserInfo");
        }
    }
}

基类

 public class ProxyBase<T>
        {
            public T GetObject(string endpoint)
            {
                return ProxyHelper.GetObject<T>(endpoint);
            }
         
        }
  

自己增加的工具类:    

7 最后就是应用层了

   protected void Page_Load(object sender, EventArgs e)
        {
            UserInfoProxy proxy=new UserInfoProxy();
            UserInfo[] list = proxy.GetUserInfos();
            gv.DataSource = list;
            gv.DataBind();
        }

小弟把这个设计放到这里,希望高手指点一二。

 源代码http://download.csdn.net/source/3164585

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值