2012-02-13 5 views
0

오케이 그래서 저는 .NET Remoting에 매우 익숙하다는 것을 알았고 모범 사례에 관해서는 질문이 있습니다. 첫째, 이미 내장 된 응용 프로그램을 가지고 있으며, 모든 데이터를 처리 할 수있는 dll을 가지고 있습니다. 내 응용 프로그램의 Server 버전에서 모든 클래스와 메서드를 활용하고 이러한 사용자 지정 개체를 앞뒤로 전달할 수있게하려고합니다.C# .NET Remoting 모범 사례?

제 질문은 필자가 전달하고 전달하고자하는 모든 클래스에 [Serializable]을 적용한 다음 Get, AddOrUpdate, Delete 등의 메소드를 특별히 사용하는 특수 클래스를 만드는 것입니다.

지금 당장 데이터베이스와주고받는 모든 클래스에서 Get, AddOrUpdate 및 Delete 메서드가 있습니다. MarshalByRefObject & [Serializable]을 해당 클래스 모두에 적용 할 수 없다는 것을 이미 배웠습니다. 문제가 발생할 것입니다. 그래서, 그것은 내가 "관리"(예 : Get, AddOrUpdate, Delete)를하는 별도의 클래스를 만들 필요가 있다고 생각하는 이유입니다. 속성 정의와 메소드 호출이 있습니다.

내가 생각하고있는 예가 필요합니다.

[Serializable] 
    public class Users { 
     #region Properties... 
     private int _userID; 
     private string _displayName; 
     private string _userName; 
     private string _firstName; 
     private string _lastName; 
     private string _LogOnPassword; 
     private List<Users> _Associates = new List<Users>(); 
     private AuthenticationLevel _authorizationLevel; 
     private string _userSettingsXML; 
     private string _active; 
     private string _signature; 
     private int _PhoneExtension; 
     private int _Index; 
     private List<UserAssignedRoles> _Roles = new List<UserAssignedRoles>(); 

실제로 목록을 만들려면 UserManagement와 같은 별도의 클래스가 있어야합니다.

public class UserManagement : MarshalByRefObject { 
    public List<Users> GetUsers() { 

    } 
} 

어떤 조언을 주시면 감사하겠습니다.

+0

http://msdn.microsoft.com/en-us/library/5dxse167(v=vs.80).aspx 및 http://www.alexthissen.nl/blogs/main/archive/2007을 참조하십시오. /12/23/back-to-net-remoting-typefilterlevel.aspx 필요한 경우 충분한 권한이있는 한 모든 개체를 MarshalByRefObject로 전달할 수 있습니다. 다른 모든 것은 디자인 결정에 달려 있습니다. –

+0

일반적으로 Remoting의 가장 좋은 방법은 WCF를 삭제하고 WCF로 이동하는 것입니다. 어쩌면 당신은 Fx2 정도에 국한 될지 모르지만 옵션을 조사하십시오. –

+0

Henk, WCF 경로를 확실히 통과하고 있다고 생각합니다. 그것이 Remoting보다 훨씬 더 간단한 접근 방법이 될 것 같고 내가 찾고있는 것이 더 우아합니다. – meanbunny

답변

1

Remoting은 훌륭한 접근 방법 일 수 있지만 원격 작업에 대한 이유를 많이 알지 못했기 때문에 추가 제안 사항을 제공하겠습니다. 아키텍처 계층 간의 통신을 위해 웹 서비스를 만드는 것이 좋습니다. WCF (Windows Communication Foundation)는 간단한 통신을 위해 이것을 pretty straight-forward으로 만드는 성숙한 기술입니다. four SOA tenets으로 시작하는 SOA (Service Oriented Architecture)에 대해서도 읽을 수 있습니다.

현재 클래스를 WCF와 재사용하는 데 문제가 없어야합니다. 서비스는 당신에게 조금 더 나은 구조를 제공 할뿐 아니라 WCF 기술은 .NET Remoting 기술 (당신이 다음에이 코드를 관리해야하는 사람)보다 훨씬 더 일반적입니다.

행운을 빈다. -Bill

+0

감사합니다. 네, 정보 부족에 대해 사과드립니다. 내 응용 프로그램은 기본적으로 새로 요청한 기능을 사용합니다. 지금까지 대부분 데이터베이스 기반으로 구동되었으며 서버 클라이언트 인프라가 필요하지 않았습니다. 나는 약간의 .NET 리모팅을 배웠지 만, 그 밖의 무엇이 있는지 궁금하다. 우리가 말하는 것처럼 실제로 WCF를 조사하고 있습니다. 귀하의 링크에 대해 대단히 감사합니다. – meanbunny

+0

청구서, 질문이 있습니다. 당신이 제공 한 기사를 읽었으며, 내가 읽어야 할 중요한 자료들이었던 것에 감사드립니다. 나는 앞서 가서 내 dll을 사용하여 테스트 서버 및 클라이언트를 만들었고 튜토리얼을 따라 매우 쉽게 작업했습니다. 프록시를 생성하고 그 파일을 내 클라이언트에 통합해야한다는 것을 알았습니다. 내가 좋아하지 않는 것은 나의 클라이언트 코드가 나의 클래스 디자인의 우아함을 따르지 않는다는 것이다.그래서 내 질문은, MyDatabase.Orders, MyDatabase.Users, 등 클라이언트 코드에서 내 클래스 디자인을 유지할 수 있습니다 또는 그냥 만들어야 할 희생은 무엇입니까? – meanbunny

+0

프록시를 사용할 필요가 없지만 간소화되어있어 편리합니다. "자신 만의"롤을 만들고 싶다면 codereview.stackexchange.com에서 몇 가지 샘플 코드로이 게시물을 확인하십시오. http://codereview.stackexchange.com/questions/7793/how-to-improve-wcf-client-proxy- based-on-createchannel-not-generated-from-wsdl – codingoutloud