2010. 4. 26. 17:31
HTTP Header를 이용한 파일 다운로드

ASP.NET도  거의 코드가 동일한 가능하다.

Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(file.FullName)
Response.End
Posted by CoolDragon
2010. 4. 20. 18:10
asp에서 다른 도메인(Cross Domain)의 데이터를 주고 받기 위한 방법으로도 사용된다.
(다른 방법으로는 JSONP를 이용할 수 있다.)

1. C#. XMLWebService 프로젝트로 XML 웹서비스를 개발한다.
  - 도메인 : ws.cooldragon.co.kr
2. asp에서 웹서비스를 호출하는 클라이언트 페이지를 개발한다.
  - 도메인 : www.cooldragon.co.kr
3. 개발된 사이트를 IIS를 설정한다.
4. 브라우저에서 테스트 해본다.
※ ws.cooldragon.co.kr, www.cooldragon.co.kr 은 가상의 도메인이며
   예외 처리는 개발자의 몫으로 돌린다. ^^;;
-------------------------------------------------------------------------

1. [XML 웹서비스 개발]
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Service1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string SayHello(string name)
        {
            return "Hello " + name;
        }

        [WebMethod]
        public int Sum(int x, int y)
        {
            return x + y;
        }

        [WebMethod]
        public int Subtract(int x, int y)
        {
            return x - y;
        }
    }


2. [asp 개발]
<%
' 구현부
Dim reqTy
Dim url
Dim param

url = "http://ws.cooldragon.co.kr/Service1.asmx/SayHello"
param = "name=cooldragon"
Response.Write "result=" & CallWebService(url, param) & "<br/>"

url = "http://ws.cooldragon.co.kr/Service1.asmx/Sum"
param = "x=1&y=2"
Response.Write "result=" & CallWebService(url, param) & "<br/>"

url = "http://ws.cooldragon.co.kr/Service1.asmx/Subtract"
param = "x=1&y=2"
Response.Write "result=" & CallWebService(url, param) & "<br/>"

url = "http://ws.cooldragon.co.kr/Service1.asmx/HelloWorld"
param = ""
Response.Write "result=" & CallWebService(url, param) & "<br/>"
...

'웹서비스 호출 함수
Function CallWebService(url, param)

    Dim result
Dim xmlhttp
Set xmlhttp = Server.CreateObject("MSXML2.XMLHTTP")
    xmlhttp.Open "POST", url, false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.send param
    
    result = xmlhttp.responseText
    set xmlhttp = nothing    
           
    CallWebService = result

End Function 
%>


3. IIS 설정
   - www.cooldragon.co.kr

  - ws.cooldragon.co.kr

4. 실행결과를 확인할 수 있다.


참고URL :
http://www.codeproject.com/KB/asp/Web_Service_Call_From_ASP.aspx
Posted by CoolDragon
2010. 4. 20. 12:17
공통모듈(컴포넌트)이 개발되면 여러 비지니스 로직에서 사용할 수 있다.

예를 들면 (COM+과 같은) 암호화 컴포넌트가 있는경우
암호화 컴포넌트는 asp, asp.net, sql server 2005(sqlclr을 통하여)에서 동일하게 사용이 가능하다.
성능상 로컬 라이브러리보다는 떨어지겠지만 개발생산성은 클 것이라 생각된다.

이러한 측면에서 SQLCLR은 개발자에게 이러한 것을 제공하며 제작하는 방법을 작성해본다~

1. VS2008 시작
2. 프로젝트 생성 
   C# > 데이터베이스 > SQL Server 프로젝트
3. SP 또는 Function을 개발 후 빌드
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString Hello(string str)
    {
        // 여기에 코드를 입력합니다.
        return new SqlString("Hello " + str);
    }
};

4. SQL Server에서 어셈블리 등록
  1) clr 권한생성
EXEC sp_configure 'clr enabled' , '1' 
go 
reconfigure; 

  2) 어셈블리 등록
CREATE ASSEMBLY 등록명 FROM '경로\dll명'

  3) 개발 SP 또는 Function 등록
CREATE FUNCTION Hello 
@str NVARCHAR(1000)
RETURNS NVARCHAR(1000)
AS EXTERNAL NAME SqlServerProject1.UserDefinedFunctions.Hello

참고 URL
http://msdn.microsoft.com/en-us/library/ms345135(SQL.90).aspx
Posted by CoolDragon