SQL

데이터베이스/MSSQL 2015. 7. 20. 13:46

SQL Join 종류

서로 다른 SQL Join 문을 살펴보자

  • INNER JOIN: 적어도 하나 이상 조건이 같으면, 같은 행을 가져온다.
  • LEFT JOIN: 조건이 같을  경우 왼쪽 테이블에 모든 행을 가져온다.
  • RIGHT JOIN조건이 같을  경우 오른쪽 테이블에 모든 행을 가져온다.
  • FULL JOIN: 테이블 중에 하나가 같으면 모든 행을 반환한다.


'데이터베이스 > MSSQL' 카테고리의 다른 글

[MSSQL] Database diagram 소유자 설정  (0) 2015.11.20
[SQL] Client에서 Local Server로 접속 시 오류  (0) 2015.11.18
varchar()와 nvarchar()의 차이점  (0) 2015.11.17
SQL JOIN 종류  (0) 2015.07.21
테이블 변수  (0) 2015.07.21
Posted by Hoya0415
,


1. "웹 게시"대화 상자에서 "윈도우 Azure 웹 사이트"를 선택합니다.

2.  Microsoft 계정에 로그인하지 않은 경우,  로그인 그리고 기존 웹 사이트를 선택" 합니다.




3."기존 웹 사이트를 선택"대화 상자에서 클릭 New...


4. "윈도우 Azure에 사이트 만들기"대화 상자에서 고유 한 응용 프로그램 이름을 입력합니다. 

    지역 지역 드롭 ​​다운에서 당신에게 가장 가까운을 선택합니다. 클릭 만들기 

5 . "웹 게시"대화 상자에서 클릭 게시 .

6. 응용 프로그램이 게시를 완료하면, Azure app serivce 의 웹 애플리케이션 호스팅 SignalR 채팅 응용 프로그램은 브라우저에서 열립니다.


7. Azure app serivce 의 웹 애플리케이션에서 WebSocket을 활성화

WebSocket을 명시 적으로 SignalR 응용 프로그램에 사용되는 웹 응용 프로그램에서 활성화해야합니다. Azure에서는 Web Socket 옵션을 활성화해주면 됩니다. 그리고 구성 상단에  .NET 4.5 를 사용해주셔야 합니다.


해당 게시물의 모든 저작권은 Microsoft에 있습니다.

'.NET 개발 > SignalR' 카테고리의 다른 글

연결이 끊겼을 경우의 상황을 다 알아보기.  (0) 2015.10.21
2015-10-14 이슈 현황  (0) 2015.10.14
라이센스 이슈 해결 리스트  (0) 2015.10.08
Posted by Hoya0415
,

장점은 프로그래밍 적으로 연결 문자열을 만들기 때문에 개발이 더 동적이다.

필요한 라이브러리 : EntityFramework

클래스 : SqlConnectionStringBuilder,EntityConnectionStringBuilder

필요한 문자열 값

ProviderName : System.Data.SqlClient

ServerName : 서버 이름 

DatabaseName : 사용할 데이터 베이스 이름

Metadata = 예) "res://*/LocalModel.csdl|res://*/LocalModel.ssdl|res://*/LocalModel.msl";

이렇게 준비 하면 이제 동적으로 소스 상에서 연결 문자열을 만들 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 class Program
    {
        static void Main(string[] args)
        {
 
            // Specify the provider name, server and database.
            string providerName = "System.Data.SqlClient";
            string serverName = @".\SQLEXPRESS";
            string databaseName = "eLearning";
 
            // Initialize the connection string builder for the
            // underlying provider.
            SqlConnectionStringBuilder sqlBuilder =
                new SqlConnectionStringBuilder();
 
            // Set the properties for the data source.
            sqlBuilder.DataSource = serverName;
            sqlBuilder.InitialCatalog = databaseName;
            sqlBuilder.IntegratedSecurity = true;
 
            // Build the SqlConnection connection string.
            string providerString = sqlBuilder.ToString();
 
            // Initialize the EntityConnectionStringBuilder.
            EntityConnectionStringBuilder entityBuilder =
                new EntityConnectionStringBuilder();
 
            //Set the provider name.
            entityBuilder.Provider = providerName;
 
            // Set the provider-specific connection string.
            entityBuilder.ProviderConnectionString = providerString;
 
            // Set the Metadata location.
            entityBuilder.Metadata = @"res://*/LocalModel.csdl|res://*/LocalModel.ssdl|res://*/LocalModel.msl";
 
            Console.WriteLine(entityBuilder.ToString());
 
            using (EntityConnection conn =
                new EntityConnection(entityBuilder.ToString()))
            {
                conn.Open();
                Console.WriteLine("Just testing the connection.");
                conn.Close();
            }
 
        }
    }
cs


여기서 만든 EntityConnectionStringBuilder 객체를 EntityConnection 으로 인자값을 넘겨주면 된다.

1
2
3
4
using (SampleEntities _entity = new SampleEntities(EntityConnectionStringBuilder 인자값))
{
}
 
