문제

누군가 가이 문제에 대한 통찰력을 가지고 있는지 궁금합니다.

약간의 배경:

우리는 레일을 사용하여 기존 DBase 및 Visual Basic 기반 시스템에서 마이그레이션하여 라벨 인쇄, 재고 제어, 배송 등과 같은 작업을 수행하는 내부 회사 인트라넷을 구축했습니다. 기본적으로 ERP

딜레마

현재 우리는 Java에서 수행 된 이전 고객을 대상으로 한 웹 사이트를 교체해야합니다. 우리는 내부 시스템에서 인벤토리, 주문 배치, 계정 명세서와 같은 정보를 가져 와서 사이트 라이브에 노출 할 수 있기를 원합니다. 그 이유는 웹 사이트에서 팩스 및 전화를 통해 주문을 받고 때로는 산책로가 있기 때문입니다. 따라서 기존 Java 사이트에서 재고 업데이트가 짧은 지연조차도 때때로 (거의 거의) 반 주문에 주문을 할 수 있습니다. 왜냐하면 우리는 30 분 안에 동일한 품목을 2 명의 고객에게 판매하기 때문입니다. 일반적으로 하루 안에 고정되어 있지만 앞으로이 문제를 피하고 싶습니다.

실제 질문

누구든지 더 나은 방법으로 이것을 달성하는 방법에 대한 제안이 있습니까?

다음은 다음은 다음과 같습니다.

a) 웹 서버에 별도의 레일 앱을 구축하면 같은 우리의 내부 앱이 연결하는 DB.

  • +++ 플러스 : 라이브 데이터 - 내부 앱과 동일하게, 즉 주문은 실시간으로 생성되며, 재고는 즉시 고갈됩니다.

  • --- 마이너스 : 잠재적 보안 위험, 코드 복제- 즉 주문을 다루는 모든 컨트롤러, 모델,보기 등을 복제해야합니다.

b) 웹 서버에 별도의 레일 앱을 구축하면 연결됩니다. 다른 내부 앱에서 DB.

  • +++ 플러스 : 보안 노출이 적습니다.
  • --- 마이너스 : 웹 DB 및 내부 DB (또는 REST-API와 같은 웹 서비스 사용), 재고 고갈 및 주문 # 생성을 처리하는 추가 코드, 코드 복제-즉 모든 컨트롤러를 복제해야합니다. 주문을 다루는 모델, 견해 등.

c) 내부 앱을 웹에 노출시킵니다

  • +++ 플러스 : 위의 모든 문제가 제거되었습니다. 이것은 "건조"ER 방법입니다.
  • --- 마이너스 : 훨씬 더 많은 보안 두통. 보다 복잡한 로그인 시스템 - 웹 용 및 LDAP를 사용하는 내부 사용자 용입니다.

그래서 어떤 생각이 있습니까? 해결할 비슷한 문제가 있습니까? 우리 회사는 자원이 제한되어 있음을 명심하십시오. 즉, 이에 전념하는 한 개발자가 있습니다. 따라서 이것은 "올바른"및 "스마트"솔루션 중 하나 여야하며 "이 솔루션에서 돈/사람/자원을 던지는"솔루션이 아닙니다.

고맙습니다.

도움이 되었습니까?

해결책

아마도 공개 사이트에 대한 별도의 컨트롤러를 만들고 Activeresource를 사용하여 내부 응용 프로그램에서 데이터를 가져옵니다. 보세요

http://blog.rubybestpractices.com/posts/gregory/rails_modularity_1.html

http://api.rubyonrails.org/classes/activeresource/base.html

편집 - 고정 링크 및 추가 API 링크

다른 팁

나는 갈 것이다. 컨트롤러를 재사용 할 수 있도록 컨트롤러를 만들 수 있어야합니다.

내부 사용자는 외부 사용자만큼 데이터를 복제 할 가능성이 높습니다.

공개 UI와 내부의 직원 인 UI가 달라야 할 것입니다. 데이터는 일관성이 있어야하므로 정확히 하나의 결정적인 데이터베이스가 있는지 확인하기 위해 상당히 많은 노력을 기울일 것입니다. 그래서 : 하나의 데이터베이스 두 UI?

두 UI가 사용할 수있는 "서비스"레이어가 있어야합니다. 이것이 Java라면 나는 서비스를 신속하게 완료 할 것을 확신 할 것입니다. 루비/레일에서 얼마나 쉬운 지 궁금합니다.

최상의 결과는 기존 고객 Java UI를 Rails 서비스 계층을 사용하도록 조정할 수 있다는 것입니다.

프로그래머가 실수로 잘못된 장소에 사물을 노출시키지 않는다고 신뢰한다고 가정하면 '올바른'솔루션은 단일 응용 프로그램을 보유한 것으로 보이지만 두 가지 다른 컨트롤러와 뷰 세트, 내부 용도 및 공개를위한 것입니다. 이것은 당신에게 하나의 데이터베이스, 두 개의 UI에 대한 djna의 아이디어를 줄 것입니다.

당신이 말하는 것처럼 두 개의 별도 데이터베이스를 갖는 것은 복제 문제뿐만 아니라 많은 복제와 관련이 있습니다.

동일한 데이터베이스를 사용하여 완전히 별도의 앱 두 개를 갖는 것은 의미가 없습니다. Rails 앱의 ActiveRecord 부분은 Ruby 코드의 데이터베이스의 추상화이므로 단일 데이터베이스에 대해 두 개의 추상화가 약간 잘못되었습니다.

그런 다음 모델에 공통 비즈니스 규칙을 가질 수 있으며, 두 버전의 사이트에서 코드 복제를 피할 수 있습니다.

프로그래머를 완전히 신뢰하지 않으면 Mike의 Activeresource 접근 방식은 매우 좋습니다. 우연히 사물을 노출하기가 훨씬 어려워 질 것입니다 (Activeresource는 lectiverecord보다 유연하고 기능이 풍부합니다).

어떤 버전의 레일을 사용하고 있습니까? 버전 2.3 레일 엔진이 포함되어 있으므로 Rails 플러그인에서 공통 코드 (모델/보기/컨트롤러)를 공유 할 수 있습니다.

참조 Railscast 짧은 소개.

나도 사용합니다. 다른 클라이언트를 위해 세 가지 응용 프로그램을 개발했지만 플러그인에 모든 공유 코드가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top