2010-06-25 1 views
0

데이터베이스 상호 작용 및 비즈니스 개체를 클라이언트가 아닌 서버에 유지할 수 있도록 Remoting 클래스 라이브러리를 개발 중입니다.C# Remoting classes organization

내 자신의 개체를 클라이언트에 반환하여 서버 자체를 통해 상호 작용할 수 있기를 바랍니다. 예를 들어

(반 의사) :

서버

class Database { ... } 
class Utility 
{ 
    public User getUser(username) 
    { 
    return new User(username); 
    } 
} 
class User 
{ 
    public string[] getPerms() 
    { 
    return Database.query("select * from permission where user = " + this.username); 
    } 
} 

클라이언트

Utility utility = (Utility)getRemotingClass("Utility"); 
User user = Utility.getUser("admin"); 
string[] perms = user.getPerms(); 

어떻게 내 수업/네임 스페이스를 구성 할 수 있습니다? 특히 시스템의 클래스 참조 및 확장성에 대해 궁금합니다.

모든 종류의 비판/제안은 정말 감사하겠습니다.

+0

왜 WCF를 사용하지 않으시겠습니까? – Incognito

+0

나는 그것을 잘 모르기 때문에. 나는 그것을 시도 할 것이다. – Keeper

답변

0

나는 드럼을 때리는 것이 아니라 WCF를 조사하는 것이 좋습니다. 원격은 매우 혼란스럽고 .Net을 통한 깨끗한 인터페이스 유지에 대한 실질적인 지원은 원격을 통한 완전한 개체 상태 관리가 아니라 WCF 및 메시지 전달을 통해 수행됩니다.

당신이하고있는 것처럼 들리는 것은 데이터베이스 연결을 관리하기위한 중간 계층을 개발하는 것입니다. SQL 서버에 대한 인터페이스 재개발을 끝내지 않도록하십시오.

+0

WCF에서 위의 예제와 같은 클래스를 전달할 수 있습니까? 이 예를 어디에서 찾을 수 있는지 알고 있습니까? 감사합니다 – Keeper

+0

http://msdn.microsoft.com/en-us/library/aa480190.aspx – Spence

+0

데이터 계약을 만들 수있는 모든 것은 WCF를 통해 전송할 수 있습니다. 매우 큰 전송에 적합한 WCF를 사용하여 스트림을 "전송"할 수도 있습니다. – Spence

0

서버 및 클라이언트 참조 (서버 클래스와 동일한 DLL에 넣을 수있는 별도의 DLL에 모든 '공유'(데이터 전송 개체) 클래스를 넣는 경향이 있습니다. 클라이언트 코드와 함께 배포하십시오.)

별도의 어셈블리에 넣으면 DTO와 원격 전송에 사용되는 기본 기술의 결합 해제를 강화할 수 있습니다. 즉, 원격 호출 기술을 다시 작성하면 DTO를 만질 필요가 없으며 어셈블리를 다시 사용할 수 있습니다.

[Serailizable] 속성과 같이 DTO를 표시해야 클라이언트와 서버간에 전송할 수 있습니다.

허비