cs


Entity 객체를 사용할 때 데이터베이스 서버가 바뀔 수 있다. 하지만 여기서 중요한건 Schema는 바뀌면 안된다는 것이다.

Schema를 바꾼 데이터베이스를 연결했을 경우 분명 에러가 나타날 것이다.


Sample.

ConnectionStringSample.zip


Posted by Hoya0415
,

안녕하세요 . 오늘 포스팅은 Visual Studio 2010에서 지구 아이콘 혹은 메뉴에 Project에 Asp.net configuration Tool을 이용하였던 것인데 Visual Studio 2013 에서는 위에 말씀드린 것들이 없어 졌습니다. 그래서 IIS Express를 이용하여 해당 프로젝트가 있는 WEB 프로젝트의 절대 경로 를 설정해주어야 접속이 가능합니다.

1. 우선 명령 프롬프트를 실행합니다.

2. IIS Express가 있는 폴더 지정 위치로 이동합니다.

C:\Program Files (x86)\IIS Express

3. 명령 프롬프트에 IIS Express를 실행하면서 Port 설정을 하는데 이 {PORT}는 여러분이 안쓰시는 (Free) 한 Port를 써주시면 됩니다.

iisexpress.exe /path:C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETWebAdminFiles /vpath:"/ASP.NETWebAdminFiles" /port:{PORT} /clr:4.0 /ntlm /trace:error


4. 위에서 지정한 포트로 IIS Express가 실행되면서 호스팅 되는 것을 볼 수 있습니다. 그리고 나서 아래의 주소를 쳐주면 됩니다.

 http://localhost:{PORT}/asp.netwebadminfiles/default.aspx?applicationPhysicalPath={Absolutely Route}&applicationUrl=/


{PORT}는 위에서 지정한 포트로 IIS Express가 실행

{Absolutely Route} 절대 경로는 예를 들어 해당 프로젝트의 웹쪽 경로를 주면 됩니다. 특정 파일이 아닌 경로입니다.

"C:\Users\HP\Source\Company\Sample\Sample.Web"


5. 아래와 같은 Asp.net configuration Tool가 나타날 것이다.


6.이제 WebConfig 파일에 연결한 DB가 정상적으로 연결되었는지 확인을 해주면 된다.

여기까지!^^

'.NET 개발 > ASP.NET Web API' 카테고리의 다른 글

@ViewBag is Not Working  (0) 2015.12.07
ASP.NET API 부수적으로 알아야할 기능들.  (0) 2015.12.06
aspnetdb 생성  (0) 2015.07.14
IPrincipal 와 Identity  (0) 2015.07.14
인증 및 권한 부여  (0) 2015.07.14
Posted by Hoya0415
,

Aspnet_regsql.exe 라는 프로그램을 실행하면 아래의 설치 마법사가 나온다.

1. 다음을 눌러준다.

2. Configure SQL Server for application services 를 클릭해준다.


3. DB Server에 연결해준다.


위와같이 해주면 해당 데이터베이스 서버에 ASPNETDB가 생성된다.


아래는 sql 구문이다.

sql 구문을 실행해주면 자동으로 데이터베이스가 생성된다.

aspnetdbModel.edmx.sql


Posted by Hoya0415
,

역활 기반 보안은 .Net Framework 1.0 부터 사용해왔다. Identity 와 Iprincipal 은 역할 기반 보안을 구현하기 위해 .Net Framwork 에서 제공하는 두 가지 추상적인 개념이다.

(그림: IPrincipal 그리고 IIdentity 구현된 클래스)

사용자 정의 시나리오를 위한 GenericIdentity와 GenericPrincipal 클래스.

윈도우 인증 기반의 시나리오를 위한 WindowIdentity와 WindowPrincipal 클래스 

IPrincipal 인터페이스 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    // Summary:
    //     Defines the basic functionality of a principal object.
    [ComVisible(true)]
    public interface IPrincipal
    {
        // Summary:
        //     Gets the identity of the current principal.
        //
        // Returns:
        //     The System.Security.Principal.IIdentity object associated with the current
        //     principal.
        IIdentity Identity { get; }
 
        // Summary:
        //     Determines whether the current principal belongs to the specified role.
        //
        // Parameters:
        //   role:
        //     The name of the role for which to check membership.
        //
        // Returns:
        //     true if the current principal is a member of the specified role; otherwise,
        //     false.
        bool IsInRole(string role);
    }
cs

Identity 인터페이스 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 // Summary:
    //     Defines the basic functionality of an identity object.
    [ComVisible(true)]
    public interface IIdentity
    {
        // Summary:
        //     Gets the type of authentication used.
        //
        // Returns:
        //     The type of authentication used to identify the user.
        string AuthenticationType { get; }
        //
        // Summary:
        //     Gets a value that indicates whether the user has been authenticated.
        //
        // Returns:
        //     true if the user was authenticated; otherwise, false.
        bool IsAuthenticated { get; }
        //
        // Summary:
        //     Gets the name of the current user.
        //
        // Returns:
        //     The name of the user on whose behalf the code is running.
        string Name { get; }
    }
