zoukankan      html  css  js  c++  java
  • .NET平台三层应用程序框架搭建(一)

      这个例子表示层采用WinForm;业务逻辑层直接写在了WCF服务中,当然最好是把服务层和业务逻辑层进行分离,因为本实例比较简单,就直接把业务逻辑层写在了服务层中;数据访问层采用ADO.NET技术;后台数据库使用SQL Server 2005。

    一、数据库设计

    1、我们设计一个简单的用户表(Users),如下:

    序号

    列名

    数据类型

    为空性

    主键

    外键

    默认值

    界面字段

    说明

    1

    id

    int

    id号(种子)

    2

    userName

    nvarchar(20)

    用户名

    3

    loginPassword

    nvarchar(30)

    用户密码

    4

    memo

    nvarchar(50)

    备注

    2、配置SQL Server 2005

    1)打开“SQL Server 外围应用配置器”,如下:

     

    点击“服务和连接的外围应用配置器”,然后出现如下界面:

     

    选择远程连接,然后选择:本地连接和远程连接(R)→仅使用TCP/IP(T)。

    2)右击我的电脑→管理→本地用户和组→组,然后双击“Administrators”组,点击“添加”按钮,点击“高级”,点击“立即查找”,双击“NETWORK SERVICE”这个用户,然后点击“确定”按钮两次,完成用户的添加。

    3)在SQL Server 2005中创建数据库“MySolution”,然后依次展开节点:MySolution→安全性→用户,右键单击节点“用户”,选择“新建用户”,出现如下界面:

    然后回到常规选项卡:

    2)右击我的电脑→管理→本地用户和组→组,然后双击“Administrators”组,点击“添加”按钮,点击“高级”,点击“立即查找”,双击“NETWORK SERVICE”这个用户,然后点击“确定”按钮两次,完成用户的添加。 

    3)在SQL Server 2005中创建数据库“MySolution”,然后依次展开节点:MySolution→安全性→用户,右键单击节点“用户”,选择“新建用户”,出现如下界面:

     

    点击“…”按钮,点击“浏览”,选中“[NT AUTHORITY\NETWORK SERVICE]”登录名,点击两次“确定”按钮。

     

    然后回到常规选项卡:

     

    默认架构选择“dbo”,此用户拥有的架构选择“db_owner”,数据库角色成员身份(M)选择“db_owner”。

    3、在数据库“MySolution”中创建表Users。

    4、编写查询Users表的存储过程,代码如下:

    USE [MySolution]
      GO
     /****** 对象:  StoredProcedure [dbo].[SelectUser]    脚本日期: 11/29/2010 18:46:38 ******/
     SET ANSI_NULLS ON
     GO
     SET QUOTED_IDENTIFIER ON
     GO
     -- =============================================
     -- Author:        <崔永华>
     -- Create date: <2010年11月29日>
     -- Description:    <查询用户信息>
     -- =============================================
     CREATE PROCEDURE [dbo].[SelectUser](
     @Fields nvarchar(1000),                --要查询的字段
     @SqlWhere nvarchar(1000),            --查询条件,不包含Where关键字
     @OrderFields nvarchar(1000))            --排序字段
     AS
     BEGIN
         SET NOCOUNT ON;
         DECLARE @Sql nvarchar(2000);
         SET @Sql='SELECT ' + @Fields + ' FROM Users WHERE ' + @SqlWhere + ' ORDER BY ' + @OrderFields;
         SET NOCOUNT OFF;
         EXEC(@Sql);
     END
    

      

    二、实体类

    1、首先创建一个空项目:文件→新建→项目→其他项目类型→Visual Studio解决方案,选择空白解决方案,取名为“MySolution”。

    2、在解决方案资源管理器中,鼠标右击解决方案“MySolution”,选择:添加→新建项目→Visual C#→Windows→类库,取名为“实体类”。将“Class1.cs”重新命名为“User.cs”。

    3、在“实体类”项目中添加对“System.ServiceModel”和“System.Runtime.Serialization”类库的引用,如下所示:

    编写的实体类如下: 

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Runtime.Serialization;
      using System.ServiceModel;
     
      namespace 实体类
     {
         [DataContract]
         public class User
         {
             private string userName;
             private string loginPassword;
             private string memo;
     
             [DataMember]
             public string UserName
             {
                 get { return userName; }
                 set { userName = value; }
             }
     
             [DataMember]
             public string LoginPassword
             {
                 get { return loginPassword; }
                 set { loginPassword = value; }
             }
     
             [DataMember]
             public string Memo
             {
                 get { return memo; }
                 set { memo = value; }
             }
         }
     }
    

      

    三、数据访问层

    1、在解决方案资源管理器中,鼠标右击解决方案“MySolution”,选择:添加→新建项目→Visual C#→Windows→类库,取名为“数据访问层”。将“Class1.cs”重新命名为“UserData.cs”。

    2、在“数据访问层”项目中,添加对“System.configuration”和“实体类”类库的引用,如下所示:

     

     编写数据访问层代码如下: 

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Data;
      using System.Data.SqlClient;
      using System.Configuration;
     
      namespace 数据访问层
     {
         public class UserData
         {
             private readonly string strConnection = ConfigurationManager.AppSettings.Get("MySolution");
             private SqlConnection con = null;
     
             public DataSet SelectUser(string strFields, string strSqlWhere, string strOrderFields)
             {
                 con = new SqlConnection(strConnection);
                 SqlCommand cmd = new SqlCommand("dbo.SelectUser", con);
                 cmd.CommandType = CommandType.StoredProcedure;
                 cmd.Parameters.Add("@Fields", SqlDbType.NVarChar).Value = strFields;
                 cmd.Parameters.Add("@SqlWhere", SqlDbType.NVarChar).Value = strSqlWhere;
                 cmd.Parameters.Add("@OrderFields", SqlDbType.NVarChar).Value = strOrderFields;
                 DataSet dstUser = new DataSet();
                 SqlDataAdapter dt = new SqlDataAdapter(cmd);
                 dt.Fill(dstUser, "Users");
                 return dstUser;
             }
         }
     }
    

      

    四、服务层

    1、在解决方案资源管理器中,鼠标右击解决方案“MySolution”,选择:添加→新建项目→Visual C#→WCF→WCF服务库,取名为“服务层”。添加完成如下所示:

     

    2、删除自动生成的“IService1.cs”和“Service1.cs”。

    3、添加两个新类,分别命名为:“IMySolutionServices.cs”和“MySolutionServices.cs”。

    4、在“服务层”项目中,添加对“实体类”和“数据访问层”类库的引用,如下所示:

     

    5、接口“IMySolutionServices.cs”的代码如下:

     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using System.ServiceModel;
     using System.Data;
     using 实体类;
     
     namespace 服务层
     {
         [ServiceContract(Namespace = "http://www.jieyouinfo.com/cuiyh/")]
         public interface IMySolutionServices
         {
             [OperationContract]
             DataSet SelectUser(string strFields, string strSqlWhere, string strOrderFields);
         }
      }
    

      

    6、类“MySolutionServices.cs”的代码如下:

     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using System.Data;
     using 实体类;
     using 数据访问层;
     
     namespace 服务层
     {
         public class MySolutionServices : IMySolutionServices
         {
             public DataSet SelectUser(string strFields, string strSqlWhere, string strOrderFields)
             {
                 return new 数据访问层.UserData().SelectUser(strFields, strSqlWhere, strOrderFields);
             }
         }
     }
    

      

    7、进行WCF服务层的配置

    用鼠标右键单击“服务层”项目中的“App.config”,选择“编辑WCF配置”,出现如下窗体:

     

    点击“Name”后的“…”按钮,出现如下窗体:

     

    双击“服务层.MySolutionServices”后,返回如下窗体:

     

    选择“终结点”下的第一个“空名称”,出现如下界面:

     

    点击“Contract”后的“…”按钮,出现如下窗体:

    双击“服务层.IMySolutionServices”,返回到如下窗体:

     

    然后选择“文件”→“保存”。至此WCF服务配置完毕。

  • 相关阅读:
    好用开源的C#快速开发平台
    Chrome 53 Beta一些有意思的改动
    前端面试问题总结
    前端构建的初步尝试
    [译] 如何运用新技术提升网页速度和性能
    切图崽的自我修养-[ES6] 迭代器Iterator浅析
    解决表单GET提交后台数据乱码问题
    设置port转发来訪问Virtualbox里linux中的站点
    linux杂谈(十三):代理server
    a little riak book
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/2695235.html
Copyright © 2011-2022 走看看