คำถามติดแท็ก web-services

บริการบนเว็บเป็นระบบซอฟต์แวร์ที่ออกแบบมาเพื่อรองรับการทำงานร่วมกันระหว่างเครื่องกับเครื่องผ่านเครือข่าย

3
วิธีการออกแบบเว็บเซอร์วิสที่ปรับขนาดได้สูงใน Java?
ฉันกำลังสร้างบริการบนเว็บบางอย่างที่จะมีผู้ใช้ 2,000 คนพร้อมกัน บริการดังกล่าวให้บริการฟรีและคาดว่าจะได้รับฐานผู้ใช้จำนวนมาก ในอนาคตอาจต้องมีผู้ใช้มากถึง 50,000 คน มีคำถามอีกสองสามข้อที่แก้ไขปัญหาเช่น - /programming/2567254/building-highly-scalable-web-services อย่างไรก็ตามความต้องการของฉันแตกต่างจากคำถามข้างต้น ตัวอย่างเช่น - แอปพลิเคชันของฉันไม่มีส่วนต่อประสานผู้ใช้ดังนั้นรูปภาพ, CSS, javascript จึงไม่เป็นปัญหา มันมีอยู่ใน Java ดังนั้นคำแนะนำเช่นการใช้ HipHop ในการแปล PHP เป็นโค้ดเนทีฟนั้นไร้ประโยชน์ ดังนั้นฉันจึงตัดสินใจถามคำถามแยกต่างหาก นี่คือการตั้งค่าโครงการของฉัน - วางตัวบริการบนเว็บโดยใช้ Apache CXF Hibernate 3.0 (ด้วยการปรับแต่งที่เกี่ยวข้องเช่นการโหลดแบบขี้เกียจและ HQL แบบกำหนดเองสำหรับปรับแต่ง) Tomcat 6.0 MySql 5.5 อะไรคือวิธีปฏิบัติที่ดีที่สุดในการปฏิบัติตามเพื่อให้แอปพลิเคชันที่ใช้ Java สามารถปรับขนาดได้

3
ฉันควรส่งคืนการตอบสนอง 204 หรือ 404 เมื่อไม่พบทรัพยากรหรือไม่
ฉันกำลังพัฒนาบริการ RESTful ที่เรียบง่ายสำหรับทัวร์นาเมนต์และกำหนดเวลา เมื่อมีการสร้างทัวร์นาเมนต์ผ่านคำขอ POST ที่มีเนื้อความ JSON การแข่งขันจะถูกแทรกใน a BiMapประกาศดังต่อไปนี้ในการนำ DAO ไปใช้: private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create()); เมื่อมีการสร้างทัวร์นาเมนต์ id ของสตริงที่เกี่ยวข้องจะถูกส่งคืนเพื่อให้ผู้ใช้สามารถมีการอ้างอิงในอนาคตของทัวร์นาเมนต์นั้น เขา / เธอสามารถรับข้อมูลคืนจากทัวร์นาเมนต์ใหม่ที่ทำตามคำขอต่อไปนี้: GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39 แต่ถ้าหากไม่พบการแข่งขันที่มีรหัสดังกล่าวล่ะ จนถึงตอนนี้ฉันกำลังตอบกลับ 204 ข้อ นิวเจอร์ซีย์กำลังทำเพื่อฉันเมื่อกลับมาnullจากหนึ่งในวิธีการของมัน นี่คือวิธีการที่สอดคล้องกับเส้นทางด้านบน: @Path("/{id}") @GET @Produces(MediaType.APPLICATION_JSON) public Tournament getTournament(@PathParam("id") String id) { Optional<Tournament> optTournament = tournamentDao.getTournament(id); if (optTournament.isPresent()) return optTournament.get(); return …
15 java  rest  web-services  http 

3
ASP.NET MVC กับ WCF สำหรับ REST API + การใช้เว็บเพจ
ฉันคิดว่าการสนทนาสำหรับการใช้บริการเชิงโปรแกรมเทียบกับการโต้ตอบกับมนุษย์นั้นชัดเจน แต่ถ้าฉันต้องสร้างแอปพลิเคชั่นที่ใช้ทั้ง API เชิงโปรแกรมและเว็บไซต์ที่ใช้ประโยชน์จากข้อมูลที่เชื่อมต่อด้วย API เดียวกันมันจะให้ประโยชน์แก่ ASP.NET เพียงอย่างเดียวหรือไม่ การรวม ASP.NET และ WCF เข้ากับแอพพลิเคชันเดียวกันทำได้ง่ายเพียงใด?

5
คุณจะใช้บริการเว็บอย่างมีประสิทธิภาพในสภาพแวดล้อมขององค์กรได้อย่างไรถ้าคุณไม่สามารถใช้ธุรกรรมได้?
สถานที่ที่ฉันทำงานอยู่กำลังพยายามสร้างกฎพื้นฐานและการอภิปรายที่เรามีอยู่ในขณะนี้คือห้องสมุดท้องถิ่นและบริการเว็บสำหรับการใช้รหัสซ้ำ บริการบนเว็บดูเหมือนจะเป็นตัวเลือกยอดนิยมใน บริษัท ส่วนใหญ่และนั่นคือสิ่งที่นักพัฒนาส่วนใหญ่ที่นี่โน้มตัวเข้าหา ฉันไม่เห็นว่าคุณจะสามารถใช้บริการเว็บเพื่อการทำงานอย่างจริงจังได้อย่างไร ฉันจะเรียกใช้บริการหลาย ๆ สายอย่างปลอดภัยได้อย่างไรถ้าฉันไม่สามารถใช้งานธุรกรรมได้? สมมติว่าฉันมีงาน cron ที่คว้าลูกค้าจากฐานข้อมูลของเราที่ตรงตามเงื่อนไขที่พวกเขาต้องได้รับแจ้ง พวกเขาจะส่งแฟกซ์อีเมลและตั๋วถูกสร้างขึ้นเพื่อติดตามปัญหาภายใน นั่นคือ 3 การบริการที่แตกต่างกันซึ่งจะเกิดขึ้นสำหรับลูกค้าแต่ละรายในวง หากมีข้อผิดพลาดเกิดขึ้นที่ใดก็ตามในนั้นอาจเป็นไปได้ว่ามีการส่งแฟกซ์และอีเมลไปยังลูกค้า แต่ไม่มีการสร้างตั๋ว หรือแย่กว่านั้นงาน cron นี้อาจมีข้อผิดพลาดที่ทำให้มันล้มเหลวที่จุดเดียวกันทุกครั้งและมันซ้ำอีเมลลูกค้ารายเดียวกัน หากห้องสมุดเป็นท้องถิ่นทั้งหมดทุกอย่างก็จะถูกห่อด้วยธุรกรรมและจะไม่มีสิ่งใดเกิดขึ้น แต่เราใช้บริการเว็บในตัวอย่างนี้ โปรดทราบว่าวิธีการอีเมลและแฟกซ์จะแทรกข้อมูลลงในตารางคิวที่ได้รับการสำรองฐานข้อมูลซึ่งจะถูกจัดการโดยกระบวนการงาน cron แยกต่างหาก ดังนั้นการโทรไปยังวิธีการบริการ "ส่งอีเมล" และ "ส่งแฟกซ์" อาจถูกยกเลิกได้หากไม่จำเป็น ตัวเลือกคือการใส่รหัสทั้งหมดนี้ไว้ในเว็บเซอร์วิสดังนั้นเว็บเซอร์วิสจะเรียกวิธีการสร้างอีเมลแฟกซ์และตั๋วในการทำธุรกรรม แต่เรากำลังสร้างวิธีการบริการเว็บเพื่อใช้ธุรกรรม ไม่มีเหตุผลที่ถูกต้องที่เราจะต้องเรียกวิธีนี้จากทุกที่ยกเว้นสคริปต์ cron อันนี้ โดยทั่วไปคุณจะจัดการกับวิธีนี้อย่างไร

7
เหตุใดคำศัพท์เล็ก ๆ ที่ถูกมองว่าเป็นประโยชน์สำหรับบริการ RESTful
ดังนั้นบริการ RESTful จึงมีคำกริยาในชุดที่แน่นอน บริการเว็บ RESTful ใช้สิ่งเหล่านี้จากวิธี HTTP มีข้อได้เปรียบบางอย่างในการนิยามคำศัพท์ที่คงที่ แต่ฉันไม่เข้าใจประเด็น บางทีใครบางคนสามารถอธิบายได้ ทำไมคำศัพท์แบบตายตัวตามที่ระบุโดย REST ดีกว่าการกำหนดคำศัพท์แบบไดนามิกสำหรับแต่ละรัฐ ตัวอย่างเช่นการเขียนโปรแกรมเชิงวัตถุเป็นกระบวนทัศน์ที่เป็นที่นิยม RPC ได้รับการอธิบายเพื่อกำหนดอินเทอร์เฟซคงที่ แต่ฉันไม่รู้ว่าทำไมคนทั่วไปคิดว่า RPC ถูก จำกัด โดยข้อ จำกัด เหล่านี้ เราสามารถระบุอินเทอร์เฟซแบบไดนามิกเช่นเดียวกับบริการ RESTful อธิบายโครงสร้างเนื้อหาแบบไดนามิก ส่วนที่เหลือควรจะเป็นข้อได้เปรียบในการที่จะสามารถเติบโตได้โดยไม่ต้องขยายคำศัพท์ บริการ RESTful เติบโตแบบไดนามิกโดยการเพิ่มทรัพยากรมากขึ้น มีอะไรผิดปกติเกี่ยวกับการขยายการบริการโดยการระบุคำศัพท์ต่อวัตถุแบบไดนามิกหรือไม่ ทำไมเราไม่ใช้วิธีที่กำหนดไว้ในวัตถุของเราเป็นคำศัพท์และให้บริการของเราอธิบายให้ลูกค้าฟังว่าวิธีการเหล่านี้คืออะไรและมีผลข้างเคียงหรือไม่ โดยพื้นฐานแล้วฉันรู้สึกว่าคำอธิบายของโครงสร้างทรัพยากรด้านเซิร์ฟเวอร์นั้นเทียบเท่ากับคำนิยามของคำศัพท์ แต่จากนั้นเราถูกบังคับให้ใช้คำศัพท์ที่มีข้อ จำกัด ในการโต้ตอบกับทรัพยากรเหล่านี้ คำศัพท์ที่กำหนดแน่นอนช่วยลดความกังวลของลูกค้าจากความกังวลของเซิร์ฟเวอร์หรือไม่ แน่นอนฉันต้องกังวลเกี่ยวกับการกำหนดค่าบางอย่างของเซิร์ฟเวอร์ซึ่งเป็นตำแหน่งทรัพยากรในบริการ RESTful การบ่นที่ใช้คำศัพท์แบบไดนามิกดูเหมือนไม่ยุติธรรมเพราะเราต้องใช้เหตุผลแบบไดนามิกเพื่อทำความเข้าใจกับการกำหนดค่านี้ในบางวิธีต่อไป เซอร์วิส RESTful อธิบายการเปลี่ยนแปลงที่คุณสามารถทำได้โดยการระบุโครงสร้างวัตถุผ่านสื่อบันทึก ฉันไม่เข้าใจว่าอะไรทำให้คำศัพท์คงที่ดีกว่าคำศัพท์แบบไดนามิกที่อธิบายตัวเองได้ซึ่งสามารถทำงานได้ดีในบริการคล้าย RPC นี่เป็นเพียงเหตุผลที่ไม่ดีสำหรับการ จำกัด คำศัพท์ของโปรโตคอล HTTP หรือไม่? …

3
วิธีที่ดีที่สุดในการทำ failover ออฟไลน์ของไคลเอ็นต์ที่ใช้เดสก์ท็อปที่ใช้บริการเว็บคืออะไร
ฉันมีสามโครงการที่เข้ามาซึ่งมีปัญหาร่วมกัน: พวกเขาจำเป็นต้องมีเหตุผลในระบบเว็บและพวกเขาต้องการแอปพลิเคชันท้องถิ่น (เช่นจุดขาย) ที่สื่อสารกับระบบดังกล่าวผ่านบริการเว็บสงบ โซลูชันของฉัน ผมแก้ปัญหาการจัดการที่จะเกิดขึ้นกับการที่จะใช้ในโปรแกรมคอมพิวเตอร์เข้าคิวข้อความที่จะดำเนินการจัดเก็บในขณะที่การบริการที่เป็นแบบออฟไลน์อย่างแม่นยำมากขึ้นการจัดคิวข้อความไม่ตรงกัน อย่างไรก็ตามนั่นเป็นส่วนที่ง่าย (หากเป็นวิธีที่ดีที่สุด) ฉันยังเกี่ยวข้องกับการซิงค์ข้อมูลและการแก้ไขข้อขัดแย้ง ระบบหลักต้องใช้เว็บเนื่องจากแอปพลิเคชันเว็บเป็นสิ่งจำเป็นสำหรับรายงานและการตรวจสอบโดยผู้มีส่วนได้ส่วนเสียและบริการเว็บจะจัดการคำขอสำหรับสถานประกอบการหลายแห่ง เดสก์ท็อปไคลเอ็นต์ (บางกว่า) จะถูกนำไปใช้กับ Java (โดยเฉพาะ Netbeans) และระบบเว็บที่มี Symfony2 โครงการสองโครงการต้องการการรวมฮาร์ดแวร์สำหรับลูกค้าดังนั้นการสร้างแอปพลิเคชันเดสก์ท็อปด้วยเทคโนโลยีเว็บ (เช่น Appcelerator Titanium) อาจเป็นปัญหาใหญ่ คำถามของฉัน อะไรคือโซลูชันที่ดีกว่าที่ปรับขนาดซึ่งหมายถึงประสิทธิภาพสูงสุดด้วยความพยายามขั้นต่ำ (และไม่มีค่าใช้จ่ายเพิ่มเติมเช่นการซื้อเซิร์ฟเวอร์สำรองสำหรับการใช้งานในพื้นที่) มีใครบ้างที่จัดการเรื่องนี้มาก่อน คุณแก้ปัญหาอย่างไร คุณสามารถแบ่งปันบทเรียนอะไรได้บ้าง คุณจัดการกับการซิงโครไนซ์อย่างไร? แก้ไข: เพิ่มส่วนที่ขาดหายไปในคำถามของฉันในจุด # 3

3
สิ่งที่ควรเป็นขอบเขตของการตรวจสุขภาพสำหรับระบบที่ปรับใช้ webapp?
วันนี้ฉันมีภารกิจ "เขียนเช็คสุขภาพ" สำหรับบริการที่ใช้เวลานานซึ่งเป็นระบบการประสานงานเพื่อปรับใช้เว็บแอพ ฉันกำลังพยายามกำหนดขอบเขตของการตรวจสุขภาพดังกล่าวและเกิดขึ้นกับคำถามเหล่านี้ที่เกี่ยวข้องกับขอบเขตของการตรวจสุขภาพ: มันดีพอที่จะพิจารณาบริการที่มีสุขภาพดีหรือไม่ถ้าระบบออเคสตร้ารายงานว่างานกำลังทำงานอยู่หรือไม่? หรือเราควรทำการปิงแต่ละบริการด้วยตนเอง หรือควรดำเนินการต่อไปและพยายามตรวจสอบให้แน่ใจว่าแอปพลิเคชันเว็บทำในสิ่งที่ควรทำเช่นแสดงหน้าเว็บหรือไม่ Healthcheck ต้องตรวจสอบด้วยว่าบริการที่ต้องพึ่งพาบางอย่างทำงานอยู่หรือไม่ เช่นเดียวกับฐานข้อมูลหรือระบบ orchestration นั้นเอง หรือว่าเป็นความรับผิดชอบของการตรวจสุขภาพอื่น? และสุดท้ายถ้าบริการใดแอพหนึ่งนั้นเสียชีวิตและแอพพลิเคชั่นเว็บล้มเหลวในภายหลังเว็บแอพควรรายงานสุขภาพที่ไม่ดีหรือมีสุขภาพที่ดีเพราะไม่ใช่ความผิดของเว็บแอป ฉันรู้ว่าคำถามเหล่านี้แบ่งออกเป็น 5 คำถาม แต่พวกเขาทั้งหมดเกี่ยวข้องกับขอบเขตของการตรวจสุขภาพสำหรับบริการที่ใช้งานยาวนานซึ่งปรับใช้แอปพลิเคชันเว็บดังนั้นฉันคิดว่ามันจะเหมาะสมกว่าที่จะจัดกลุ่มคำถามเหล่านี้ให้เป็นคำถามเดียว สิ่งนี้ยากที่จะนำมาใช้กับฉันเพราะฉันไม่แน่ใจว่าคำจำกัดความของสิ่งที่ดีต่อสุขภาพหรือการตรวจสุขภาพแบบมาตรฐานสำหรับสิ่งที่ควรมีลักษณะเช่นนี้ การตรวจสอบสุขภาพสำหรับบริการเฉพาะนี้ควรประกอบด้วยอะไร?

1
เมื่อใดที่ฉันควรใช้ AtomPub
ฉันทำการค้นคว้าเกี่ยวกับการออกแบบบริการเว็บสงบและฉันได้มาถึงสิ่งที่ฉันคิดว่าเป็นจุดตัดสินใจที่สำคัญดังนั้นฉันคิดว่าฉันจะเสนอมันต่อชุมชนเพื่อรับคำแนะนำ เพื่อให้สอดคล้องกับหลักการของสถาปัตยกรรม RESTful ฉันต้องการนำเสนอ API ที่สามารถค้นพบได้ดังนั้นฉันจะสนับสนุนคำกริยา HTTP ต่างๆอย่างเต็มที่เท่าที่จะทำได้ ความยากของฉันมาพร้อมกับตัวเลือกในการแสดงทรัพยากรเหล่านั้น คุณเห็นไหมว่ามันจะเป็นเรื่องง่ายสำหรับผมที่จะสร้าง API ของตัวเองซึ่งจะครอบคลุมถึงการนำเสนอผลการค้นหาและการเชื่อมโยงไปยังแหล่งข้อมูลอื่น ๆ ฉันได้อ่านเกี่ยวกับ Atom Publishing Protocol ( RFC 5023 ) และวิธีการที่ODataส่งเสริมการใช้งาน แต่ดูเหมือนว่าจะเพิ่มระดับการเพิ่มความเป็นนามธรรมให้กับ API ที่ค่อนข้างง่าย (ปัจจุบัน) ดังนั้นคำถามของฉันคือนักพัฒนาควรเลือก AtomPub เป็นตัวเลือกในการแสดงของพวกเขาเมื่อใด? และถ้าไม่ใช่แนวทางที่แนะนำในปัจจุบันคืออะไร?

1
สถาปัตยกรรมซอฟต์แวร์สำหรับการพิสูจน์ตัวตน / ควบคุมการเข้าถึงของ REST เว็บเซอร์วิส
ฉันกำลังตั้งค่าบริการเว็บสงบใหม่และฉันต้องการให้แบบจำลองการควบคุมการเข้าถึงตามบทบาท ฉันต้องสร้างสถาปัตยกรรมที่อนุญาตให้ผู้ใช้ระบุชื่อผู้ใช้และรหัสผ่านเพื่อเข้าถึงบริการและ จำกัด วิธีการใช้บริการ (บริการใดบ้างที่พวกเขาสามารถใช้อ่าน vs อ่าน / เขียน ฯลฯ ) ตามบทบาท มอบหมายให้กับผู้ใช้นั้น ฉันได้ดูคำถามอื่น ๆ และพบสิ่งที่ฉันต้องการ ตัวอย่างเช่นมีการอภิปรายที่ดีหลายประการเกี่ยวกับวิธีการจัดการข้อมูลประจำตัวที่ผ่านการบริการที่ REST พักผ่อนสบายตลอดการตรวจสอบ , การปฏิบัติที่ดีที่สุด นอกจากนี้ยังมีตัวชี้ที่ยอดเยี่ยมเกี่ยวกับสิ่งที่โปรแกรมเมอร์ควรรู้เมื่อสร้างเว็บไซต์ ( สิ่งที่นักพัฒนาทุกคนควรรู้ก่อนสร้างเว็บไซต์สาธารณะ ) แต่ฉันไม่สามารถค้นหาบทความบทความหนังสือเกี่ยวกับแนวปฏิบัติและรูปแบบที่ดีสำหรับสถาปัตยกรรมซอฟต์แวร์ที่ใช้โซลูชันเหล่านี้ โดยเฉพาะ: ควรจัดเก็บรายละเอียดผู้ใช้และสิทธิ์การเข้าถึงอย่างไร (ตัวแบบข้อมูล, สถานที่, รูปแบบ) รูปแบบการออกแบบที่ดีสำหรับการแสดงและติดตามสิ่งเหล่านี้ในเซิร์ฟเวอร์มีอะไรบ้าง (เซสชันในหน่วยความจำการค้นหาฐานข้อมูลในแต่ละครั้ง ฯลฯ ) อะไรคือรูปแบบที่ดีสำหรับการจับคู่สิทธิเหล่านี้กับบริการในวิธีที่ปลอดภัยในรหัสฐาน ตัวเลือกสถาปัตยกรรมใดบ้างที่สามารถช่วยให้ระบบปลอดภัยและเชื่อถือได้มากขึ้น ผู้เรียนมีบทเรียนอะไรบ้างจากสนามเพลาะ? ฉันกำลังมองหารูปแบบการออกแบบและคำแนะนำสำหรับสถาปัตยกรรมซอฟต์แวร์นอกเทคโนโลยีเฉพาะใด ๆ (หากเทคโนโลยีมีความสำคัญฉันกำลังวางแผนที่จะใช้สิ่งนี้โดยใช้ python, twisted, และฐานข้อมูล postgresql)

3
วิธีการออกแบบ REST API เพื่อจัดการกับการดำเนินการที่ไม่ใช่ CRUD?
ฉันพยายามแปลงชุดบริการที่ใช้ SOAP เป็น RESTful API Subscriptionผมเริ่มด้วยการระบุทรัพยากรโดยการวิเคราะห์ชื่อการดำเนินงานและผมได้ทรัพยากร เมื่อฉันต้องการอัปเดตสถานะการสมัครสมาชิกฉันไม่สามารถส่งPOSTคำขอไปยังเซิร์ฟเวอร์ได้เพราะฉันไม่สามารถเข้าถึงทรัพยากรได้โดยตรง แต่ฉันต้องเรียกการดำเนินงานสไตล์ RPC บางอย่างเพื่ออัปเดตคุณสมบัติของพวกเขา นอกจากนี้เฉพาะในกรณีที่ฉันเปลี่ยนสถานะของการสมัครเป็น "ใช้งานอยู่" ต้องทำการโทรเพิ่มเติมไปยังบริการภายนอก ในกรณีเหล่านี้แนวทางปฏิบัติที่ดีที่สุดในการจัดการการปฏิบัติงานพื้นฐานคืออะไร วิธีแก้ปัญหาที่ฉันพบคือการใช้พารามิเตอร์ข้อความค้นหาดังนั้นหากฉันต้องการเรียกใช้บริการการเปิดใช้งานฉันสามารถใช้สิ่งต่อไปนี้ POST /subscriptions/{subscriptionid}/?activate=true เมื่อพิจารณาว่าฉันไม่สามารถอัปเดตฟิลด์วัตถุการสมัครของฉันโดยตรงมีวิธีปฏิบัติที่ดีที่สุดในการจัดการการแปลงประเภทนี้หรือไม่ อัปเดต 1: ฉันสามารถใส่ค่า POST ลงในเนื้อหาได้เช่น "state": "active" และตรวจสอบภายในบริการของฉันการดำเนินการที่เหมาะสมที่จะถูกเรียก

7
การตรวจสอบสิทธิ์ผ่าน HTTPS จะทำให้ใบสมัครของฉันช้าลงหรือไม่
ฉันกำลังสร้างเว็บแอปพลิเคชันและบริการเว็บสงบ ฉันได้อ่านบทความต่าง ๆ เกี่ยวกับวิธีที่ดีที่สุดในการรับรองความถูกต้องของคำขอไปยังบริการเว็บ ตัวเลือกที่ดีที่สุดสำหรับฉันดูเหมือนจะใช้การตรวจสอบสิทธิ์พื้นฐาน HTTP ค่อนข้างทุกบทความอ่าน ive กล่าวว่าการตรวจสอบควรเข้ารหัสผ่าน SSL หรือเทียบเท่า ฉันไม่แน่ใจว่าสิ่งนี้เกี่ยวข้องกับอะไรทั้งหมด นี่หมายความว่าบริการเว็บทั้งหมดของฉันจะต้องอยู่บนเซิร์ฟเวอร์ที่ปลอดภัยหรือไม่ สิ่งนี้จะช้าลงหรือไม่

4
หากสถาปัตยกรรมไมโครบริการต้องการฐานข้อมูลที่แยกจากกันต่อไมโครเน็ตเซอร์แสดงว่ามันแพงเกินไปและไม่สามารถจัดการได้ ทำไมเราถึงต้องใช้มัน?
ฉันอ่านเกี่ยวกับ microservices และดูเหมือนว่าฉันจะสร้างฐานข้อมูลแยกต่างหากต่อบริการเพียงเพื่อให้เกิดการแยก ฉันสามารถทำสิ่งเดียวกันได้โดยใช้บริการทางเว็บและฐานข้อมูลเดียว ทำไมเราถึงต้องใช้มัน? สิ่งที่ฐานข้อมูลแยกต่างหากอยู่นอกเหนือการสนทนา หรือฉันผิดธรรมดา คุณช่วยแนะนำฉันเกี่ยวกับเรื่องนี้?

3
จะวางตรรกะทางธุรกิจไว้ที่ไหนถ้าใช้ Firebase
ฉันกำลังจะเริ่มพัฒนาเว็บแอปพลิเคชันหน้าเดียวที่ง่ายขึ้นมากสำหรับระบบเอกสารผู้ใช้หลายคน ปลายด้านหน้าอาจจะใช้ Angular2 โครงการมีกำหนดเวลาสั้น ๆ ดังนั้นฉันจึงมองหา "ทางลัด" เช่นการใช้บริการสำเร็จรูปต่างๆแทนที่จะใช้ทุกอย่างตั้งแต่เริ่มต้น ฉันต้องการแบ็กเอนด์บางอย่างเพื่อจัดเก็บข้อมูลแอปพลิเคชัน ฉันได้ดูไปรอบ ๆ และพบ Firebase ซึ่งดูเหมือนว่าจะลบงานบางส่วนของการสร้างแบ็กเอนด์แยกต่างหากและ API เพื่อสื่อสารกับส่วนหน้า แต่นั่นก็หมายความว่าฉันจะต้องวางตรรกะทางธุรกิจไว้ในส่วนหน้าในแอปพลิเคชันเว็บ Angular2 ใช่มั้ย ดังนั้นหากในอนาคตสักวันฉันอยากจะสร้างแอพมือถือส่วนหน้าฉันจะต้องทำซ้ำรหัสตรรกะทางธุรกิจหรือไม่ ฉันเดาว่าทางเลือกอื่นคือสร้างแบ็กเอนด์ที่มีตรรกะทางธุรกิจและใช้ Firebase สำหรับการจัดเก็บข้อมูล แต่มันดูแปลกไปหน่อย (ฉันไม่สามารถใช้ ORM หรืออะไรบางอย่างในแบ็กเอนด์โดยตรงเพื่อให้ได้ผลลัพธ์เดียวกันโดยไม่ต้อง ทำงานได้มากขึ้นไหม?) โดยทั่วไปแล้วคนเราจะจัดโครงสร้างแอพประเภทนี้อย่างไรหากพวกเขาต้องการใช้ประโยชน์จาก Firebase เป็นตัวอย่าง?

3
Entity Framework Entity - ข้อมูลบางอย่างจากบริการบนเว็บ - สถาปัตยกรรมที่ดีที่สุด?
ขณะนี้เรากำลังใช้ Entity Framework เป็น ORM ในเว็บแอปพลิเคชั่นไม่กี่แห่งและจนถึงตอนนี้มันเหมาะกับเราและข้อมูลทั้งหมดของเราจะถูกเก็บไว้ในฐานข้อมูลเดียว เราใช้รูปแบบพื้นที่เก็บข้อมูลและมีบริการ (โดเมนเลเยอร์) ซึ่งใช้สิ่งเหล่านี้และส่งคืนเอนทิตี EF โดยตรงไปยังตัวควบคุม ASP.NET MVC อย่างไรก็ตามข้อกำหนดได้เกิดขึ้นเพื่อใช้ API ของบุคคลที่สาม (ผ่านบริการบนเว็บ) ซึ่งจะให้ข้อมูลเพิ่มเติมที่เกี่ยวข้องกับผู้ใช้ในฐานข้อมูลของเรา ในฐานข้อมูลผู้ใช้ในพื้นที่ของเราเราจะจัดเก็บ ID ภายนอกซึ่งเราสามารถมอบให้กับ API เพื่อรับข้อมูลเพิ่มเติม มีข้อมูลค่อนข้างน้อย แต่เพื่อความเรียบง่ายหนึ่งในนั้นเกี่ยวข้องกับ บริษัท ของผู้ใช้ (ชื่อผู้จัดการห้องชื่อตำแหน่งงาน ฯลฯ ) ข้อมูลนี้จะถูกใช้ในสถานที่ต่าง ๆ ทั่วทั้งเว็บแอปของเราซึ่งต่างจากการใช้งานในที่เดียว ดังนั้นคำถามของฉันคือที่ที่ดีที่สุดในการเติมและเข้าถึงข้อมูลนี้ที่ไหน เนื่องจากมีการใช้งานในสถานที่ต่าง ๆ จึงไม่เหมาะสมที่จะดึงข้อมูลมาใช้เป็นหลักในทุกที่ที่เราใช้ในเว็บแอปพลิเคชัน - ดังนั้นจึงเหมาะสมที่จะส่งคืนข้อมูลเพิ่มเติมนี้จากเลเยอร์โดเมน ความคิดเริ่มต้นของฉันคือการสร้างคลาสโมเดล wrapper ซึ่งจะมีเอนทิตี EF (EFUser) และคลาส 'ApiUser' ใหม่ที่มีข้อมูลใหม่ - และเมื่อเราได้รับผู้ใช้เราจะได้ EFUser …

1
แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการการสื่อสารระหว่างแบบอะซิงโครนัส?
เพิ่งเสร็จสิ้นโครงการสำหรับจัดการการประมวลผลบัตรเครดิต หนึ่งในปัญหาที่ฉันเผชิญคือการจัดการความล่าช้า / ความล้มเหลวที่เป็นไปได้ของข้อความแจ้งเตือน ตัวอย่างที่ซับซ้อนที่สุดคือ: ระบบภายนอกส่งการร้องขอการชำระเงิน ระบบของฉันเปลี่ยนคำขอนั้นเป็นคำขอไปยังเกตเวย์การชำระเงิน ส่งผู้ใช้ไปยังเกตเวย์ รอให้ผู้ใช้ชำระเงิน ผู้ใช้กลับไปที่ระบบของฉัน แต่ถูกระงับจนกระทั่งระบบได้รับการแจ้งเตือนของความสำเร็จ / ความล้มเหลว การส่งผู้ใช้กลับไปยังระบบภายนอกขึ้นอยู่กับความล้มเหลว ยิ่งยากขึ้นคือความจริงที่ว่าเมื่อล้มเหลวในการส่งการแจ้งเตือนเกตเวย์จะพยายามส่งการแจ้งเตือนทุก ๆ 15 นาทีเป็นเวลาหลายชั่วโมง ฉันแก้ไขมันโดยใช้บันทึกฐานข้อมูลของธุรกรรมที่ค้างอยู่จากนั้นตรวจสอบความสำเร็จและความล้มเหลวจากการส่งคืนรวมทั้งฟังการหน่วงเวลาสำหรับการแจ้งเตือนและการจัดการธุรกรรม ... ยากพอสมควร! แต่สิ่งนี้จะต้องได้รับการแก้ไขเป็นพันล้านครั้งก่อนดังนั้นวิธีปฏิบัติที่ดีที่สุดคืออะไร? ฉันสามารถเห็นอนาคตของฉันกำลังจะเขียนการจัดการระหว่างระบบทั้งหมดเหล่านี้และการจัดการความล่าช้าของเวลาและความล้มเหลวของเครือข่ายที่เป็นไปได้ดังนั้นฉันจึงต้องการปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด คำแนะนำหนังสือ / บทความจะดีมาก ขอบคุณล่วงหน้า!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.