cs



Posted by Hoya0415
,

인증은 엔티티의 신원을 검색한다.

자격증명은 유효성 검사를 통해 신원을 확인하는 프로세스다.

권한 부여는 현재 신원 정보로 요청된 작업을 수행할 수 있는지 여부를 결정하는 프로세스다.

역활 기반 보안은 접근 제어를 위한 비즈니스 또는 엔터프라이즈 응용프로그램에서 사장 일반적으로 사용되는 보안 모델.

Identity 및 principal 개체는 역할 기반의 보안을 구현하기 위하여 .Net Framework에서 제공하는 추상적인 개념.

사용자 정의 시나리오를 위하여, Net. Framework 4.5의 GenericIdentity와 GenericPrincipal 클래스를 사용할 수 있다. 또 WINDOW 인증을 위해서 WindowsIdentity와 WindowsPrincipal 클래스를 사용할 수 있다.

클레임 기반 보안 모델에서 사용자는 응용프로그램에 자격증명을 제공하지 않고 단지 클레임만 제공한다.

역활 기반의 접근 제어와 클레임 기반의 접근 제어의 근본적인 차이점은 역할 기반의 접근 제어를 위해서는 반드시 사용자를 작업을 수행할 수 있는 권한이 있는 역할에 할당해야 한다는 것이고, 반면에 클레임 기반의 접근 제어를 위해서는 사용자가 권한을 부여 받을 수 있도록 응용프로그램이 확인할 수 있는 올바른 값으로 클레임을 제공해야 한다는 것이다. 클레임 기반의 접근 제어가 좀 더 제어하기가 쉽고 유지 관리 또한 쉽다.

클레임은 보안 토큰의 형태로 발급 기관에 의해 응용프로그램에 발급된다. 보안 토큰은 기본적으로 서명디어 있고 보안 전송을 위해 암호화 처리된 클레임의 집합이다.  보안 토큰은 Security Assertion Markup Language(SAML), Simple Web Token(SWT),  JSON Web Token(JWT) 세 가지 유형이 있다.


출처: 프로 ASP.NET 웹 API 보안 책.

Posted by Hoya0415
,

1. WebApiConfig에서 Route 설정하기 

App_Start 에서 WebApiConfig 파일에서 아래의 소스와 같이 만들어주면 된다.

students라는 ApiController가 있는데 routeTemplate을 바꿀 수 있다.

1
2
3
4
5
   config.Routes.MapHttpRoute(
                name: "students",
                routeTemplate: "api/students/{userName}",
                defaults: new { controller = "students", userName = RouteParameter.Optional }
            );
cs


2. Method Route 설정하기

1
2
3
4
5
6
7
public class UserIdCheckController : ApiController
    {
 
        [Route("User/{id}")]
        public int GetIdCheck(string id)
        {
        }
cs

메서드 마다 강제로 주소를 바꿀 수 있다.

Posted by Hoya0415
,

IOC(Inversion of Control)

"제어의 역전, 역제어 라는 뜻으로 프로그래머가 제어권을 갖고 있는게 아니라 이를 관리해주는 컨테이너가 제어를 갖고 관리해준다. 컨테이너의 조건에 따라 수행하는 로직이 바뀌는 것이다. 

<출처 :링크 주소 동영상>

그림에서 Customer가 Validate 이라는 함수를 호출 할 때 Which Dal? 이라는 조건식으로 Sql 혹은 Oracle 클래스가 사용되는데 이건 내 프로그램 순서에 따라서 결정되는게 아닌 Customer가 조건을 결정하는 방식으로 제어가 역전됬다고 볼 수 있다.



<출처 :링크 주소 동영상>


DI(Dependency Injection) 의존성 주입

모듈을 도중에 바꿀 수 있다.

의존성 설계 -> 의존성 설정 -> 의존성 주입.










비디오 출처 : https://www.facebook.com/photo.php?v=690253231015623&set=vb.341019362605680&type=2&theater


 IOCSample.zip



'.NET 개발 > C#' 카테고리의 다른 글

Task<T> Class  (0) 2015.08.10
Task Class 비동기  (0) 2015.08.10
Thread Class  (0) 2015.07.31
.Net Remoting  (0) 2015.07.30
Laze 클래스 란?  (0) 2015.07.21
Posted by Hoya0415
,

현재 개발중인 웹 사이트에서 Web API 부분을 맡고 있는 bearguy 입니다.~


'.NET 개발 > ASP.NET Web API' 카테고리의 다른 글

Asp.Net Configuration Tool In Visual Studio 2013  (0) 2015.07.15
aspnetdb 생성  (0) 2015.07.14
IPrincipal 와 Identity  (0) 2015.07.14
인증 및 권한 부여  (0) 2015.07.14
ApiController Route 방법  (0) 2015.07.13
Posted by Hoya0415
,