GSI

웹의 경로에 위치한 이미지를 가져오는 모듈입니다.
원래 이미지 사이즈를 구하기 위해서 사용했던건데요.
파일 다운로드 쪽으로 활용해도 가능성이 있을듯 하네요.

try
{
    byte[] data = new System.Net.WebClient().DownloadData(url);
    System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
    Image img = Image.FromStream(ms);

    Size size = new Size(img.Width, img.Height);
    return size;
}
catch(Exception ex)
{
    return new Size(-1, -1);
}

msdn 주소 : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=637975&SiteId=1
키워드 : Image Url

Posted by gsi
:

1. HelloWorld라는걸 노출해줘야 다른 작업이 있는건지 궁금합니다.

           -> 메소드에 [WebMethod] 어트리뷰트를 설정해주는걸로 웹서비스 메소드로의 노출 작업은 완료된상태입니다.

 

2. 웹 서비스를 준비 하는 저의 입장에서 저희 서비스에만 사용하는 형태로 할건데요.

   고려사항이 어떤게 있을지 궁금합니다. 아울러 조금이라도 조언을 해주셨으면 좋겠습니다.

           -> 저희 서비스만 사용하는 형태로고 함은 이 public하게 노출된 웹서비스를 특정 시스템에서는 사용하게 하고프신 것 같은데요.

           웹서비스의 보안은 크게 3단계로 구분할 수 있는데요..

          

첫번째, IIS영역에서 요청(접근)을 제한하는 방법입니다. 웹서비스를 서비스하고 있는 웹 사이트의 IP 접근 제한을 하시면 되구요..

           접근하려는 시스템의 IP만을 접근 허용으로 해주시면 될 듯 합니다.

          

           두번째, 접근 하려는 웹메소드에서 호출하는 사용자를 식별하는 방법이 있습니다. 자세히 설명하기는 힘들지만 메소드를 호출할때

SoapHeader에 사용자 인증 정보를 담아 호출하여 메소드 실행직전에 인증정보가 유효한지를 확인합니다.

 

세번째, 네트워크를 통해 전송되는 웹서비스 결과를 모두 암호화 하여 데이
터에 대한 보안을 설정하실 수 있습니다.

 

각 자세한 방법은 인터넷이나 책을 통해 찾아보시면 될 것 같습니다.

 

3. 인터넷 정보 서비스의 ASP.NET 1.0.**, 2.0.*** 두개가 나오게 되는데요. 웹 서비스를 net 2.0으로 제작할 때

   ASP.NET 2.0.*** 을 사용하는데요 이것으로 해야 되는건지도 궁금합니다.

-> 네 닷넷 프레임워크의 1.1 2.0은 전혀 다른 런타임입니다. 하여 반드시 버전을 정확히 선택해줘야지만 올바른 실행이 가능합니다.


>>>

결과적으로 http:post 형태의 프로토콜을 지원 하기 위해서는 web.config 에 프로토콜을 추가해 주어야 합니다. 기본이 soap 형태만 지원하기 때문에...

<protocols>
   <add name="httpPost"/>
   <add name="httpGet"/>
   <remove name="httpPost/>
   <remove name="httpGet/>
</protocols>

Posted by gsi
:

웹 서비스 연동 방법 - <웹 서비스를 사용하다.!>

웹 서비스를 이용하면 응용 프로그램을 서버를 경유 하지 않고, 네트윅을 접근할 수 있다는 장점이 있습니다.
그래서 이번 프로젝트는 응용 프로그램 + 웹 서비스를 연동해서 어플리케이션을 제작할려고 합니다.
그 내용 중에서 웹 서비스 최초 연동 부분만 우선 살펴 보겠습니다.

웹 서비스를 제작하기 위해서 프로젝트를 생성합니다.
참고로 전 2008 beta2를 만지고 있어서 그쪽에서 했습니다.

사용자 삽입 이미지


ASP.NET Web Service 를 선택하고 File System, C#을 선택한 후에 프로젝트를 생성합니다.

테스트기 때문에 HelloWorld를 그대로 사용하겠습니다.

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

이후에 서비스를 사용할 클라이언트를 만들어야 하는데요.
전 mfc로 싱글뷰를 사용했습니다.
내부에 MFC 확장 DLL을 사용해서 CDialog를 상속 받은 클래스를 하나 제작하고
그 쪽에서 웹 서비스를 연동해 봤습니다. (결과는 잘 되는군요.)

우선 웹 서비스를 참조 해야 하기 때문에 웹 서비스를 iis쪽에 등록 하시던지 간단하게
 테스트만 할 거라면 우선 디버그 상태로 뛰우게 되면 아래와 같은 임시 주소가 생기게 됩니다.
이거 보면서 참 편하다는 생각이 들었죠.

이 주소가 나왔으니 mfc 프로젝트에서 참조 추가를 해보겠습니다.
사용자 삽입 이미지
위와 같이 참조 라는 곳에서 "웹 참조 추가"를 선택 합니다.

사용자 삽입 이미지

이런 화면이 나오게 되는데요 여기서 URL 쪽에 아까 디버그로 실행한 웹 주소나 iis에 추가한
주소를 적어 주시고 "이동" 버튼을 누르면 해당 내용이 나오게 됩니다.
웹 참조 이름은 다르게 수정이 가능합니다.

"참조 추가" 버튼을 누르면 프로젝트에 포함이 됩니다.
사용자 삽입 이미지
이런 몇개의 파일이 자동으로 생성되게 됩니다.
이제 이것을 사용하기 위해서 우선 클래스 상태를 보기 위해서 "개체 브라우저"를 엽니다.
사용자 삽입 이미지
위와 같이 LoginSvr 이라는 네임 스페이스와 CLoginSvr 이라는게 보입니다.
CLoginSvr은 아래와 같이 typedef 되어 있네요.

typedef class LoginSvr::CLoginSvrT<> CLoginSvr
    LoginSvr의 멤버

이제 사용하는 방법만 남았네요.
아래와 같이 사용해서 처리 하시면 됩니다.

LoginSvr::CLoginSvr svr;
BSTR bstrStatus2;
svr.HelloWorld(&bstrStatus2);
m_szEdit = bstrStatus;
::SysFreeString( bstrStatus2 );
UpdateData(false);

여기서 보면 C#이나 asp.net 쪽의 프로그램과는 좀 불편한 감이 있네요.
HelloWorld()의 형태가 인자가 없고 리턴을 string 형태로 받게 되어 있지만
mfc 쪽에서 사용할때는 인자 형태의 포인터로 받게 되어 있으며 stringBSTR 형태로
 취환이 되어서 처리 되게 되어 있습니다.

아.. 이 내용은 대충 여기까지..
앞으로 작업 하면서 여러가지 문제점에 봉착할거 같은데요. 우선 세세하게 작업 내용들을 올리도록 할께요 ^^.
Posted by gsi
: