แอปพลิเคชั่นมือถือแมงกะพรุน
บทนำ
โปรเจ็กต์นี้มุ่งเน้นไปที่การสร้าง Jellyfish Backend ขึ้นใหม่ ซึ่งเป็นองค์ประกอบสำคัญของ Messaging Application Jellyfish ที่ออกแบบมาสำหรับแพลตฟอร์ม Android และ iOS แบ็กเอนด์ได้รับการพัฒนาอย่างพิถีพิถันตามหลักการออกแบบที่ขับเคลื่อนด้วยโดเมนและสถาปัตยกรรมที่สะอาดตา การสื่อสารภายในระบบได้รับการจัดการโดยใช้ไลบรารี Meditr โดยเน้นการแยกคำสั่งและแบบสอบถาม (CQS) เพื่อปรับปรุงความชัดเจนของโค้ดและการแยกข้อกังวล
แม้ว่าการใช้งานในปัจจุบันจะดำเนินไปในลักษณะเสาหิน แต่สถาปัตยกรรมก็มีความยืดหยุ่นโดยเนื้อแท้ โดยสามารถปรับให้เข้ากับกระบวนทัศน์ไมโครเซอร์วิสได้อย่างรวดเร็วด้วยการผสมผสานเครื่องมือต่างๆ เช่น เกตเวย์ API (เช่น Ocelot, YARP) การแยกความรับผิดชอบในการสืบค้นคำสั่ง (CQRS) และกระบวนการซิงโครไนซ์ฐานข้อมูลเบื้องหลัง หลังใช้การล็อกในแง่ดีด้วยการกำหนดเวอร์ชันแถวเพื่อให้แน่ใจว่าฐานข้อมูลการอ่านและเขียนสอดคล้องกัน
ด้วยความคาดหมายถึงการปรับปรุงในอนาคต สถาปัตยกรรมมองเห็นการนำการสื่อสารแบบอะซิงโครนัสไปใช้ผ่าน AMQP บน RabbitMQ สิ่งนี้จะช่วยให้ระบบสามารถจัดการเหตุการณ์ผ่านคิวได้อย่างมีประสิทธิภาพ โดยวางรากฐานสำหรับพฤติกรรมการเผยแพร่/สมัครสมาชิกที่มีประสิทธิภาพ
กองเทคโนโลยี
| แบ็กเอนด์ | เว็บ-ส่วนหน้า | แอปพลิเคชั่นมือถือ |
|---|
| C#/NET7 | C#/NET7 | C#/NET7 |
| เอเอสพี เน็ต | เซิร์ฟเวอร์เบลเซอร์ | .NET เมาอิ |
| MySql 8.0.35 | ส่วนประกอบมีดโกน | |
| สัญญาณร | ส่วนประกอบ UI ของ Mudblazor (https://mudblazor.com/) | |
| นักเทียบท่า | | |
| อีเอฟ คอร์ | | |
การทดสอบ
เอกสารประกอบ
- เอกสารที่กว้างขวาง:
- โครงการให้ความสำคัญกับเอกสารที่ครอบคลุมเพื่ออำนวยความสะดวกในการใช้งานและความเข้าใจสำหรับผู้มีส่วนได้ส่วนเสียทั้งหมด ปัจจุบันเอกสารประกอบด้วย:
- เอกสารประกอบแผนภาพความสัมพันธ์เอนทิตี (EER):
- เอกสาร EER โดยละเอียดได้รับการจัดเตรียมเพื่อให้ข้อมูลเชิงลึกเกี่ยวกับแบบจำลองข้อมูลและความสัมพันธ์ภายในระบบ เอกสารนี้ทำหน้าที่เป็นทรัพยากรอันมีค่าสำหรับนักพัฒนา ซึ่งช่วยในการทำความเข้าใจที่ชัดเจนเกี่ยวกับโครงสร้างฐานข้อมูลพื้นฐาน
- เอกสารกร่าง:
- โปรเจ็กต์ใช้ประโยชน์จาก Swagger Documentation เพื่อรับรองเอกสาร API ที่มีรายละเอียดและโต้ตอบได้ Swagger มอบอินเทอร์เฟซที่ใช้งานง่ายและเป็นมิตรต่อผู้ใช้สำหรับการสำรวจและทำความเข้าใจจุดสิ้นสุด พารามิเตอร์ และการตอบสนองของ API ที่มีอยู่ เอกสารนี้จำเป็นสำหรับนักพัฒนา ช่วยให้สามารถบูรณาการและโต้ตอบกับ API ที่ให้มาได้อย่างราบรื่น
การปรับใช้
มรดกเหนือไบนารี่หรือกับคอนเทนเนอร์นักเทียบท่า
แรงจูงใจและวัตถุประสงค์ของโครงการ
- การทดสอบ NET MAUI บนแพลตฟอร์มมือถือหลายเครื่อง:
- แรงจูงใจหลักเบื้องหลังการเริ่มต้นโครงการนี้คือการทดสอบ NET MAUI บนแพลตฟอร์มมือถือต่างๆ อย่างเข้มงวด สิ่งนี้เกี่ยวข้องกับการทดสอบและการเพิ่มประสิทธิภาพที่ครอบคลุมเพื่อให้มั่นใจถึงประสิทธิภาพที่ราบรื่นและความเข้ากันได้ข้ามแพลตฟอร์มที่ระบุ โดยให้ข้อมูลเชิงลึกอันมีค่าแก่ชุมชน NET MAUI
- เพิ่มศักยภาพให้ผู้ใช้สามารถโฮสต์โครงสร้างพื้นฐานการส่งข้อความของตนเอง:
- วัตถุประสงค์หลักประการหนึ่งของโครงการนี้คือการเพิ่มศักยภาพให้กับผู้ใช้โดยให้โอกาสพวกเขาในการโฮสต์โครงสร้างพื้นฐานการส่งข้อความอย่างอิสระ โดยมีจุดมุ่งหมายเพื่อทำให้การเข้าถึงบริการส่งข้อความเป็นประชาธิปไตย ทำให้ผู้ใช้สามารถควบคุมสภาพแวดล้อมในการสื่อสารของตนได้
- การใช้ทรัพยากรอย่างเหมาะสมที่สุด:
- ผลข้างเคียงที่สำคัญของโครงการริเริ่มนี้คือการมุ่งเน้นไปที่การเปิดใช้งานโครงสร้างพื้นฐานการส่งข้อความที่โฮสต์ด้วยทรัพยากรฮาร์ดแวร์ขั้นต่ำ โดยเฉพาะอย่างยิ่ง โปรเจ็กต์นี้ตั้งเป้าไปที่การใช้งานอย่างมีประสิทธิภาพ โดยอนุญาตให้ผู้ใช้รันโครงสร้างพื้นฐานบนฮาร์ดแวร์ที่สามารถเข้าถึงได้ เช่น Raspberry Pi การเน้นที่ประสิทธิภาพของทรัพยากรนี้สอดคล้องกับความมุ่งมั่นของโครงการต่อการเข้าถึงและความยั่งยืน
คุณสมบัติด้านความปลอดภัยและอนาคต
- การเข้ารหัสแบบครบวงจรและการปกป้องความเป็นส่วนตัว:
- การรับรองความปลอดภัยของข้อมูลผู้ใช้เป็นสิ่งสำคัญยิ่ง ขั้นตอนที่จะเกิดขึ้นก่อนการเปิดตัวเวอร์ชันที่ใช้งานจริงครั้งแรกจะรวมถึงการใช้งานการเข้ารหัสจากต้นทางถึงปลายทางอย่างพิถีพิถัน ซึ่งจะให้การปกป้องข้อมูลผู้ใช้ที่ละเอียดอ่อนในระดับที่แข็งแกร่ง นอกจากนี้ การใช้รูปแบบเพย์โหลดที่ลืมได้จะช่วยเพิ่มความเป็นส่วนตัวด้วยการลดการเก็บรักษาข้อมูลให้เหลือน้อยที่สุด ซึ่งสอดคล้องกับแนวปฏิบัติที่ดีที่สุดด้านความเป็นส่วนตัว
- บอทสนับสนุน AI:
- เพื่อรองรับอนาคตของการโต้ตอบกับผู้ใช้ มีแผนจะรวมบอทสนับสนุนปัญญาประดิษฐ์ (AI) เข้ากับระบบ มีการคำนึงถึงการใช้ประโยชน์จากเทคโนโลยี AI ขั้นสูง เช่น Google Llama หรือ ChatGPT บอทที่ขับเคลื่อนด้วย AI เหล่านี้จะปรับปรุงการมีส่วนร่วมของผู้ใช้ ปรับปรุงกระบวนการสนับสนุน และนำไปสู่ประสบการณ์ผู้ใช้ที่ชาญฉลาดและตอบสนอง
- โครงสร้างพื้นฐานบล็อคเชน:
- จากการสำรวจเทคโนโลยีที่ล้ำสมัย มีวิสัยทัศน์ที่มองไปข้างหน้าเพื่อตรวจสอบความเป็นไปได้ในการโฮสต์โครงสร้างพื้นฐานของระบบบนบล็อกเชน ประโยชน์ของเทคโนโลยีบล็อกเชน รวมถึงความปลอดภัยที่เพิ่มขึ้น การกระจายอำนาจ และความโปร่งใส จะได้รับการประเมิน วิธีการคิดล่วงหน้านี้มีจุดมุ่งหมายเพื่อพิสูจน์ระบบในอนาคตและสอดคล้องกับแนวโน้มที่เกิดขึ้นใหม่ในสถาปัตยกรรมที่ปลอดภัยและกระจายอำนาจ
สิ่งที่ต้องทำ
แบ็กเอนด์:
ส่วนหน้าของเว็บ:
คุณสมบัติ (จาก Web-Frontend):
แอพมือถือ:
- ทำเครื่องหมายข้อความว่าไม่สามารถจับภาพหน้าจอได้: ข้อความเหล่านี้จะเบลอโดยการสร้างภาพหน้าจอ เหมือนกันตามรูปโปรไฟล์
- ปฏิทินกลุ่ม: การวางแผนกิจกรรมส่วนตัวร่วมกันในปฏิทิน Groupchat
- การดูแลเกี่ยวกับการแบ่งปัน: ทำเครื่องหมายข้อความว่าไม่สามารถแชร์ได้ เพื่อไม่ต้องสนใจการแบ่งปันที่ไม่ได้รับอนุญาต :)
- ความสามารถในการโฮสต์โครงสร้างพื้นฐานการส่งข้อความได้ด้วยตัวเอง ไม่มีการพึ่งพาผู้อื่น!
- การต่อต้านความรุนแรง: ผู้คนในการสนทนาส่วนตัวเช่น Telegramm ในปัจจุบันถูกละเมิดเนื่องจากความรุนแรงและเนื้อหาสำหรับผู้ใหญ่ ดังนั้นแมงกะพรุนจึงนำความสามารถในการหลีกเลี่ยงการแบ่งปันเนื้อหาดังกล่าว อัลกอริธึมการเรียนรู้ของเครื่องจะประเมินสื่อที่จะแชร์ผ่าน Messenger เมื่อตรวจพบเนื้อหาที่มีความรุนแรง ข้อความที่ส่งจะถูกหลีกเลี่ยง ** ต้องใช้ Azure AI Vision หรือ ML-Algorithm ที่คล้ายกัน **
- การแชร์ตำแหน่งพร้อมแทร็กสด: ไม่จำเป็นหากอยู่ในกลุ่มหรือแชทส่วนตัว การเคลื่อนไหวของคุณจะถูกสตรีมสดไปยังสมาชิกแชทเมื่อโหมดผู้ชมเปิดอยู่ (ใช้ได้เฉพาะในแผนที่แทร็กสดเท่านั้น)
- การลืมเลือน: สิทธิในการลืมเป็นรากฐานสำคัญของ GDPR ในปัจจุบัน ด้วยการลบบัญชี ข้อมูลทั้งหมด (รวมถึงข้อความแชทที่แชร์กับเพื่อน ๆ ) จะถูกลบออก แน่นอนว่าสื่อก็เช่นกัน ฉันตระหนักดีว่าการลบสื่อที่ส่งไปยังสมาชิกแชทนั้นไม่ใช่แนวทางปฏิบัติในปัจจุบัน แต่มนุษย์ทุกคนมีสิทธิ์ที่ข้อมูลที่เขาสร้างขึ้นจะถูกลืมได้
- โพล/โหวต: ตัวอย่างของ WhatsApp: การโหวตจะมีอยู่ในแมงกะพรุนด้วย
ทั่วไป:
คอยติดตาม.
แผงผู้ดูแลระบบอัลฟ่า 0.1

แดชบอร์ด

การจัดการผู้ใช้ (Users.razor) พร้อมการแบ่งหน้าและการค้นหา


การจัดการผู้ใช้ (Users.razor) - เพิ่ม/แก้ไข

การจัดการผู้ใช้ (Users.razor) - ลบ

วิดีโอ: ดูตัวอย่างการเปลี่ยนตัวกรองจากคำขอ Http เป็น Linq Expression และสุดท้ายเป็น MySql Query ผ่าน ORM (แบบไดนามิก) / THUMBNAIL PNG ด้านล่าง (HREF)

แผนภาพความสัมพันธ์เอนทิตีที่ได้รับการปรับปรุง


การวิเคราะห์โค้ดเมตริกหลังจากเพิ่ม MobileApp ลงในโซลูชัน

เวิร์กโฟลว์บูรณาการอย่างต่อเนื่องกับ Github Action

การทดสอบจาก Core (กรณีการใช้งาน & โดเมน)
